(Forum) PQ: 1 Tabelle mit 2 inhaltlichen Bereichen, numerische Auswertung in Kreuztabelle

Quelle:  https://www.office-hilfe.com/support/threads/auszaehlen-nach-mehreren-kriterien-mit-oder.59395/
Stand: 05.11.2024 02:30

Hier der Eröff­nungs­beitrag aus dem Forum:


[Screen­shot der Tabelle]

Liebe Excel-Com­mu­ni­ty, danke vor­ab für Hil­fe bei diesem Fall:

In mein­er Aus­gangsta­belle (siehe Screen­shot A) wird für eine Rei­he von Pro­jek­tanträ­gen (Spalte A) jew­eils aufge­lis­tet, welchen Dis­z­plinen der Pro­jek­tantrag zuge­ord­net ist (Spal­ten B bis F) und von welchen Part­neruni­ver­sitäten er einge­bracht wurde (Spal­ten G bis I).

Nun suche ich eine Formel, die mir aus­rech­net, an wievie­len Anträ­gen mit der Diszi­plinen-Zuord­nung „X” eine bes­timmte Uni­ver­sität „Y” ins­ge­samt beteiligt war (also über alle Pro­jek­tanträge zusam­men­gerech­net). Beispiel: die Uni­ver­sität Frank­furt ist an ins­ge­samt 3 Pro­jek­tanträ­gen beteiligt, die (auss­chließlich oder unter anderem) die Diszi­plinen­zuord­nung „Poli­tik­wis­senschaft” haben. Sie ist ana­log dazu an 3 Pro­jek­tanträ­gen mit der Zuord­nung „Geschichte” beteiligt, an 4 mit „VWL”, an 2 mit „Sozi­olo­gie” und an 2 mit „BWL”. Gegen­beispiel: die Uni Berlin ist nur an 1 Pro­jek­tantrag mit der Diszi­plin „BWL” beteiligt.

Ich möchte das in ein­er Ergeb­nista­belle darstellen, und zwar für jede Uni­ver­sität und alle Diszi­plinen aus­gerech­net (siehe Screen­shot B). Beispiel: in Zelle B2 der Ergeb­nista­belle soll eine Formel ste­hen, die in der Aus­gangsta­belle alle Zeilen zählt, die SOWOHL „Uni­ver­sität Frankurt” enthal­ten (egal, ob in der Spalte G, H oder I) ALS AUCH „Poli­tik­wis­senschaft” (egal ob in Spalte B, C, D, E oder F). In Zelle C2 soll eine Formel ste­hen, die das Ganze für die Uni Frank­furt und die Diszi­plin „Geschichte” auszählt, usw. usf.

Wie die Aus­gangsta­belle zeigt, kann es sowohl vorkom­men, dass einem Pro­jek­tantrag weniger als 5 Diszi­plinen zugerech­net sind (es gibt also leere Felder) als auch, dass eine Uni­ver­sität bei ein­er bes­timmten Diszi­plin gar keine Beteili­gung (das Ergeb­nis also „0” laut­en muss…)

DANKE VORAB und liebe Grüße!

P.S.: Arbeite mit MS Office 2021]


Hin­weis: In Beitrag #3 hat der Fragesteller diese *.xlsx zum Down­load ange­boten. 🤩

Apro­pos „Kreuzta­belle“: Auch die Quell­dat­en liegen als Kreuzta­belle vor; allein das ist ja schon ein Grund, dass eine direk­te Auswer­tung per Piv­ot­Table nicht denkbar ist. Meine Lösung ist ein­ma­lig mit etwas mehr Aufwand ver­bun­den, dafür aber recht trans­par­ent und vor allen Din­gen auss­chließlich per Mausklicks, ohne eine einzige händisch eingegebene Formel bzw. Funk­tion zu ver­wen­den.

