我写了一个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
我如何解释不同的情况?有没有办法呢?
答案 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
我刚刚接受了您的代码示例,并在v
和Cells(J, "C").Value
上将强制转换为小写。
我没有对此进行测试,因此我无法保证完美的功能。
您还可以使用
更改模块(在顶部) Option Compare Text
这将完全关闭区分大小写(因此您不需要LCase(..)
)
答案 1 :(得分:1)
只需使用Instr
function的vbTextCompare
选项。
If InStr(1, Cells(J, "C").Value, v, vbTextCompare) > 0 Then
v2 = v2 & ";" & Cells(J, "C").Value
End If
[vbTextCompare]根据应用程序当前文化信息确定的不区分大小写的文本排序顺序执行文本比较。