任何帮助将不胜感激。这看起来像是一个常见问题,但我在vba中找不到任何问题。这是我最好的镜头:
Dim oppositeRow As Long
.....
oppositeRow = WorksheetFunction.Match(ddate & campaign, "A3:B62", 0)
答案 0 :(得分:5)
如果您知道只有一个匹配结果,则可以执行以下Excel公式:
=SUMPRODUCT(ROW(A2:A5), N("john"=A2:A5), N("smith"=B2:B5))
适用于以下工作表:
A B 1 first last 2 bob smith 3 john smith 4 john brown 5 sam brown
这将返回3(因为john smith位于第三行),由于标题行,您必须减去1才能将索引放入表中。
这通过将三个向量相乘来起作用:
将向量乘以元素得到{0,3,0,0},其总和为3.
在VBA中表达一个复杂的公式有点尴尬,所以如果你想纯粹在VBA中做这个,我建议你只用一个计数器做一个循环并记录你找到符合你标准的行的索引
编辑:这是一些VBA代码:
Dim index as Integer
For index = 1 to 4
If Range("A1").Offset(index).Value = "john" And Range("B1").Offset(index).Value = "smith" Then
Exit For
End If
Next index
答案 1 :(得分:3)
只要在工作表中添加用于表示行号的列,就可以使用DGET
公式完成此操作。
rowID column1 column2 1 A aa 2 B bb 3 C cc 4 D dd 5 E ee
然后是公式:
=DGET(A1:C6;1;E1:F2)
这假设上述数据位于A1:C6
以下数据块,其中包含的搜索条件位于E1:F2
column1 column2 C cc
上面列出的DGET
公式的返回值为“3”。
如果您的VBA方法在运行E2
公式之前将正确的搜索条件放入单元格F2
和DGET
,则可以在VBA中完全执行此操作。