Alter Sub将IsText用于IsText或IsNumber excel 2013

时间:2015-08-26 00:16:23

标签: excel-vba vba excel

这很好但我希望它能用于文本或数字

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!

1 个答案:

答案 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可能会留下零长度字符串,而不是像上述程序那样真正空白的单元格。