首页 > 解决方案 > 显然,在更新单元之前,COUNTA 仍会计算“空白”单元 - 这是错误还是功能?

问题描述

我注意到 Excel 中的一种行为在直觉上没有意义。

如果任何公式导致单元格计算为空白字符串,例如,则复制该单元格并粘贴为值,以便公式消失 - 单元格在包含在公式=""中时仍会计数。COUNTA直到您按 F2 编辑单元格,然后按 Enter - 然后将不再计算单元格。

我可以理解为什么要COUNTA计算包含公式的单元格,但是一旦将单元格复制并粘贴为值,如果公式评估为空白,则单元格也应该是空白的,至少直观上是这样。奇怪的是,更新公式会导致 COUNT 减少。这似乎是一个错误,但我想把它放在这里以确保这不是我缺少的奇怪功能。

以下是我为重现此问题所采取的步骤(也在下图中):

  1. 在单元格 A1:A10 中输入 =“”
  2. 选择单元格 A1:A10 并复制
  3. 选择单元格 A1 并粘贴为值
  4. 选择范围内的任何单元格,然后按 F2
  5. 按回车
  6. 单元格 A11 中的计数将减少 1

作为步骤 4 的替代方法,如果您选择范围内的任何单元格并按 Delete,计数也会减少。

在此处输入图像描述

图像中的计数是 7,因为我已经多次测试了第 4 步和第 5 步 - 计数从 10 开始。

我正在使用 Office Insider 程序,所以如果它是一个错误,这可能就是原因。

任何人都可以对此有所了解吗?

标签: exceldebugging

解决方案


不是错误。

=""返回一个空字符串,这与真正的空单元格不同。复制/粘贴值会保留空字符串。

编辑单元格,F2然后Enter有效地将单元格呈现为空白。

这是一个有趣的小 VBA 测试以获取更多详细信息:

Sub Test()
    With ActiveCell
        .Formula = "="""""           ' enter ="" in the ActiveCell
        Debug.Print TypeName(.Value) ' returns String

        .Copy
        .PasteSpecial xlPasteValues
        Debug.Print TypeName(.Value) ' returns String

        .Value = .Value
        Debug.Print TypeName(.Value) ' returns Empty
    End With
End Sub

推荐阅读