任何帮助,将不胜感激。这看起来像一个常见问题,但我在 vba 中找不到任何问题。这是我最好的镜头:
Dim oppositeRow As Long
.....
oppositeRow = WorksheetFunction.Match(ddate & campaign, "A3:B62", 0)
如果您知道只有一个匹配结果,您可以按照 Excel 公式执行以下操作:
=SUMPRODUCT(ROW(A2:A5), N("john"=A2:A5), N("smith"=B2:B5))
应用于以下工作表:
AB 1 先到后 2 鲍勃史密斯 3 约翰·史密斯 4 约翰布朗 5山姆布朗
这将返回 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
您可以使用公式完成此DGET
操作,只要您在工作表中添加一个用于表示行号的列。
行 ID 列 1 列 2 1个氨基酸 2 BB 3 立方厘米 4 天 5 EE
那么公式是:
=DGET(A1:C6;1;E1:F2)
这里假设上面的数据在A1:C6
下面的数据块中,其中包括搜索条件被放在E1:F2
列 1 列 2 抄送
DGET
上面列出的公式的返回值为'3'。
如果您的 VBA 方法将正确的搜索条件放入单元格E2
并F2
在运行DGET
公式之前,您可以纯粹在 VBA 中执行此操作。