1.1 EXCEL里,一般有两种空值:blank,“”

1.1.1 空值blank

  • 空值:blank ,一般指完全没有内容 / 没有用过 /没有初始化过/ 被删除单元格内容后的状态
  • 判断函数,isblank()

1.1.2 excel里的特殊假空值 “” (本质是空字符串吧)

  • 假空值:“” , EXCEL里常用的空值,空值判断,
  • 常这么用,但是其实不太精确,一般意义上,我觉得可以认为是 “""只是代表 一个空字符串而已”
  • 判断函数套用if: if(a1=“”,true,false)即可判断

1.1.3 excel里的函数返回值0,部分情况下

  • 0,我觉得不能被当成空值
  • 这个0,可能是用户输入的数字0,但这里说的不是这个
  • 0 和空值没啥关系,权且最多被当成一种函数的特殊返回值吧
  • 为什么说到EXCEL空值的时候,说到0呢?
  • 因为很多EXCEL内置函数的返回值也会返回0,比如 “= 等号” ,当 =引用到一个空单元格时会返回0,
  • 函数直接引用或间接引用空单元格的值,返回的是0
  • EXCEL里引用空单元格,如果经过函数的引用了,返回的就不会是空值了,而是0

比如EXCEL的直接引用 = ,会自动返回0
间接引用 =indirect() 引用的空单元格,会自动返回0

1.2 EXCEL里,那些情况会被识别为 blank?

  • blank() 识别为true的情况,比 识别"" 更严格
  • 其实EXCEL用户平时很少用到 blank 这种空值!一般都是所见即所得,判断 if=""了!
  • EXCEL的真正空值是 blank
  • 只能用=isblank() 来判断

> 只有下面2种情况EXCEL里 isblank() 返回为true

1 单元格确实没内容 ,用isblank()判断为true
2 EXCEL的内置函数一般不能返回空值,但是用函数缺省的办法,可以返回 blank
比如 isblank(if(1=1,)) ,用isblank()判断为true

1.3 EXCEL里,那些情况会被识别为 “” ?

  • 我认为 “” 就是EXCEL 里使用比较频繁的一种空值, 大家叫习惯了
  • 使用EXCEL时,大多数情况下只需要判断 if(A1=“”,true,false) 即够用了
  • 实际就是空 字符串"" ,并不是真的空值,是一种假的空,是有东西的(东西就是空字符串"")
  • 只是EXCEL 默认单元格里的 “” 显示上看不见,即EXCEL用户理所当然的认为是 空的

单元格没有内容,EXCEL用户一般用 if=“” 来判断,
一般来说可以被识别是blank的都可以识别为"",反之则不行

1.4 EXCEL内置函数对空值的处理能力

  • 函数无法返回真正的blank
  • 函数可以写成返回值是""
  • 函数直接引用或间接引用空单元格的值,返回的是0

1.5 EXCEL里测试 blank , “” 和 0

2 VBA的 “空值”

2.1 VBA里几种不同的空值

VBA里所谓的 “空值” 是指 变量为空,而这和变量类型密切相关

数据类型
1 数值型的变量 默认 0
2 字符串 string 默认"" 就是空。
3 Variant类型变量 默认用 null 但其他类型变量不能这样用。
4 object 类 默认 nothing,对象类型记得用set XXX= 这样赋值,而不是let 或者省略!比如 image1.picture = nothing

2.2 判断各种空值的VBA函数

VBA函数

IsEmpty(expression) 测试变量是否已经被初始化
如果一个变量没有被初始化,dim a ,那么判断一般是isempty(a)=true
但是如果设置了a=null,而判断isempty(a)=false

IsNull(expression)
Null 值指出变量不包含有效数据。
指明 expression 是否包含任何有效数据(Null)。
测试可发现 变量=“” 是len=0的空字符串,也不是null

if len() =0 也可以判断,内容长度为0
类 空 “” 等很多都可以这样判断
这种并不是真的空,只是一种快捷的判断

测试代码1

