我正在运行 for
循环并有一个 if/else
检查当前范围的值并查看它是否大于或等于 1 的语句。问题是当前范围的值也可以是文本而不是数字。
正如我现在所拥有的,它认为文本大于或等于 1,但是如何添加额外的条件来查看它是文本还是数字?
LastRow = ws1.Cells(Rows.Count, "A").End(xlUp).Row
For i = 3 To LastRow
If Range("A" & i).Value >= 1 Then
ws2.Range("A" & var1).Value = ws1.Range("A" & i).Value
var1 = var1 + 1
End If
Next i
最佳答案
由于 VBA 会将仅包含数字的文本字符串隐式转换为用于此比较的数字(即 2>"1"
是 True
,而 2>"3"
是 False
),你真正想要检查的值是否为 IsNumeric
If Range("A" & i).Value >= 1 And IsNumeric(Range("A" & i).Value) Then
正如 GSerg 在下面指出的那样,这还将捕获科学或程序员符号,例如“&hFF”(“&h”表示十六进制,而十六进制
FF
转换为十进制为 255
)或“1d2”/“1e2”( decimal exponent 的 1 的 2 次方,或 1 * 10^2
= 100
)。如果这是一个问题,您可能需要考虑 using RegEx反而。
关于excel - 如果检查 2 个变量,但不会忽略文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57526476/