das erste Mal, dass ich im Internet keine Beispiele finde, die mich zur Lösung meines Problems inspirieren. Dabei dürfte diese Aufgabenstellung nicht zu selten sein.
Vielleicht kann mir jemand auf die Sprünge helfen.
Ich habe eine Liste, in der der Qualifikationsstand eines Mitarbeiters (im Beispiel Personal-Nr. '12345') dokumentiert wird. Der Mitarbeiter ist an verschiedenen Arbeitsstationen (im Beispiel 'AA-Nr' = Arbeitsanweisungsnummer) geschult. Diese Arbeitsanweisungen haben einen Revisionsstand (Rev). Bei einem neuen Rev.-Stand muß der Mitarbeiter neu geschult werden, ansonsten nach einem vorgegebenen Requalifikationsintervall (z.B. alle 6 Monate). Der Tag der Schulung (Assessment) wird in Spalte Ass-Datum dokumentiert.
Die Beispiel-Datei ist nur ein Blatt aus einer Arbeitsmappe mit weiteren Blättern zur Verwaltung der Assessments.
Aufgabe: Finde in der Tabelle die Ergebnis-Punktzahl (Spalte F) für 3 Vorgabekriterien - 'AA-Nr.', 'Rev' und 'Ass-Datum
Die ensprechende Excel-Formel ist in Zelle Y8 abgelegt und funktioniert.
Jeder Mitarbeiter hat ein eigenes Blatt mit dessen Personal-Nummer als Blattnamen. Deshalb brauche ich diese Formel in VBA Code, da ich die Abfrage aus einem anderen Blatt heraus durchführen und die Indirekt Funktion vermeiden möchte.
Das ist meine Excel-Formel:
=INDEX(A3:V100;SUMMENPRODUKT((B3:B100=Y1)*(C3:C100=Y4)*(D3:D100=Y3)*ZEILE(D3:D100))-2;6)
und das mein Versuch für den VBA Code, welcher Fehlermeldungen bringt. ('PNR' ist eine Variable für den Blattnamen)
MsgBox Evaluate("=Index(" & PNR & "!A3:V100; SumProduct((" & PNR & "!B3:B100=" _
& PNR & "!Y20 & ")*(" & PNR & "!C3:C100=" & PNR & "!Z20 & ")*(" & PNR & "!D3:D100=" _
& PNR & "!AA20 & ")*(ROW(" & PNR & "!D3:D100)))-2;6)"
Gruß Frank
https://www.herber.de/bbs/user/113151.xlsx