数据导入Excel为" general",文本以" ="开头,得到" #name?"有没有办法让它回到文本?

时间:2018-02-20 22:08:21

标签: excel vba excel-vba

我们的办公室用等号开始他们的文本数据,当导入电子表格时,它给了#NAME?错误。

现在,我知道我可以将单元格格式更改为文本,然后单击公式栏,excel会将单元格识别为文本,但有没有办法通过VBA执行此操作?

实施例

单元格显示值:#NAME?

单元格文本= -Notice,ABC

所需的输出:注意,ABC

现在,通常,我会做类似

的事情
sub convert_it()
  if left(cells(1,1).value,2) ="=-" then cells(1,1).value = _
  right(cells(1,1).value, len(cells(1,1).value) -2)
end sub

但是返回了类型不匹配错误。

是否有某些方法可以在单元格中获取文本而无需手动点击?

我可以点击几千次,然后Excel再次将其识别为文本,而不是错误,但我宁愿避免这种情况。

2 个答案:

答案 0 :(得分:2)

您可以使用VB执行此操作,或者只需突出显示整个工作表,按CTRL-H,在查找中键入 = ,然后在替换中' = ,然后单击全部替换。这将使Excel不再认为这些是公式。

答案 1 :(得分:1)

您必须使用.Value,而不是使用.Formula,因为它在此处被解释为:

sub convert_it()
  if left(cells(1,1).formula,2) ="=-" then cells(1,1).formula = _
  right(cells(1,1).formula, len(cells(1,1).formula) -2)
end sub

enter image description here

当然,您可以将代码放在列的循环中。但我同意,做一个大型的查找/替换可能更容易。