excel - 有通配符问题
问题描述
我在我的 VBA 代码中使用通配符时遇到了困难。
Set OpenWB = Workbooks.Open("C:filename.csv", ReadOnly:=True)
With OpenWB.Worksheets(1)
iTotSRows = .Range("F" & .Rows.Count).End(xlUp).Row
oSourceR = .Range("A2:G" & iTotSRows)
End With
OpenWB.Close False
Set CompWB = Workbooks.Open("C:filename2.csv", ReadOnly:=True)
With CompWB.Worksheets(1)
iTotCRows = .Range("A" & .Rows.Count).End(xlUp).Row
oCurR = .Range("A2:f" & iTotCRows)
End With
CompWB.Close False
For iSC = 1 To UBound(oSourceR)
For iCC = 1 To UBound(oCurR)
If (LCase(oCurR(iCC, 2)) = LCase(oSourceR(iSC, 2))) And (LCase(oCurR(iCC, 3)) = LCase(oSourceR(iSC, 3))) And (LCase(oCurR(iCC, 4)) = LCase(oSourceR(iSC, 4))) And (LCase(oCurR(iCC, 5)) = "*" & LCase(oSourceR(iSC, 5))) Then
oSourceR(iSC, 7) = oCurR(iCC, 6)
Exit For
End If
Next
Next
ThsSht.Range("A2:G" & iTotSRows) = oSourceR
如您所见,当我比较值时,我想使用通配符来比较 (oSourceR(iSC, 5)) 和 (oCurR(iCC, 5)),因为其中一个是包含在末尾的参考号在另一个字符串。
为什么这不起作用?如果不是通配符,其余代码可以正常工作。
解决方案
您需要使用Like
运算符。
If (LCase(oCurR(iCC, 2)) = LCase(oSourceR(iSC, 2))) And _
(LCase(oCurR(iCC, 3)) = LCase(oSourceR(iSC, 3))) And _
(LCase(oCurR(iCC, 4)) = LCase(oSourceR(iSC, 4))) And _
(LCase(oCurR(iCC, 5)) Like "*" & LCase(oSourceR(iSC, 5))) Then
oSourceR(iSC, 7) = oCurR(iCC, 6)
Exit For
End If
推荐阅读
- c# - 如何使用 Novell.Directory.Ldap.NETStandard 在 c#/.NET 中更改 LDAP 的密码
- python - 如何在 python 中构建 Nps 的关键驱动分析?
- php - Wordpress:自定义永久链接结构 - /%custom-post-type%/%custom-taxonomy%/%post-name%/
- file-upload - 如何写一个笑话测试
在我的 LWC - google-apps-script - 特定范围之间的 Google 表单正则表达式“不匹配”不起作用
- jquery - 使用 setOptions 动态更改属性后剑道滑块的问题
- reactjs - 我在从控制器组件中以反应钩子形式检索值时遇到问题
- javascript - 在 JavaScript 中组合多个分隔符(拆分)
- android - 为什么在 Kotlin 的 recyclerView 中使用 ImageSlider 时会出现 java.lang.ExceptionInInitializerError 错误?
- triggers - 在手表上触发是否会导致故障排除问题?