这很好但我希望它能用于文本或数字
Sub Cleanup()
With ActiveSheet.UsedRange.offset(1,0)
.Value = Evaluate("IF(ISTEXT(" & .Address & "), _
TRIM(SUBSTITUTE(" & .Address & ",CHAR(160),"""")), _
REPT(" & .Address & ",1))")
End With
End Sub
我试过(不工作)
.Value = Evaluate("IF(oR(ISTEXT(" & .Address & "), _
TRIM(SUBSTITUTE(" & .Address & ",CHAR(160),"""")), _
REPT(" & .Address & ",1), _
IsNummeric((" & .Address & "),TRIM(SUBSTITUTE(" & .Address & ",CHAR(160),"""")), _
REPT(" & .Address & ",1)))")
但是(经过大约一个小时的尝试)它只是将所有内容都变为#value!
答案 0 :(得分:1)
包含不间断空格的单元格永远不会被视为数字,无论它包含多少位数或小数位。最好只用所返回的值替换所有公式,并删除所有不间断的空格。
boost::multi_index_container
可以通过使用Range.SpecialCells method删除Sub Cleanup()
With ActiveSheet.UsedRange.offset(1,0)
.Value = .value
.replace what:=chr(160), replacement:=vbnullstring, lookat:=xlpart
End With
End Sub
或#N/A
等延迟工作表错误来执行其他清理。这也是在整个工作表中查找公式或类型值中的数字的方法,但如上所述,如果单元格包含不间断的空格,则永远不会将其视为数字。
fwiw,您的Application.Evaluate method可能会留下零长度字符串,而不是像上述程序那样真正空白的单元格。