【问题标题】:Blank cells with value有值的空白单元格
【发布时间】:2020-12-18 11:59:34
【问题描述】:

我的书中有很多没有任何价值但仍计入“计数”的单元格。当我尝试使用 Ctrl 和箭头键导航时,这些单元格也会“中断”滚动,这很烦人。当我选择这些单元格并删除它们时,它们不再具有“值”(如果我编辑文本并在每个单元格上按 Enter 键也可以使用),但它是一个大小适中的文档,其中包含很多。我想知道是什么原因,是否有办法解决它。

“计数:14”在空单元格中:

【问题讨论】:

  • 这些单元格中有字符,所以它们不是空白的。在它们旁边键入 =LEN(A2)(正确的单元格引用),您会看到这些单元格中有多少个字符.
  • @sophods LEN 返回 0。
  • 这很奇怪。如果 len 返回 0,那么当您使用 Cntrl + 箭头导航时它不应该停在那里..
  • 在某些情况下,某些格式会导致空白单元格被视为与非空单元格(例如边框)相同。由于过去的错误,这也可能是鬼数据。要更正,突出显示有问题的区域,导航到主页选项卡 > 清除 > 全部清除
  • @urdearboy 清除所有作品,就像按 Delete 一样。有什么方法可以选择所有这些单元格,以便我可以清除或删除它们?

标签: excel


【解决方案1】:

工作表的UsedRange 属性还包括您看到的带有幻影数据的单元格,这可以帮助您动态清除正确的单元格。请注意,这将清除空白单元格中的所有内容。这包括 cmets、格式化等,因此请确保对于没有幻影数据问题的其他单元格来说这不是问题。

  1. 遍历UsedRange 中的每个单元格并查找带有Len = 0HasFormula = False 的单元格,即要清除的空白
  2. 将这些单元格(无字符)添加到Union (单元格集合)
  3. 循环完成后,清除Union,这有望解决您的问题

Sub Clear()

Dim Target As Range
Dim ClearMe As Range

For Each Target In Sheets("Sheet1").UsedRange
    If Len(Target) = 0 And Not Target.HasFormula Then
        If Not ClearMe Is Nothing Then
            Set ClearMe = Union(ClearMe, Target)
        Else
            Set ClearMe = Target
        End If
    End If
Next Target

If Not ClearMe Is Nothing Then ClearMe.Clear

End Sub

如果您想在整个工作表上运行宏之前对此进行测试,请将UsedRange 替换为您在照片中向我们展示的实际范围。例如,For Each Target In Sheets("Sheet1").Range("A1:A10")(idk 实际范围)。宏完成后,查看同一范围是否在突出显示后显示计数

【讨论】:

  • 一个很好的答案......我喜欢使用Union()
【解决方案2】:

如果单元格 A2 显示为空,并且 A2 的长度为零,则在另一个单元格中输入:

=IF(LEN(A2)<>0,"stuff",IF(COUNTA(A2)=0,"genuine empty","null character"))

这将使您能够区分:

  1. 单元格中的字符
  2. 单元格中什么都没有
  3. 在单元格中返回 Null 的公式或 Null 常量
    (我指的是 零长度字符串 )

如果你想Clear这些单​​元格,运行这个简短的宏:

Sub diogo()
    Dim cell As Range, wf As WorksheetFunction
    Set wf = Application.WorksheetFunction
    For Each cell In ActiveSheet.UsedRange
        If Len(cell.Value) = 0 Then
            If wf.CountA(cell) = 1 Then
                cell.Clear
            End If
        End If
    Next cell
End Sub

【讨论】:

  • Excel 单元格 never contain NullIf CountA() = 1 可能会像 If Not IsEmpty() 那样更具可读性。
  • wf.CountA(cell) 计算公式的长度吗?如果是这样,很好的捕获+加法。应该已添加到我的解决方案中
  • @urdearboy 不,它计算cell 中非空白单元格的数量。鉴于cell 是一个单元格,答案可以是 0 或 1。
  • 我一定累了。不知道为什么我没有看到。我从来没有为工作表函数创建过变量,所以 wf 把我扔了哈。那么问题是这个(和我的)可能会输出 null 的潜在清晰公式,例如IFERROR( something, "")
  • @GSerg 非常感谢!从现在开始我将使用IsEmpty()。我知道 Null 不是零长度字符串的适当术语......有适当的术语吗???
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-16
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多