
Guten Tag an eine tolle Community,
Ich versuche, ein Makro zu entwickeln, das zwei Arrays durchläuft. Hier ist ein Beispiel für die Datenstruktur:
Rohdaten finden Sie in C4:C1500
$-Daten befinden sich in D4:D1500
Teilweise aus Rohdaten entnommene Zeichenfolgenwerte befinden sich in E4:E13.
Die Kategorien, in denen die Rohdaten organisiert werden, befinden sich in F4:F13
Unten ist die Formel, die ich als Proof of Concept zusammengestellt habe.
=WENN(SVERWEIS(" * "&E4&" * ",$C$4:$C$1500,1,0)=FEHLER.TYP(#N/A),"Recherche",SVERWEIS(" * "&E4&" * ",$E$4:$F$13,2,0))
Dies funktioniert Zeile für Zeile und nur bis zum Ende der kurzen Listen (ohne eine massive verschachtelte Anweisung zu schreiben). Ich versuche, die Teil- und Kategoriewerte durch die Rohdaten zu schleifen, um die Daten dann nach Kategorie und $ zu analysieren.
Beispiel: Sheet1
Reihe | Spalte C (C4:C1500) | Spalte D (D4:D1500) | Spalte E (E4:E13) | Spalte F (F4:F13) |
---|---|---|---|---|
3 | Rohdaten | $ | Teildaten | Kategorie |
4 | 210324Verkauf.BobParr.UT | 785,54 | Abonnieren | Verkäufe |
5 | ABCDEF.210324.SalesHelenParr.TN | 214,46 | HelenParr | Verkäufe |
6 | DashParr.WY.RR.210324 | 238,56 | DashParr | Forschung |
7 | Mgmt.NY.JackJackParr.210324 | 1.200,00 | JackJackParr | Management |
Blatt 2:
Reihen | Spalte B (B4:B13) | Spalte C (C4:C13) |
---|---|---|
3 | Kategorie | Gesamtsumme $ |
4 | Verkäufe | 1.000,00 |
5 | Forschung | 238,56 |
6 | Management | 1.200,00 |
Von dort aus führe ich eine weitere SVERWEIS-Funktion aus, um die in Tabelle 2 gefundenen Ausgaben zu summieren.
Ich bin für alle Vorschläge zur Bereinigung der Testformel offen und für jede Unterstützung mit VBA dankbar.
Danke schön.
Richard VO
Antwort1
Ich sehe keine Notwendigkeit, VBA zu verwenden. Wenn Sie Excel 365 haben, können Sie die Funktionen FILTER, CHOOSECOLS und SUM kombinieren, um die gewünschten Ergebnisse zu erhalten. Passen Sie die folgende Formel an:
=SUM(CHOOSECOLS(FILTER(Sheet1!$C$2:$F$5,Sheet1!$F$2:$F$5=Sheet2!$B3),{2}))
Verringern Sie die Formel, um die anderen Zellen auszufüllen.