我在这里做的是将存储为文本的字符串转换为整数.不幸的是,只是将格式从一般格式更改为数字格式并不能解决问题,而我之前所做的就是手动查找/替换每个单独的数字(即使用excel查找替换为0,1,2,3等)
我在下面的代码中遇到的问题是它只会替换一些数字,但不是全部.我甚至无法弄清楚它所做的设定模式.据我所知,for语句应该为每个"数字"值从0到9运行吗?那么为什么不替换所有字符串呢?
Dim Digit As Integer
Dim ReplacementRange As Range
Set ReplacementRange = Range("Table1[AR]")`
Digit = 0
For Digit = 0 To Digit = 9
ReplacementRange.Replace What:=Digit, Replacement:=Digit, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Digit = Digit + 1
Next
Run Code Online (Sandbox Code Playgroud)
要将存储为范围内的文本的数字快速转换为其数值,您只需将值放入范围内,如下所示:
ReplacementRange.value = ReplacementRange.value
编辑:我有时间,所以我想我会添加你做什么的错误,除了它是一个简单的解决方案的复杂的替代品:
for循环结构错误.正确的最小语法[variable] = [startValue] to [endValue]例如:For x = 0 to 1.
For Digit = 0 To Digit = 9最终被评估等效于For Digit = 0 to 0(因为你之前将Digit设置为0.这意味着循环只运行一个值Digit = 0.你也在循环中递增数字,这通过增加步骤更合理地处理.在这种情况下,你想要击中每个数字,所以你不应该增加值.
要修复循环,您需要执行以下操作:
For Digit = 0 To 9
ReplacementRange.Replace What:=Digit, Replacement:=Digit, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next
Run Code Online (Sandbox Code Playgroud)
但是......仍然无法解决存储为文本的数字问题.