excel - 如果检查 2 个变量,但不会忽略文本

标签 excel vba

我正在运行 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/

相关文章:

excel - 基于单元格嵌入OLE对象

excel - 获取 ID 序列中的第一个和最后一个数字以及产品名称并显示在另一个工作表中

excel - 无法使用 Selenium 和 VBA 从网页的下拉列表中选择复选框

excel - 通过 GUI 脚本排序保存 SM37 行?

vba - 失去与SharePoint问题的连接

vba - 如何找到工作簿的最大行数 - vba

vba - NOT的奇怪行为

excel - 有没有办法在 Excel 中对 "Everything other than"进行条件格式设置

excel - 如何修复以下代码中未找到的对象

java - 如何获取Excel中选定字符串的行、列坐标