问题:如何判断EXCEL里的空值

  • EXCEL的空值分几种情况
  1. 完全的空值,没用过
  2. 有些假的空值,比如"" (很可能是各种公式返回值"")

1 一般可以使用 counta()判断非空,但是这个函数识别不了"",会把""也识别为非空

  • counta() 可以判断 单元格 确实没有任何内容
  • 但是 counta() 判断非空,对判断""这种不好用,比如有个if() 函数在单元格里留下了"",counta()会识别为非空单元格

2 反向--查空单元格,使用 countblank() 识别空单元格,""也能识别为空blank

  • countblank()对判断""这种仍然好用, 适应性很广
  • 但是新手注意,这个判断空 和非空 是反向操作。

所以,如果想统计比如20列里有几个是空的

用counta()= 可能是错的,因为空行里可能有公式返回的 ""

而写成 20-countblank() 判断会更准确,因为 "" 和 真正blank都会别识别为blank

3 使用countif() 或者 if() 判断空单元格,可适用各种情况

3.1 一般情况

  • countif() 单个值,一般不需要加引号
  • countif() 单条件,条件需要加引号""
  • countif() 多条件,(也可以写成 "" & "" 字符串组合起来做为条件 )
  • 理论上 countif() 类 if() ,应该是可以应付各种情况,但是语法要正确。

3.2 用countif 判断""  ,当作单个值处理

  • 用countif 判断""  ,当作单个值处理
  • countif()要注意写法,空值 ""仍然是单个值

3.3 用countif 判断""  ,当作条件处理

  • 用countif 判断""  ,当作条件处理
  • countif可用,但是写的语法错误COUNTIF(E14:H14,"=""")
  •  countif可用,单个值判断也可以写成条件判断,把条件和判断值分开写,然后用& 连接起来还是好用的,COUNTIF(E14:H14,"="&"")

4 下面是实验过程

5 处理空值,也可以用替换的方法

    有时候,无论是公式返回得"",或者是这个公式返回的"",再被数字粘贴了,和空单元格还是不同,直接用ctrl定位处理不了

  • 比如仅用ctrl+g, 定位空值可以处理
  • 先ctrl F 把 空 替换为aaa (可以复制原文中的特定空)
  • 再把aaa 替换为 空,就可以了

6 VBA的方法

  • VBA代码也可以解决
  • 其中m为行数,n为列数,这么处理是为了提高效率
  • 下面这个代码先把每列去掉空值,然后多列合并到1列
Private m
Private n


Sub 去重()
m = 99
n = 9
For j = 1 To n
For i = Cells(m, j).End(xlUp).Row To 1 Step -1
    If Cells(i, j) = "" Then
       Cells(i, j).Delete
    End If
Next
Next

End Sub



Sub 合并列()

For j = 2 To n
a = Cells(m, 1).End(xlUp).Row
For i = 1 To Cells(m, j).End(xlUp).Row
    If i <= Cells(m, j).End(xlUp).Row Then
        Cells(a + i, 1) = Cells(i, j)
    End If
Next
Next

End Sub


Sub 打扫战场()
   Range(Cells(1, 2), Cells(m, n)).Delete
   MsgBox "done"
End Sub

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