繁体   English   中英

如果单元格的值为“”而不使用VBA,则清除单元格内容

[英]Clear cell contents if cell's value is “” without using VBA

我有一个带有“空单元格”或“存储为文本的数字”的列A. 我需要获得“空单元格”或“数字值”来创建图形。

我通常做的是使用=IF(A1<>"";cnum(A1);"")创建第二列=IF(A1<>"";cnum(A1);"") 但图表显示“”为0,所以我需要摆脱“”值。 然后在Excel中复制粘贴值不起作用。

我经常在运行中重新创建一个小的VBA代码( For each cell in Range() IF cell.value ="" THEN cell.ClearContents... )。 这很有效......但使用VBA看起来有点过分。

有时,我只是复制范围,将其粘贴到文本编辑器中,复制并粘贴到Excel中。 这也很有效......但我对这种技术也不是很满意。

如果不使用VBA,您将如何在Excel中执行此操作?


编辑1 :我忘了提到我也常常使用=IF(A1<>"";cnum(A1);"X")然后使用Copy / PasteValues然后按Ctrl + F代替“X”并将其替换为空。 (如果有文本值,我会把“XYXYX”改为确定)

编辑2 :我应该提到我只是寻找能够快1秒(这意味着没有或很少使用鼠标)的解决方案,或者快速但更好!

假设您的值位于“A”列中,请将以下公式放入“B”列:

=IF(A1<>"", 1, "")

然后将整个“A”列和Paste Special复制到指定“Values”的“B”列上,然后将“Multiply”复制为操作并选中“Skip Blanks”

之后复制整个“B”列并将其粘贴到“C”列(假设它为空),指定“值”,然后“添加”作为操作,并检查“跳过空白”。

因此,您在“C”列中有数字数据,其中没有值的正确空单元格。

谢谢你提出一个好问题!

  1. 选择整个列(但一次只能选择一列)。
  2. 运行数据►数据工具►文本到列。
  3. 选择🔘固定宽度,然后单击完成 无需通过其他屏幕。
  4. 所有包含零长度字符串的单元格将成为真正的空白单元格¹。

此过程可以快速将类似文本的数字转换为真实数字。

等效的VBA可以极大地加速循环范围内的每个单元并单独处理它们。

Dim c As Long
With Range("A1").CurrentRegion  `<~~ set to the desired range of one or more columns
    For c = 1 To .Columns.Count
        .Columns(c).TextToColumns Destination:=.Columns(c), _
            DataType:=xlFixedWidth, FieldInfo:=Array(0, 1)
    Next c
End With

¹ 此过程不适用于具有返回零长度字符串的公式的单元格。 在运行Text-to-Columns之前,必须使用Copy,Paste Special,Values将它们转换为返回值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM