excel如何识别空单元格和空白单元格?
发布时间:2023-04-08 08:26:29
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
猜你喜欢
- 电脑中声音能够正常播放一定离不开声卡驱动的帮助,所以当您的电脑没有声音的时候,很有可能就是声卡驱动出现问题了。但是有的用户遇到了电脑播放出现
- excel2010表格怎么制作圆形图片标注?excel2010表格中想要制作圆形图片标注,该怎么制作呢?下面我们就来看看详细的教程,需要的朋
- Excel怎么批量处理修改文件名?其实可以利用excel中的一个重命名命令ren来完成批量处理文件名。下面绿茶小编为大家详细演示下操作步骤吧
- 此情景会话说明了 Excel 中 COUNTA 和 COUNTIF 函数的基本概念,它们返回了列表中有多少个非空白单元格的计数。我正在计算一
- 在Word2010文档中,用户可以将键盘上的Insert键作为粘贴命令的快捷键,不过需要同时取消“使用Insert控制改写模式”功能。在Wo
- 一、空行替换在日常工作中,我们经常从网上下载一些文字材料,往往因空行多使得页数居高不下。一般方法是:在“编辑”菜单中打开“查找和替换”对话框
- 如果有复姓公式为=IF(OR(LEFT(A2,2)={"欧阳","诸葛","公孙"
- 解决方法:1、选择WPS文档,右键选择【打开方式】>【选择默认程序】;2、在窗口中,选择WORD,勾选【始终使用选择的程序打开这种文件
- 有很多用户都喜欢使用Word来编辑一些文档,而我们在编辑Word文档的时候难免会添加一些图片来增强可看性,那么我们要如何去制作出九宫格图片呢
- 如何在WPS中画图?我们经常使用WPS文字的时候可能需要在文件中插入或者绘制各种各样的图形,来配合文档对某一事件进行辅助说明,以
- 规律:加上了绝对引用符“$”的列标和行号为绝对地址,在公式向旁边复制时不会发生变化,没有加上绝对地址符号的列标和行号为相对地址,在公式向旁边
- excel中怎么把工资表做成工资条?平时会做一些工资表,但是发工资的时候却需要给每个人做工资条,从新做就太麻烦了,我们可以直接将工资表转成工
- 当我们使用电脑时,有些小伙伴可能想把自己的系统升级到win10,或者重新安装win10系统。不过很多小伙伴对如何安装U盘的原始win10系统
- 我们在办公时进行Word文档编辑时,通常公司对我们的文档格式都是会有一定要求的,当我们文档中的数字不是按顺序分布而是错落分布时,我们该如何快
- 国内Gmail马上被封了,趁现在还能用的时候给大家分享一个不久前学来的小技巧吧。希望对有需要的网友有所帮助。1、首先,打开你的Excel文件
- Win10电脑打不开win通知解决方法教学分享。我们的电脑收到信息通知的时候,会出现在我们的win通知中心。有用户收到了通知消息之后,却发现
- word是我们日常生活中经常使用的软件,给我们的生活和学习带来了很大的帮助,那么word的背景色怎么改呢,那么下面就由小编给大家分享下wor
- Excel 2016怎么自动保存?这篇文章主要介绍了Excel 2016自动保存的方法,需要的朋友可以参考下Excel 2016设置自动保存
- 既然都已经大手笔的购买了iPhone 12 手机,那就不要贪小便宜去省MagSafe的钱了,对吧?从网上购买的价格超便宜的山寨MagSafe
- Excel单元格如何给图片批注的添加,你会吗?在制作通讯录的时候,添加一个图片批注可以更好的区分同姓名的人,下面就是教程 Exce