首页 > Excel专区 > Excel教程 >

excel如何识别空单元格和空白单元格?

Excel教程 2021-12-31 21:42:51

Q在使用Excel时经常听到单元格为空或空白,这样的说法有区别吗?

A:在Excel中,单元格为空(empty)或空白(blank)似乎可以互用,但它们有不同的含义:

空单元格指没有包含任何内容的单元格,在其中没有常量、没有公式、没有前缀字符。

空白单元格指该单元格可以是空单元格、可以包括前缀字符或者空字符串(公式结果为空或者常量值)

在工作表中,检查单元格为空的最好方法是使用ISBLANK工作表函数,如下所示。

在中,第3行各列是第2行对应列中输入的结果,在单元格B3中直接输入字符串“ Excel”,在C3中输入公式=””,在D3中输入前缀字符撇号,E3中什么也没有输入。第4行使用ISBLANK函数判断第3行对应列中的单元格是否为空单元格。

在VBA中,当单元格为空时,Range.Value属性和Range.Value2属性返回Variant/Empty,因此VBA代码检查单元格是否为空最好的方法是使用IsEmpty函数。

对于所示的工作表,检查单元格是否为空的VBA代码:

SubCheckIsEmpty()

Debug.PrintIsEmpty(Sheet1.Range(“B3”).Value2) ‘结果为False

Debug.PrintIsEmpty(Sheet1.Range(“C3”).Value2) ‘结果为False

Debug.Print IsEmpty(Sheet1.Range(“D3”).Value2) ‘结果为False

Debug.PrintIsEmpty(Sheet1.Range(“E3”).Value2) ‘结果为True

End Sub

COUNTBLANK工作表函数与ISBLANK工作表函数对应的行为不一致。COUNTBLANK函数统计空单元格、具有空字符串的单元格和包含前缀字符的单元格,可以用于检查单元格是否为空白单元格(显示的是空),如所示。

在中,第4行使用公式=COUNTBLANK(单元格)=1判断指定单元格是否为空白单元格;在单元格B6中使用公式=COUNTBLANK(B3:E3)统计单元格区域B3:E3中空白单元格数。

在VBA中,可以使用Range.Value(或Range.Value2)属性与vbNullString常量相比较的结果来判断单元格是否为空白单元格:

SubCheckIsBlank()

Debug.PrintIsBlank(Sheet1.Range(“B3”)) ‘结果为False

Debug.PrintIsBlank(Sheet1.Range(“C3”)) ‘结果为True

Debug.PrintIsBlank(Sheet1.Range(“D3”)) ‘结果为True

Debug.PrintIsBlank(Sheet1.Range(“E3”)) ‘结果为True

End Sub

FunctionIsBlank(ByRef rngCheck As Range) As Boolean

IsBlank = (CStr(rngCheck.Cells(1).Value2) =vbNullString)

End Function

还有一个更有效的方法是调用工作表函数COUNTBLANK函数:

Sub IfIsBlank()

Debug.PrintIfBlank(Sheet1.Range(“B3”)) ‘结果为False

Debug.PrintIfBlank(Sheet1.Range(“C3”)) ‘结果为True

Debug.PrintIfBlank(Sheet1.Range(“D3”)) ‘结果为True

Debug.PrintIfBlank(Sheet1.Range(“E3”)) ‘结果为True

End Sub

FunctionIfBlank(ByRef rngCheck As Range) As Boolean

IfBlank =(Application.WorksheetFunction.CountBlank(rngCheck.Cells(1)) = 1)

End Function

最后,再谈谈空字符串。空字符串是一个长度为的字符串,可以包含常量或者公式结果(为空)。例如,公式=””返回一个空字符串。如果你复制这个公式并粘贴为值时单元格中包含的空字符串为常量,有时从外部数据源导入数据时也会得到空字符串。

下面的HasNullString函数在单元格中包含空字符串时返回True。如果想要忽略公式结果(例如,仅检查常量),那么给参数blnConstantsOnly传递True。如果单元格中有前缀字符,那么该函数返回False。

Public FunctionHasNullString( _

ByRef rngToCheck As Range, _

Optional ByVal blnConstantsOnly AsBoolean = False) _

As Boolean

Dim rngFirstCell As Range

Dim strToCheck As String

Dim varToCheck As Variant

Set rngFirstCell = rngToCheck.Cells(1)

varToCheck = rngFirstCell.Value2

If Not IsEmpty(varToCheck) Then

If blnConstantsOnly Then

strToCheck = rngFirstCell.Formula

Else

strToCheck = CStr(varToCheck)

End If

If strToCheck = vbNullString Then

HasNullString =(LenB(rngFirstCell.PrefixCharacter) = )

End If

End If

End Function


标签: Excel常用函数excel常见问题excel技巧excel教程

office教程网 Copyright © 2016-2020 https://www.office9.cn. Some Rights Reserved.