我从Oracle数据库导入数据并使用Excel从中创建一些报告。最近,我们的一位数据录入人员开始使用“+”开始输入。 Excel比评估和添加=然后显示可怕的?name#error。错误是错误2029.
我尝试使用
If IsError(C.Value) Then
C.Value = Replace(C.Value, "=+", "", 1, -1, vbTextCompare)
End If
但这并没有让我到处都是。
有什么建议吗?
答案 0 :(得分:2)
Excel拥有自己的替换功能:
ActiveSheet.Cells.Replace What:="=+", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
答案 1 :(得分:1)
如果您有文本/ CSV文件中的数据,那么您可以尝试:Data > Import External Data > Import Data
这将启动一个向导,您可以将特定列指定为文本,并导致+, - 等符号不被解析Excel中
在VBA中,这可以通过Worksheet("foo").QueryTables.Add
方法完成。有很多选项,但TextFileColumnDataTypes
属性允许您指定要将哪些列视为文本。通过记录正在使用的向导的宏然后编辑它来适应
如果您更直接地读取数据(例如通过ADO或DAO),那么只需确保目标单元格在添加数据之前采用文本格式
Worksheet("foo").Cells(r, c).NumberFormat = "@"
在原始解决方案中,您几乎肯定想要查看C.Formula
而不是C.Value
如果单元格C的公式为=123+456
,那么C.Value
将为579而C.Formula
则为=123+456
+1在此上下文中使用内置Replace
方法
答案 2 :(得分:0)
另外一件事,应该是:
If IsError(C.Value) Then
C.Value = Replace(C.Formula, "=+", "", 1, -1, vbTextCompare)
End If
这是因为= +存储在公式属性中,而不是值...如果您不想进行清理,可以将替换(...)分配给C.Value或C.Formula你自己在VBA