Quelle: https://www.herber.de/cgi-bin/eachthread.pl?idx=1990575
Stand: 11.09.2024 13:00
Hier der Eröffnungsbeitrag aus dem Forum:
Hallo Helferkollegen,
ich stehe vor einem Problem und hoffe das die Spillformelexperten hier eine Lösung parat haben.
Problem: Ich will die doppelten Einträge in einer Liste finden und sie separat z.b. für ein Dropdown aufbereiten und dabei auf Hilfsspalten auf dem Blatt verzichten.
Alles was ich bisher ergooglen konnte ist immer nur auf die Entfernung/Markierung von doppelten Einträgen ausgelegt.
Ich suche aber eher das Gegenteil. Eine einzige Umsetzung wäre mittels Filter(bereich;nicht(Zählenwenn(andererBereich;bereich)))
zum Artikel https://www.pcwelt.de/article/2253480/excel-so-nutzen-sie-die-zahlenwenn-option-in-formeln.html
Mir ist aufgefallen das es einen Unterschied zu machen scheint ob man
den Spillbereich der abzuziehenden Werte direkt angibt
=ZÄHLENWENN(H3#;INDEX(E3#;;1)) ‘funktioniert
oder die Liste per Formel im Namensmanager erzeugt.
=ZÄHLENWENN(ListeEinmalige;INDEX(E3#;;1)) ‘funktioniert nicht
Warum funktioniert das nicht per Namensmanager?
Hat Jemand eine elegantere Lösung? Vorangig ohne Let oder Lamda.
https://www.herber.de/bbs/user/172132.xlsx
danke fürs Interesse und etwaige Lösungsansätze
rb
Bitte beachten Sie die hier beschriebene Besonderheit in Sachen des Herber-Forums.
Hmmm, trotz mehrmaligen Lesens der Beiträge bin ich mir nicht ganz sicher, welches Ergebnis seitens des Fragestellers angestrebt wird. Meine Interpretation ist diese: Es soll das Ergebnis aus den Spalten O:P generiert werden, allerdings auf eine „elegantere“ Art und Weise und ohne die LET() und LAMDA() – Funktionen.
Auf der Basis der gegebenen Muster-Tabelle habe ich mit diesem M-Code in zwei Power Query-Abfragen ein adäquates Ergebnis gefertigt:
(Der Code für die importierten Roh-Daten)
let Quelle = Excel.CurrentWorkbook(){[Name="Tabelle3"]}[Content], #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Liste von Stoffen", type text}, {"Name ", type text}}), #"Zusammengeführte Abfragen" = Table.NestedJoin(#"Geänderter Typ", {"Liste von Stoffen"}, #"Tabelle3 (2)", {"Liste von Stoffen"}, "Tabelle3 (2)", JoinKind.Inner), #"Entfernte Spalten" = Table.RemoveColumns(#"Zusammengeführte Abfragen",{"Tabelle3 (2)"}), #"Sortierte Zeilen" = Table.Sort(#"Entfernte Spalten",{{"Liste von Stoffen", Order.Ascending}}) in #"Sortierte Zeilen"
(Der Code für den Filter-Vorgang)
let Quelle = Excel.CurrentWorkbook(){[Name="Tabelle3"]}[Content], #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Liste von Stoffen", type text}, {"Name ", type text}}), // Ein ZÄHLENWENN() der 'Liste von Stoffen' in den Rohdaten #"Gruppierte Zeilen" = Table.Group(#"Geänderter Typ", {"Liste von Stoffen"}, {{"Anzahl", each Table.RowCount(_), Int64.Type}}), // Nur die mehrfachen Werte behalten #"Gefilterte Zeilen" = Table.SelectRows(#"Gruppierte Zeilen", each [Anzahl] > 1), // Muss nicht sein, ist IMHO aus der Sicht der "Datenhygiene" sinnvoll #"Entfernte Spalten" = Table.RemoveColumns(#"Gefilterte Zeilen",{"Anzahl"}) in #"Entfernte Spalten"
Noch ein Wort zum Thema „Eleganz“: Auf der einen Seite sage ich immer wieder, dass Eleganz auf den Laufsteg gehört und auf der anderen Seite finde ich es erheblich sinnvoller und auch „schöner“, wenn ein Code auch nach einem längeren Zeitraum noch gut nachvollziehbar ist, auch für Kolleginnen und Kollegen, welche ausreichende Basiskenntnisse in Power Query haben. Oder um es ganz deutlich zu sagen: Das Ganze in eine einzige Abfrage zu „quetschen“ mag aus der Sicht von manchen IT-Fans schick sein, hat aber mit Benutzerfreundlichkeit wenig zu tun.
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.