/ / VBA odpowiada 6 kryteriom - excel, vba, excel-vba

VBA odpowiada 6 kryteriom - excel, vba, excel-vba

Skrypt wypełnia tablicę z arkusza o nazwie"Tygrysy" z 6 strunami. Następnie należy porównać tę tablicę z innym arkuszem zatytułowanym "Słonie" i powiedzieć mi, czy znajdzie dokładne dopasowanie. Kłopotliwy kod znajduje się w metodzie Application.Match

Będziemy wdzięczni za pomoc w zrozumieniu, jak poprawnie zakodować dopasowanie z wieloma wartościami.

Sub matchData()

Dim arrCompare(5) As Variant
Dim intRow As Integer
Dim varRes As Variant

Set sht = ActiveSheet
Set shtTigers = Worksheets("Tigers").Range("A2:A100")
Set shtElephants = Worksheets("Elephants").Range("A2:A100")

Sheets("Elephants").Activate

For intRow = 2 To 100

arrCompare(0) = Worksheets("Elephants").Cells(intRow, 1).Value
arrCompare(1) = Worksheets("Elephants").Cells(intRow, 2).Value
arrCompare(2) = Worksheets("Elephants").Cells(intRow, 4).Value
arrCompare(3) = Worksheets("Elephants").Cells(intRow, 5).Value
arrCompare(4) = Worksheets("Elephants").Cells(intRow, 7).Value
arrCompare(5) = Worksheets("Elephants").Cells(intRow, 9).Value

"compare all 6 strings in array against Elephant sheet rows for a match
varRes = Application.Match(arrCompare(), shtTigers, 0)

"also tried
"varRes = Application.Match(((arrCompare(0))*((arrCompare(1))*((arrCompare(2)) * ((arrCompare(3)) * ((arrCompare(4)) * ((arrCompare(5))*((arrCompare(6)),shtTigers, 0)

"messagebox just gives a Error 13 or 2042 for varRes
MsgBox ("varRes = " & varRes)

Next

End Sub

Odpowiedzi:

0 dla odpowiedzi № 1

Dopasowanie wymaga pojedynczej wartości odnośnika, ale próbujesz przekazać całą tablicę. Zamiast tego należy zamiast tego liczyć jeden element:

Dim counter as Integer

For x = 0 to 5
If Not IsError(Application.Match(arrCompare(x), shtTigers, 0)) Then
counter = counter + 1
End If
Next x

If counter = 6 Then Debug.Print "Matches found"