如何修改此脚本以解决不同的情况?

时间:2015-02-03 15:31:16

标签: vba excel-vba string-comparison excel

我写了一个VBA脚本,它在一列中搜索一个字符串并在另一列中返回匹配。该点与SKU的产品图片相匹配。问题是如果项目编号和图像的情况具有不同的情况则它会失败。脚本如下:

Sub Test()
    Dim NA As Long, NC As Long, v As String, I As Long, J As Long
    Dim v2 As String
    NA = Cells(Rows.Count, "A").End(xlUp).Row
    NC = Cells(Rows.Count, "C").End(xlUp).Row
    For I = 2 To NA
        v = Cells(I, "A").Value
        v2 = ""
        For J = 2 To NC
            If InStr(Cells(J, "C").Value, v) > 0 Then
                v2 = v2 & ";" & Cells(J, "C").Value
            End If
        Next J
        Cells(I, "A").Offset(0, 1).Value = Mid(v2,2)
    Next I
End Sub

我如何解释不同的情况?有没有办法呢?

2 个答案:

答案 0 :(得分:1)

非常简单,只需将其转换为小写:

Sub Test()
    Dim NA As Long, NC As Long, v As String, I As Long, J As Long
    Dim v2 As String
    NA = Cells(Rows.Count, "A").End(xlUp).Row
    NC = Cells(Rows.Count, "C").End(xlUp).Row
    For I = 2 To NA
        v = LCase(Cells(I, "A").Value)
        v2 = ""
        For J = 2 To NC
            If InStr(LCase(Cells(J, "C").Value), v) > 0 Then
                v2 = v2 & ";" & Cells(J, "C").Value
            End If
        Next J
        Cells(I, "A").Offset(0, 1).Value = Mid(v2,2)
    Next I
End Sub

我刚刚接受了您的代码示例,并在vCells(J, "C").Value上将强制转换为小写。

我没有对此进行测试,因此我无法保证完美的功能。


您还可以使用

更改模块(在顶部)

Option Compare Text

这将完全关闭区分大小写(因此您不需要LCase(..)

答案 1 :(得分:1)

只需使用Instr functionvbTextCompare选项。

If InStr(1, Cells(J, "C").Value, v, vbTextCompare) > 0 Then
    v2 = v2 & ";" & Cells(J, "C").Value
End If
  

[vbTextCompare]根据应用程序当前文化信息确定的不区分大小写的文本排序顺序执行文本比较。