VBA比较字符串(检查字符串1是否包含字符串2)

时间:2015-12-08 09:26:50

标签: string excel vba compare string-comparison

我在比较两个字符串时遇到问题。该方法似乎无法以某种方式工作。我尝试了以下功能:

  1. 方法:

    If StrComp(logic_string, RSTA_ISIN_clean) Then
        rng.Offset(0, 16) = "OK(ISIN in RSTA)"
        rng.Offset(0, 16).Interior.Color = 5296274
    Else
        rng.Offset(0, 16) = "NG(ISIN not RSTA or check RSTA)"
        rng.Offset(0, 16).Interior.Color = 255
    End If
    
  2. 方法:

     If InStr(1, RSTA_ISIN_clean, logic_string, vbTextCompare) Then
         rng.Offset(0, 16) = "OK(ISIN in RSTA)"
         rng.Offset(0, 16).Interior.Color = 5296274
     Else
         rng.Offset(0, 16) = "NG(ISIN not RSTA or check RSTA)"
         rng.Offset(0, 16).Interior.Color = 255
     End If
    
  3. 在logic_string中我有值" FR0012915700"在RSTA_ISIN中我有值="老ISIN:FR0012915700"

    我要做的就是检查RSTA_ISIN是否在logic_string中,如果是,我想在单元格中写OK。 (试图在这里获得一个包含方法)

    可能是logic_string有问题,因为它有时给我空格 - >所以logic_string在调试模式下看起来像这样#34; FR0004052561" - >我试图用Trim修剪空间,但这也不起作用。

    我也尝试过InStr功能,但这不起作用

    有人可以协助吗

    这是我在调试模式下得到的:

    enter image description here

3 个答案:

答案 0 :(得分:1)

请检查您的变量。 " RSTA_ISIN_clean"或" RSTA_ISIN"作为变量

Sub test1()

Dim RSTA_ISIN_clean As String
Dim logic_string As String
Dim Rng As Range


Set Rng = ActiveSheet.Cells(1, 30)

logic_string = "FR0012915700"

RSTA_ISIN_clean = "Old ISIN: FR0012915700"

logic_string = Trim(logic_string)
RSTA_ISIN_clean = Trim(RSTA_ISIN_clean)


If StrComp(logic_string, RSTA_ISIN_clean) Then
    Rng.Offset(0, 16) = "OK(ISIN in RSTA)"
    Rng.Offset(0, 16).Interior.Color = 5296274
Else
    Rng.Offset(0, 16) = "NG(ISIN not RSTA or check RSTA)"
    Rng.Offset(0, 16).Interior.Color = 255
End If



End Sub

答案 1 :(得分:1)

对我来说,你实际上根本不想使用StrCmp function,这听起来并不合适;听起来好像你的 find-string-within-another-string 应由InStr function处理。请单击这些链接并阅读MSDN文档以做出决定。

Dim logic_string as String, RSTA_ISIN_clean as String

logic_string = "FR0012915700"
RSTA_ISIN_clean = " Old ISIN: FR0012915700"

If CBool(InStr(1, RSTA_ISIN_clean, logic_string, vbTextCompare)) Then
    rng.Offset(0, 16) = "OK(ISIN in RSTA)"
    rng.Offset(0, 16).Interior.Color = 5296274
Else
    rng.Offset(0, 16) = "NG(ISIN not RSTA or check RSTA)"
    rng.Offset(0, 16).Interior.Color = 255
End If

答案 2 :(得分:1)

尝试使用Like Operator:

double