【发布时间】:2019-08-12 15:41:06
【问题描述】:
当我使用 debug.print 时,我的变量 found_match 将返回“A7:A45”,这个范围可以根据其他因素而改变,但目前它返回这个。
我设置了一个匹配函数,如果我输入“A7:A45”作为它的范围,该函数当前有效,但如果我用变量替换它,它就不起作用。
row_num3 = Evaluate("MATCH(1,('" & ws1.Name & "'!A7:A45=""" & condition_1 & """)*('" & ws1.Name & "'!B7:B45=""" & condition_2 & """)*('" & ws1.Name & "'!F7:F45=""" & condition_3 & """),0)")
Debug.Print row_num3
上述方法有效,但如果我用变量替换范围,当我使用 debug.print 时会返回错误:
row_num3 = Evaluate("MATCH(1,('" & ws1.Name & "'found_match=""" & condition_1 & """)*('" & ws1.Name & "'found_match2=""" & condition_2 & """)*('" & ws1.Name & "'found_match3=""" & condition_3 & """),0)")
Debug.Print row_num3
此代码在 ws3(工作表 3)上运行,但它正在寻找与 ws1(工作表)上的匹配项
如何格式化 Match 函数以将变量作为范围而不是专门键入范围(例如 A7:A45)
谢谢!
【问题讨论】:
-
如果
found_match是一个变量,而不是一个命名范围,你需要将它连接在:"MATCH(1,('" & ws1.Name & "'" & found_match & "=""" -
row_num3 = Evaluate("MATCH(1,('" & ws1.Name & found_match & "=condition_1"")*('" & ws1.Name & found_match2 & "=condition_2"")*('" & ws1.Name & found_match3 & "=condition_3"")我想我的格式仍然不正确 编辑:found_match 是一个变量。我发现串联超级混乱 -
什么是
found_match?是存储字符串地址的范围变量还是字符串变量? -
found_match = "A" & row_num2 & ":A" & lastrow3(row_num2 和 lastrow3 返回一个数字) 编辑:我没有为它设置 Dim -
& ws1.Name & "'!" & found_match