ws2.Range("D3").Value = Application.WorksheetFunction.Match(variable_i, ws2.Range("A:A"), 0)
ws1 =工作表1 ws2 =工作表2
在ws1上,我有2列下拉框(数据验证列表)
从下拉框中的第一列中选择的内容分配给变量“ variable_i”
下拉列表第二栏中的选择被分配给变量“ variable_p”
它从ws2提取数据(范围是a列的全部)
它正在使用变量“ variable_i”从下拉框中寻找选择...代码运行良好,它返回D3上的数字行而没有任何问题
我正在寻找它返回包含两列(variable_i和variable_p)两个变量的行号
我尝试了以下代码:
ws2.Range("D3").Value = Application.WorksheetFunction.Match(variable_i & variable_p, ws2.Range("A:B"), 0)
正如我在网上看到的那样,但这对我不起作用。
我得到的错误是: “运行时错误'1004': 对象“ WorksheetFunction”的“匹配”方法失败
查找多个变量的最佳方法是什么?
任何帮助将不胜感激!
答案 0 :(得分:1)
我相信对您来说,关键是可以使用select
函数。多个条件意味着您很可能需要EVALUATE()
可以识别的数组。同样,将值和范围连接起来以检查两个条件绝对不是最佳解决方案。想象一下EVALUATE
和A1=1
单元格。如果将范围连接到B1=101
并查找条件1 1101
和10
而不是11
和1
,会发生什么情况?
一个简单的评估示例:
101
在我的示例中,我有一个Debug.Print Evaluate("MATCH(1,(A1:A6=1)*(B1:B6=""B""),0)")
和一个Long
变量,分别是String
和1
。我是否可以使用您的命名变量B
和variable_i
编写以下代码:
variable_p
是否注意到添加ws2.Range("D3") = Evaluate("MATCH(1,('Sheet1'!A1:A6=" & variable_i & ")*('Sheet1'!B1:B6=""" & variable_p & """),0)")
或Long
变量的区别?这是因为要在VBA中正确评估,String
变量周围必须有两个引号。没有数字就可以做到。
还请注意,我在代码中指定了工作表名称,您可以根据需要进行更改