Im End­ef­fekt soll für 11 Pro­jek­tanträge berech­net wer­den, welche der 8 erfassten Uni­ver­sitäten wie viele der 5 aufge­führten Diszi­plinen ange­boten wer­den (beteiligt sind). Da für mich aus der (etwas frag­men­tarischen) Muster­lö­sung keine (logis­che) Rang­folge erkennbar ist, habe ich die Rei­hen­folge PQ über­lassen. Mit ein­er weit­eren Abfrage kann via Start | Kom­binieren eine Wun­sch-Rei­hen­folge deklar­i­ert wer­den.

Ich arbeite mit 3 Abfra­gen (Queries), wobei die Roh­dat­en (Raw­Da­ta) und die Diszi­plinen als Nur Verbindung gespe­ichert sind, nur die Abfrage mit den Part­ner-Unis (Ergeb­nis) wird direkt an die Ziel­po­si­tion geschrieben. – Hier nun meine 3 M‑Codeblöcke:

Raw­Da­ta

let
    Quelle = Excel.CurrentWorkbook(){[Name="RawData"]}[Content],
    #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Projektantrag", type text}, {"Disziplin 1", type text}, {"Disziplin 2", type text}, {"Disziplin 3", type text}, {"Disziplin 4", type text}, {"Disziplin 5", type text}, {"Partner 1", type text}, {"Partner 2", type text}, {"Partner 3", type text}})
in
    #"Geänderter Typ"

Diszi­plinen

let
    Quelle = RawData,
    #"Entfernte Spalten" = Table.RemoveColumns(Quelle,{"Partner 1", "Partner 2", "Partner 3"}),
    #"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(#"Entfernte Spalten", {"Projektantrag"}, "Attribut", "Wert"),
    // Die Spalte 'Attribut' wird hier nicht mehr gebraucht
    #"Entfernte Spalten1" = Table.RemoveColumns(#"Entpivotierte andere Spalten",{"Attribut"})
in
    #"Entfernte Spalten1"

Auswer­tung

let
    Quelle = RawData,
    #"Entfernte Spalten" = Table.RemoveColumns(Quelle,{"Disziplin 1", "Disziplin 2", "Disziplin 3", "Disziplin 4", "Disziplin 5"}),
    #"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(#"Entfernte Spalten", {"Projektantrag"}, "Attribut", "Wert"),
    #"Entfernte Spalten1" = Table.RemoveColumns(#"Entpivotierte andere Spalten",{"Attribut"}),
    #"Zusammengeführte Abfragen" = Table.NestedJoin(#"Entfernte Spalten1", {"Projektantrag"}, Disziplinen, {"Projektantrag"}, "Disziplinen", JoinKind.LeftOuter),
    #"Erweiterte Disziplinen" = Table.ExpandTableColumn(#"Zusammengeführte Abfragen", "Disziplinen", {"Wert"}, {"Wert.1"}),
    #"Gruppierte Zeilen" = Table.Group(#"Erweiterte Disziplinen", {"Wert", "Wert.1"}, {{"Anzahl", each Table.RowCount(_), Int64.Type}}),
    #"Pivotierte Spalte" = Table.Pivot(#"Gruppierte Zeilen", List.Distinct(#"Gruppierte Zeilen"[Wert.1]), "Wert.1", "Anzahl", List.Sum),
    #"Umbenannte Spalten" = Table.RenameColumns(#"Pivotierte Spalte",{{"Wert", "Hochschule"}})
in
    #"Umbenannte Spalten"

Bleibt noch der Hin­weis, dass ich die bei­den Queries Diszi­plinen und Auswer­tung per Ver­weis erstellt/verknüpft habe (darum ist die erste Zeile (nach dem let) des jweili­gen M-Codes auch Quelle = Raw­Da­ta).


Und hier, beim Stich­wort last but not least find­en Sie noch einen Hin­weis, wo und wie Sie Antworten auf eventuelle Fra­gen oder auch die aus­gear­beit­ete Datei bekom­men kön­nen. Grundle­gen­des zum The­ma M-Code lesen Sie hier im Blog nach.

Dieser Beitrag wurde unter Allgemein, Verschiedenes, Daten zusammenführen, Entpivotieren, Foren-Q&A, Join-Art, Kreuztabelle, Power Query, Transponieren abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.