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

我有一个列A'空单元格'或'数字存储为文本'。 我需要获得“空单元格”或“数字值”来创build图表。

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

我经常重新创build一个小的VBA代码( For each cell in Range() IF cell.value ="" THEN cell.ClearContents... )中的For each cell in Range() IF cell.value ="" THEN cell.ClearContents... 。 这很好,但使用VBA似乎是一个矫枉过正。

有时,我只需复制范围,将其粘贴到文本编辑器中,复制并粘贴到Excel中即可。 这也很好,但是我也不太喜欢这种技术。

如何在Excel中不使用VBA而做到这一点?


编辑1 :我忘记提及我也经常使用=IF(A1<>"";cnum(A1);"X")然后复制/ PasteValues然后按Ctrl + F为“X”并将其replace为无。 (如果有文字的话,我会把“XYXYX”放进去)

编辑2 :我应该提到,我只是寻找解决scheme要么是要么1秒更快(这意味着没有或很less使用鼠标),或者更快,但更好!

假设你的值在“A”列中,把下面的公式写入“B”列:

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

然后将整个“A”列和select性粘贴复制到指定“值”然后“相乘”的“B”列中,然后选中“跳过空白”

之后,复制整个“B”列和粘贴特殊的“C”列(假设它是空的)指定“值”,然后“添加”作为操作,并检查“跳空白”。

所以你有“C”列中的数字数据,正确的空单元格,你没有值。

谢谢你的一个好问题!

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

这个过程可以快速地将text-that-look-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 

¹ 此过程不适用于具有返回零长度string的公式的单元格。 在运行“文本到列”之前,必须使用“复制”,“特殊粘贴”,“值”将这些值转换为返回的值。