VBA 评估 - 匹配

VBA Evaluate - Match

我的以下代码有问题, 如您所见,我正在尝试查找搜索的行值。我有 3 个不同的标准(它们之前定义过)和 3 个不同的范围(之前也定义过)。但不幸的是我找不到这些行。

这里可以看到代码;

Gorev = Worksheets(WS_All).Cells(p, o).Value
SlideNo = Worksheets(WS_All).Cells(p, 34).Value
Egitim_Adi = Worksheets(WS_All).Cells(2, 3).Value
Check1 = Worksheets(j_WS).Range("A:A")   'Egitim_Adi Kontrolü için'
Check2 = Worksheets(j_WS).Range("B:B") 'SlideNo Kontrolü için'
Check3 = Worksheets(j_WS).Range("C:C")  'Gorev Kontrolü için'

Satir_bul = Evaluate("=Match(" & Egitim_Adi & " & " & SlideNo & " & " & Gorev & ", Check1 & Check2 & Check3, 0)")

我愿意接受任何建议..

这样试试:

Satir_bul = WorksheetFunction.Match ( Egitim_Adi & " & " & SlideNo & " & " & Gorev & ", Check1 & Check2 & Check3, 0)

Here is a bit more about Match.

不行。您应该在 Match 中包含范围的联合。 Read more about Unions here.

您有三个字符串 str1str2str3。您有三个搜索区域:rng1rng2rng3。现在,您必须在每个范围内执行以下操作(cell 将是范围变量):

For Each cell In rng1
  'here you determine if one of your strings is contained uisng InStr function
  'if the above condition is satisfied, then get the number of a row
Next cell

然后您将使用 rng2rng3 执行此操作。

你那里有一大堆问题。 WorksheetFunction.Match 不会起作用,因为您正在尝试复制数组公式,因此 Evaluate 绝对是更好的选择,但您需要为其构造正确的公式字符串。除非您知道三个单元格的内容始终是文本还是数字,否则使用单元格地址比担心将值括在引号中更容易:

Gorev = Cells(p, o).address
SlideNo = Cells(p, 34).address
Egitim_Adi = Cells(2, 3).address

Satir_bul = Worksheets(WS_All).Evaluate("=Match(" & Egitim_Adi & "&" & SlideNo & "&" & Gorev & ", '" & j_WS & "'!A:A&'" & j_WS & "'!B:B&'" & j_WS & "'!C:C, 0)")

如果您可以限制范围而不是使用整列,您也会获得更好的性能。