Ich versuche, Excel-Funktionen in VBA-Code zu ändern. Die Formel unten in Col AC, Reihe 2 ... =IF(ROWS($1:1)< MATCH(0.01,H$2:H$10)+1,"",INDEX(X:X,ROWS($1:1)-MATCH(0.01,H$2:H$10)+1))
Excel VBA Index und Match-Funktionen
... abtastet, die ersten 10 Reihen von Col H.
Diese Formel sieht zum ersten kein Null-Wert in den Reihen von Col H Wenn diese Zeile gefunden wird, werden die Werte in Spalte X in Spalte AC ausgedruckt, so dass die Zeile in Spalte AC mit der Zeile mit dem ersten Wert ungleich Null in Spalte H übereinstimmt Sinn. Es funktioniert perfekt in Excel-Arbeitsblatt. Nun würde ich es in VBA-Code ändern möchte, ist hier, was ich habe ...
For i = 2 To lengthRows
With Application.WorksheetFunction
Range("AC" & i) = .IF(Rows(1) < .Match(0.01, Range("H2:H10")) + 1, "", .Index(Columns(24), Rows(1) - .Match(0.01, Range("H2:H10")) + 1))
End With
Next i
... Zeilen (1) ist die erste Zeile und Spalten (24) Col X.
Wenn ich den Code ausführen, erhalte ich einen Laufzeitfehler, der nicht übereinstimmt '13: Typ stimmt nicht überein.
ich zu verstehen versuche, wie diese vorherige Frage beantwortet wurde: Excel VBA: how to solve Index and Match function type mismatch error
Sie MATCH verwenden verwenden (0.01, H $ 2: H $ 10) ', es sucht nach Wert 0.01, nicht Werte, die keine Null sind, wenn eine Zelle gleich 0.2 ist, wird deine 'Übereinstimmung' sie nicht zurückgeben. Sie müssen Ihre 'Match' zu' MATCH (0,01, H $ 2: H $ 10, -1) '' ändern, der dritte Parameter ist gleich '-1' bedeutet, dass er nach Werten größer als' 0,01' sucht. –