DANKE - das klappt!
Jetzt habe ich festgestellt, dass ich bei der Schleife noch einen Denkfehler hatte. Die muss ich noch anpassen; Grundlage, Ziel:
i58.tinypic.com/1iz9jd.jpg
Es geht darum, dass die Werte der Bestandsdaten A mit den Werten der Prüfdaten B wie folgt verglichen werden:
Zeile 2 mit Zeile 2
Zeile 2 mit Zeile 3
Zeile 2 mit Zeile 4
usw....
--> das Ergebnis kommt in Spalte V ab Zeile 2
dann
Zeile 3 mit Zeile 2
Zeile 3 mit Zeile 3
Zeile 3 mit Zeile 4
usw....
--> das Ergebnis kommt in Spalte W ab Zeile 2
Und diese muss ich jetzt für viele Zeilen (ca. 5.300) nach unten fortschreiben; ebenso nach rechts die Spalten (ca. 200).
Der Einfachheit halber, habe ich Bestandsdaten A und Prüfdaten B in der gleichen Tabelle; in der Endfassung sind dann Prüfdaten B in einer anderen Tabelle wie Bestandsdaten A (in dieser Tabelle werden auch die Ergebnisse eingetragen). Aber das müsste dann anpassbar sein.
Aus Ressourcengründen kann ich keine Matrixformel mit ZÄHLENWENN verwenden; die habe ich in dem Beispiel zur Ermittlung der richtigen Ergebnisse benutzt.
Aktuell sieht mein Code so aus:
Public Sub testzählen2()
Dim lzeilenzaehler As Integer, lspaltenzaehler As Integer, i As Integer
Dim ispalteformel As Integer, iSpalteBeginn As Integer, iSpalteEnde As Integer
Dim strSpalteBeginn As String, strSpalteEnde As String
lzeilenzaehler = 2
ispalteformel = 22
iSpalteBeginn = 1
iSpalteEnde = 12
strSpalteBeginn = 1
strSpalteEnde = 12
strSpalteBeginn = Left(Cells(1, iSpalteBeginn).Address(True, False), _
InStr(Cells(1, iSpalteBeginn).Address(True, False), "$") - 1)
strSpalteEnde = Left(Cells(1, iSpalteEnde).Address(True, False), _
InStr(Cells(1, iSpalteEnde).Address(True, False), "$") - 1)
For lzeilenzaehler = 2 To 10
Cells(lzeilenzaehler, ispalteformel) = WorksheetFunction.CountIf(Range(Cells(lzeilenzaehler, iSpalteBeginn), Cells(lzeilenzaehler, iSpalteEnde)), Range("O2").Value) + _
WorksheetFunction.CountIf(Range(Cells(lzeilenzaehler, iSpalteBeginn), Cells(lzeilenzaehler, iSpalteEnde)), Range("P2").Value) + _
WorksheetFunction.CountIf(Range(Cells(lzeilenzaehler, iSpalteBeginn), Cells(lzeilenzaehler, iSpalteEnde)), Range("Q2").Value) + _
WorksheetFunction.CountIf(Range(Cells(lzeilenzaehler, iSpalteBeginn), Cells(lzeilenzaehler, iSpalteEnde)), Range("R2").Value) + _
WorksheetFunction.CountIf(Range(Cells(lzeilenzaehler, iSpalteBeginn), Cells(lzeilenzaehler, iSpalteEnde)), Range("S2").Value) + _
WorksheetFunction.CountIf(Range(Cells(lzeilenzaehler, iSpalteBeginn), Cells(lzeilenzaehler, iSpalteEnde)), Range("T2").Value)
Next
End Sub
Das Makro rechnet jetzt natürlich falsch, weil die beiden "Variablen"
lzeilenzaehler
Range("O2").Value usw.
angepasst werden müssen. Aber da reichen meine VBA-Kenntnisse nicht mehr.
Besten Dank für eine weitere Hilfe!
mfg
excel2