【问题标题】:String comparison using Like an wildcard not working使用 Like 通配符的字符串比较不起作用
【发布时间】:2016-02-08 17:51:23
【问题描述】:

我在 B 列的某些单元格中有数据,看起来像 Id# 加上一些数字,例如“Id# 85”

所有其他单元格中都有名字 FirstName LastName

我需要找到其中包含 Id# 的单元格,我正在尝试以下操作,但无法正常工作

谢谢

Sub test()
Dim ws As Worksheet
Dim i As Long

  Set ws = ThisWorkbook.Sheets("Elements")

  With ws
  For i = 2 To 180
    If .Cells(i, "B").Text Like "Id#" & "*" Then Do something
  Next i
End With

End Sub

【问题讨论】:

  • 你试过instr吗?
  • 您的图表中的 ID 是否大写? Like 默认为 compare binary,如果比较“ID*”和“Id*”,它将返回 false。如果您不希望比较区分大小写,请使用Option Compare Text
  • 另外,您可能希望使用.Value.Value2 而不是使用.Text。如果单元格的内容太长而无法在屏幕上显示,.Text 会返回异常值。
  • 我刚刚知道了,是 # 不能与 * 一起使用
  • # 本身就是一个通配符。仅使用*

标签: excel wildcard sql-like vba


【解决方案1】:

试试这个:

Sub test()
    Dim ws As Worksheet
    Dim i As Long
    Set ws = ThisWorkbook.Sheets("Elements")

    With ws
        For i = 2 To 180
            If Left(.Cells(i, "B").Text, 3) = "Id#" Then
                .Cells(i, "C").Value = True
            End If
        Next i
    End With
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2014-04-03
    • 2012-01-22
    相关资源
    最近更新 更多