我的代码有问题, 如您所见,我试图找到搜索的行值。我有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)")
我对任何建议持开放态度。
答案 0 :(得分:0)
试试这样:
Satir_bul = WorksheetFunction.Match ( Egitim_Adi & " & " & SlideNo & " & " & Gorev & ", Check1 & Check2 & Check3, 0)
Here is a bit more about Match.
它无效。您应该在匹配中包含范围的联合。 Read more about Unions here.
答案 1 :(得分:0)
您有三个字符串str1
,str2
,str3
。您有三个搜索区域:rng1
,rng2
和rng3
。现在,在每个范围内,您必须执行以下操作(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
您可以使用rng2
和rng3
执行此操作。
答案 2 :(得分:0)
那里有一大堆问题。 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)")
如果您可以限制范围而不是使用整列,那么您也会获得更好的效果。