Sub ttff1()
Dim a
Debug.Print "Dim a"
Debug.Print "IsEmpty(a)=" & IsEmpty(a)
Debug.Print "IsNull(a)=" & IsNull(a)
'Debug.Print Isblank(a)     'isblank()是EXCEL的函数,VBA里没有
Debug.Print ""
a = Null
Debug.Print "a=null"
Debug.Print "IsEmpty(a)=" & IsEmpty(a)
Debug.Print "IsNull(a)=" & IsNull(a)
Debug.Print ""
a = ""
Debug.Print "a="""""
Debug.Print "IsEmpty(a)=" & IsEmpty(a)
Debug.Print "IsNull(a)=" & IsNull(a)
Debug.Print ""
a = 1
Debug.Print "a=1"
Debug.Print "IsEmpty(a)=" & IsEmpty(a)
Debug.Print "IsNull(a)=" & IsNull(a)
Debug.Print ""
End Sub

测试代码2

Sub t1t1()
Dim a As Integer
Dim strb As String
Dim wb As Object
Dim x As Variant  '或 dim x 默认就是variant类型的变量
a = 100
b = "abc"
Set wb = ThisWorkbook
x = Array(1, 2, 3)
Debug.Print a
Debug.Print b
Debug.Print wb.Name
Debug.Print x(0)
Debug.Print
Debug.Print "-------按变量类型给置空后--------"
a = 0
b = ""
Set wb = Nothing
x = Null
Debug.Print a
Debug.Print b
'Debug.Print wb  '对象置空后好像不能这样debug.print
Debug.Print x
'a = Null      '非variant变量,不能置为null
'Debug.Print a
End Sub
                                    选中E列(就是你需要填充的那一列),摁F5(或者Ctrl+G),定位条件,选择“空值”,确定,输入=,然后摁键盘上向上的方向键,ctrl+enter结束。下载了点金融数据到excel表格,导出的交易日宏观经济数据,在数据对齐后有一些缺失值,使用前值填充就行,懒得再导进python了,发现excel也同样好用。
                                      vb6中存在几个虚幻的值:Null、Missing、Empty、Nothing、vbNullString。除了最后一个之外,每一个值都不能直接用“a=值”来判断。下面分别解释一下这几个值的含义。
1、Null
Null指一个不合法的数据,判断一个变量是否为Null使用isNull函数。
这种数据通常出现在三种情况下:
(1)最简单的,函数直接返回Null给调用方。譬如
Function ...
empty    有效的空值,如0 "",比较常用
	null      无效的控制,比如二选一之外的
	nothing   对象变量的空值, 语法是 object is nothing 而不是用 =nothing
1.2 emptynull not...
                                    如果 expression 由多个变量组成,则任何成员变量中的 Null 将导致为整个表达式返回 True。否则,返回 False。IsArray”在变量是数组时返回“True”否则返回“False”。expression是一个Variant 类型的值, 其中包含可识别为日期或时间的日期表达式或字符串表达式。expression被识别为数字,则“IsNumeric”返回“True”,否则,返回“False”。expression是数据表达式,则“IsNumeric”返回“False”。
                                    28满脑子的智慧,硬生生地撑大了我的脸好久没更新了,今天来分享下两个很简单却很容易犯错的函数,ISBLANK和BLANK。先来看语法函数语法返回值ISBLANKISBLANK ( <Value> )值为则返回True,反之FalseBLANKBLANK ( )任何类型的值表面上看两个函数只有有无参数的区别,实际上是这样吗?打开Dax studio,先来看一组结果,从结果上看是相同的,这也是为什么很多人会误以为它们是一样的。接下来看下面的例子,这时会发现结果很能和我们先前想的不一样了,ISBLA
                                    返回白。语法BLANK ( )返回值标量 一个任意类型的值,空值没有数据类型。备注BLANK 值在与其他值比较时自动转换类型。检查一个值是否为 BLANK 的正确方法是使用运算符 == 或 ISBLANK 函数。不要使用运算符 = 。运算符==是一个 “严格等于 “的运算符,它将 BLANK 与 0 或字符串区别对待。BLANK 不对应 SQL 中的 NULL。DAX 中的 BLANK 不遵循...