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


猜你喜欢
- 如何使用AE制作旋转万花筒特效?AE是一款图形视频处理软件,用户可以使用其处理电影,录像等。想要使用AE制作旋转万花筒特效,具体该怎么制作?
- PS图层混合的作用有哪些?我们所熟悉的滤色和正片叠底你是否还记得他们的作用,如果将一黑一白的两个图片进行混合,并去除黑色,你是用滤色还是正片
- 在今年九月份的秋季发布会上,微软发布了公司历史上第一款笔记本电脑Surface Book,这款产品拆分之后可以同时作为平板电脑使用,产品发布
- 手机QQ输入法使用气泡提示的方法如下:当勾选了设置菜单中的“气泡提示”后,即可使用气泡提示的功能(安装后默认是开启的)。提示的气泡分为两种,
- 自动调节屏幕亮度,这个看是简单的问题,但是针对电脑新手来说,也是一大考验,不知道在电脑的那个位置设置电脑屏幕自动调节。下面,小编就将这一装置
- 为了使文档的页面达到更加美观的效果,我们还可以设置文档的页面背景效果,在Word为我们提供的页面背景设置功能中,我们可以为文档设置水印效果,
- win8怎么查看网络连接状?很多用户都说在Win8 64位系统中查看网络连接状态是比较麻烦的,这篇文章就为大家分享了win8查看网络连接状态
- win10系统连不上网很慢如何解决?win10系统电脑突然连不上网是有些"不速之客"造访了,估计是内部错误引起,也有的是
- 在windows8中如何更改系统声音方案,相信有很多的朋友都不会吧,下面与大家分享下具体的操作步骤,感兴趣的朋友可以参考下哈,希望对大家有所
- 很多小伙伴都不知道⾃⼰的电脑进⼊bios的快捷键是什么,bios是电脑的基本输入输出系统,有一些电脑系统设置等需要在bios系统内完成。比如
- win10专业版亮度调节在哪里?win10系统替代了win7,同时对很多快捷设置以及功能进行了移动跟合并,比如用户经常使用到的屏幕亮度调整等
- EXCEL2010中如何对表格中的数据进行排序一直困扰着众多新手,如何快速做好EXCEL表格数据排序。今天,小编就教大家在Excel中表格数
- PPT中占位符是一种带有虚线边缘的框,如图1所示。绝大多数幻灯片版式中都有这种虚线框,在这些框内可以放置标题、正文、图表、表格和图片等对象。
- 我们重装Win10系统的目的就是为了解决电脑遇到的问题,然而重装系统后还是会出现许许多多的问题,比如说重装Win10之后界面一直转圈的情况,
- 通常我们在玩游戏的时候,都会把物理光驱禁用掉,这样才可以躲避一些游戏的相关侦查进程。但是win7系统物理光驱怎么禁用?,今天小编就带来了Wi
- 我们在编辑Word文档的时候,为了文章看起来有序,经常会给多行文字的开头进行编号。但是有时候不知道什么原因,编号与文字间的距离变得很大。很大
- 在我们日常使用的win10系统计算机中,应该会有很多用户遇到过计算机启动快、变灰的情况。我们该怎么办?下面的小编将为您带来win10计算机快
- win10系统是大家公认的比较好的系统版本,但是也有它自身的一些缺点,比如win10系统电脑总是会自动更新,这种情况想必大家都是遇到过的,当
- 许多用户在使用电脑的时候,都会手动的安装一些更新补丁,而不少用户最近在安装一些独立安装补丁的时候,电脑提示Windows更新独立安装程序,此
- 内存是现在影响电脑性能因素的其中原因之一,如绝地求生、英雄联盟等游戏都需要很好的内存,但是很多用户总是以为玩这些游戏仅仅只需要升级自己的显卡