亞寵展、全球?qū)櫸锂a(chǎn)業(yè)風(fēng)向標(biāo)——亞洲寵物展覽會(huì)深度解析
3091
2025-03-31
excel如何識(shí)別空單元格和空白單元格?
Q:在使用Excel時(shí)經(jīng)常聽到單元格為空或空白,這樣的說法有區(qū)別嗎?
A:在Excel中,單元格為空(empty)或空白(blank)似乎可以互用,但它們有不同的含義:
空單元格指沒有包含任何內(nèi)容的單元格,在其中沒有常量、沒有公式、沒有前綴字符。
空白單元格指該單元格可以是空單元格、可以包括前綴字符或者空字符串(公式結(jié)果為空或者常量值)
在工作表中,檢查單元格為空的最好方法是使用ISBLANK工作表函數(shù),如下所示。
在中,第3行各列是第2行對(duì)應(yīng)列中輸入的結(jié)果,在單元格B3中直接輸入字符串“ Excel”,在C3中輸入公式=””,在D3中輸入前綴字符撇號(hào),E3中什么也沒有輸入。第4行使用ISBLANK函數(shù)判斷第3行對(duì)應(yīng)列中的單元格是否為空單元格。
在VBA中,當(dāng)單元格為空時(shí),Range.Value屬性和Range.Value2屬性返回Variant/Empty,因此VBA代碼檢查單元格是否為空最好的方法是使用IsEmpty函數(shù)。
對(duì)于所示的工作表,檢查單元格是否為空的VBA代碼:
SubCheckIsEmpty()
Debug.PrintIsEmpty(Sheet1.Range(“B3”).Value2) ‘結(jié)果為False
Debug.PrintIsEmpty(Sheet1.Range(“C3”).Value2) ‘結(jié)果為False
Debug.Print IsEmpty(Sheet1.Range(“D3”).Value2) ‘結(jié)果為False
Debug.PrintIsEmpty(Sheet1.Range(“E3”).Value2) ‘結(jié)果為True
End Sub
COUNTBLANK工作表函數(shù)與ISBLANK工作表函數(shù)對(duì)應(yīng)的行為不一致。COUNTBLANK函數(shù)統(tǒng)計(jì)空單元格、具有空字符串的單元格和包含前綴字符的單元格,可以用于檢查單元格是否為空白單元格(顯示的是空),如所示。
在中,第4行使用公式=COUNTBLANK(單元格)=1判斷指定單元格是否為空白單元格;在單元格B6中使用公式=COUNTBLANK(B3:E3)統(tǒng)計(jì)單元格區(qū)域B3:E3中空白單元格數(shù)。
在VBA中,可以使用Range.Value(或Range.Value2)屬性與vbNullString常量相比較的結(jié)果來判斷單元格是否為空白單元格:
SubCheckIsBlank()
Debug.PrintIsBlank(Sheet1.Range(“B3”)) ‘結(jié)果為False
Debug.PrintIsBlank(Sheet1.Range(“C3”)) ‘結(jié)果為True
Debug.PrintIsBlank(Sheet1.Range(“D3”)) ‘結(jié)果為True
Debug.PrintIsBlank(Sheet1.Range(“E3”)) ‘結(jié)果為True
End Sub
FunctionIsBlank(ByRef rngCheck As Range) As Boolean
IsBlank = (CStr(rngCheck.Cells(1).Value2) =vbNullString)
End Function
還有一個(gè)更有效的方法是調(diào)用工作表函數(shù)COUNTBLANK函數(shù):
Sub IfIsBlank()
Debug.PrintIfBlank(Sheet1.Range(“B3”)) ‘結(jié)果為False
Debug.PrintIfBlank(Sheet1.Range(“C3”)) ‘結(jié)果為True
Debug.PrintIfBlank(Sheet1.Range(“D3”)) ‘結(jié)果為True
Debug.PrintIfBlank(Sheet1.Range(“E3”)) ‘結(jié)果為True
End Sub
FunctionIfBlank(ByRef rngCheck As Range) As Boolean
IfBlank =(Application.WorksheetFunction.CountBlank(rngCheck.Cells(1)) = 1)
End Function
最后,再談?wù)効兆址?兆址且粋€(gè)長度為的字符串,可以包含常量或者公式結(jié)果(為空)。例如,公式=””返回一個(gè)空字符串。如果你復(fù)制這個(gè)公式并粘貼為值時(shí)單元格中包含的空字符串為常量,有時(shí)從外部數(shù)據(jù)源導(dǎo)入數(shù)據(jù)時(shí)也會(huì)得到空字符串。
下面的HasNullString函數(shù)在單元格中包含空字符串時(shí)返回True。如果想要忽略公式結(jié)果(例如,僅檢查常量),那么給參數(shù)blnConstantsOnly傳遞True。如果單元格中有前綴字符,那么該函數(shù)返回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
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。