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

时间:2015-10-01 21:25:24

标签: excel

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

我通常使用=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秒(这意味着没有或很少使用鼠标)的解决方案,或者是快速但更好的解决方案!< / p>

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

感谢您提出一个好问题!

答案 1 :(得分:1)

  1. 选择整个列(但一次只能选择一列)。
  2. 运行数据►数据工具►文字到列。
  3. 选择固定宽度,然后单击完成。无需通过其他屏幕。
  4. 包含零长度字符串的所有单元格将成为真正的空白单元格。
  5. 此程序可以快速将 text-like-like-numbers 转换为真实数字。

    等效的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将它们转换为返回值。