我有一个带有“空单元格”或“存储为文本的数字”的列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>
答案 0 :(得分:1)
假设您的值位于“A”列中,请将以下公式放入“B”列:
=IF(A1<>"", 1, "")
然后将整个“A”列和Paste Special复制到指定“Values”的“B”列上,然后将“Multiply”复制为操作并选中“Skip Blanks”
之后复制整个“B”列并将其粘贴到“C”列(假设它为空),指定“值”,然后“添加”作为操作,并检查“跳过空白”。
因此,您在“C”列中有数字数据,并且没有值的正确空单元格。
感谢您提出一个好问题!
答案 1 :(得分:1)
此程序可以快速将 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将它们转换为返回值。