[英]VBA - How to Clear Cell Contents across Multiple Columns if Value not Contained
[英]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”列中有数字数据,其中没有值的正确空单元格。
谢谢你提出一个好问题!
此过程可以快速将类似文本的数字转换为真实数字。
等效的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.