Quelle: https://www.herber.de/cgi-bin/eachthread.pl?idx=1988981
Stand: 23.08.2024 18:45
Idealerweise zitiere ich einmal den Eröffnungsbeitrag und gleich an dieser Stelle mein ab und zu einmal erwähnter Einwand: „Wer lesen kann, ist klar im Vorteil!“:
Hallo zusammenIch bin wieder mal auf eure Hilfe angewiesen.
Ich habe eine Liste mit mehreren Objekten. Einige Objekte haben mehrere Mieter. Ich möchte nun jedem Objekt den Mieter mit der höchsten Miete zuordnen. Wenn die Mieten alle gleich hoch sind soll ein „?” kommen. Kann mir bitte dafür jemand eine Formel entwerfen? Bitte beachtet die Beispieldatei.
https://www.herber.de/bbs/user/171770.xlsx
Herzlichen Dank!
Andreas
Da es in diesem Forum nicht immer ganz leicht ist, aus alte Beiträge zuzugreifen, können Sie mich um die oben verLinkte Datei bitten, ich sende Ihnen diese dann per E‑Mail zu.
Im Forum-Thread sind verschiedene Lösungsansätze aufgezeigt worden, hauptsächlich per PivotTable. Allerdings habe die Helfer den Satz „Wenn die Mieten alle gleich hoch sind soll ein „?” kommen.“ Versehentlich oder „geflissentlich“ überlesen. 😉 Und zugegeben, ich musste auch den einen oder anderen Anlauf machen, um das gewünschte Ergebnis zu erreichen. Hier zuerst ein Screenshot meiner Arbeitsumgebung und anschließend der M-Code für meine Interpretation des Wunsches:
Der Code für Tabelle1
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Objekt", Int64.Type}, {"Mieter", type text}, {"Miete", Int64.Type}}),
#"Hinzugefügter Index" = Table.AddIndexColumn(#"Geänderter Typ", "Index", 0, 1, Int64.Type)
in
#"Hinzugefügter Index"
Der Code für Tabelle1 (2)
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Objekt", Int64.Type}, {"Mieter", type text}, {"Miete", Int64.Type}}),
#"Hinzugefügter Index" = Table.AddIndexColumn(#"Geänderter Typ", "Index", 0, 1, Int64.Type),
// Maximum filtern
#"Gruppierte Zeilen" = Table.Group(#"Hinzugefügter Index", {"Objekt"}, {{"MaxMiete", each List.Max([Miete]), type nullable number}}),
#"Zusammengeführte Abfragen" = Table.NestedJoin(#"Gruppierte Zeilen", {"Objekt", "MaxMiete"}, Tabelle1, {"Objekt", "Miete"}, "Tabelle1", JoinKind.LeftOuter),
#"Erweiterte Tabelle1" = Table.ExpandTableColumn(#"Zusammengeführte Abfragen", "Tabelle1", {"Mieter", "Index"}, {"Mieter", "Index"}),
#"Sortierte Zeilen" = Table.Sort(#"Erweiterte Tabelle1",{{"Objekt", Order.Ascending}}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Sortierte Zeilen",{"Index"}),
#"Gruppierte Zeilen1" = Table.Group(#"Entfernte Spalten", {"Objekt"}, {{"Anzahl", each Table.RowCount(_), Int64.Type}, {"Mieter", each List.Max([Mieter]), type nullable text}}),
// Auf Basis der Anzahl: Mieter-Name oder Fragezeichen hinzufügen
#"Hinzugefügte bedingte Spalte" = Table.AddColumn(#"Gruppierte Zeilen1", "Benutzerdefiniert", each if [Anzahl] = 1 then [Mieter] else "?"),
#"Entfernte Spalten1" = Table.RemoveColumns(#"Hinzugefügte bedingte Spalte",{"Anzahl", "Mieter"}),
#"Umbenannte Spalten" = Table.RenameColumns(#"Entfernte Spalten1",{{"Benutzerdefiniert", "Zugeordneter Mieter"}})
in
#"Umbenannte Spalten"
Anhand der automatisch vergebenen Abfrage-Namen werden Sie erkennen, dass die zweite Abfrage eine per Duplizieren erzeugte Query ist, was auch die ersten identischen Zeilen erklärt. Hier mein Ergebnis, in Excel eingefügt:
Und hier, beim Stichwort last but not least finden Sie noch einen Hinweis, wo und wie Sie Antworten auf eventuelle Fragen oder auch die ausgearbeitete Datei bekommen können. Grundlegendes zum Thema M-Code lesen Sie hier im Blog nach.