Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1844to1848
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeile mit mehreren Einträgen vergleichen

Zeile mit mehreren Einträgen vergleichen
19.08.2021 08:54:54
Tristan
Hallo liebe Forumsgemeinde
Ich habe dank eurem Forum bereits sehr viel lernen können, doch jetzt bin ich komplett am Anschlag.
Zu meinem Problem:
Ich habe in mehreren Excel-Dateien mehrere Tabellenblätter und auf diesen Blätter sind viele Artiel vorhanden. Es kommt aber immer wieder vor, dass derselbe Artikel auf mehreren Blätter wie auch in Dateien vorkommt (derselbe Artikel kann bis zu acht mal Verwendung finden).
Jeder dieser Artikel muss von verschiedenen Abteilungen beurteilt werden.
In diesen Abteilungen kann es vorkommen, dass eine Person z.B. Dateien 1-5 bearbeitet und der nächste 6-10. Aus diesem Grund ist teilweise dasselbe Material nicht gleich beurteilt (ist in der Tabelle mit (Leer) oder unterschiedlichen Einträgen zu erkennen).
Ich habe ein Makro erstellt, welches mir aus den gesamten Dateien, alle Materialien inkl. Beurteilungstand ausliest und auflistet.
Aber dies ist leider, obwohl untereinander aufgelistet, irgendwann nicht mehr übersichtlich (die Tabelle hat rund 2000 Zeilen)
Aus diesem Grund wende ich mich an euch. Gibt es hier eine Möglichkeit, dass wenn der gleiche Artikel nicht gleich durchbeurteilt ist dieser markiert wird oder irgendwie gekennzeichnet wird.
Ich habe bereits, ebenfalls über ein Makro, immer eine Zwischenzeile einfügen lassen, sobald wenn ein anderer Artikel kommt. Aber hier kommt mein Excel irgendwann an den Anschlag und dann kann ich nur noch den Prozess beenden und muss nochmals von vorne anfangen...
Eine Beispieldatei habe ich euch angehängt und hoffe ihr kommt aus meiner Beschreibung schlau, ansonsten einfach melden. Ich bin dankbar für jede Rückmeldung!
Viele Grüsse Tristan
https://www.herber.de/bbs/user/147700.xlsx

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile mit mehreren Einträgen vergleichen
19.08.2021 13:04:58
ChrisL
Hi Tristan
Spalten F:P markieren, bedingte Formatierung, Formel ist:

=ZÄHLENWENN($A:$A;$A1)ZÄHLENWENNS($A:$A;$A1;F:F;F1)
cu
Chris
oT: nachgefragt ...
19.08.2021 13:24:53
neopa
Hallo Chris,
... kennst Du Dir bitte mal den thread: https://www.herber.de/forum/archiv/1840to1844/1843800_Daten_nebneinander_zuordnen.html anschauen.
Siehst Du eine Möglichkeit eine ("Standard-")PQ-Lösung so zu definieren, dass diese auch dann noch ein korrektes Ergebnis liefert, wenn nachträglich Daten zu der auszuwertenden Liste ergänzt werden? Mein Lösungsansatz ergibt lediglich ein korrektes Ergebnis für die Datenbeispielstruktur. Bei meiner reinen Formellösung hab ich das Problem nicht.
Wenn Tristian (hoffentlich) nichts dagegen hat, kannst Du mir auch hier antworten. Danke schon vorab.
Gruß Werner
.. , - ...
Anzeige
AW: oT: nachgefragt ...
19.08.2021 14:31:14
Tristan
Vielen vielen Dank Chris!
Es funktioniert :-)
Ich habe viel zu weit gesucht ...
@Werner, ich habe absolut nichts dagegen ;-)
Viele Grüsse
Tristan
AW: oT: nachgefragt ...
19.08.2021 18:26:32
ChrisL
Hi Werner
Vielleicht hiermit:

let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Gruppierte Zeilen" = Table.Group(Quelle, {"abteilung"}, {{"TB alle", each _, type table}}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Gruppierte Zeilen", "code", each [TB alle][code]),
#"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte",{"TB alle"}),
#"Extrahierte Werte" = Table.TransformColumns(#"Entfernte Spalten", {"code", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
#"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Extrahierte Werte", "code", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"code.1", "code.2", "code.3", "code.4"})
in
#"Spalte nach Trennzeichen teilen"
"code.4" habe ich manuell hinzugefügt, im Sinne eines Platzhalters falls mal ein paar Spalten mehr benötigt würden. Mit zusätzlich einmal entpivotieren und danach wieder pivotieren könnte man überflüssige Spalten noch weg machen. Diese als möglicher Ansatz (was mir grad eingefallen ist, ohne Anspruch auf Perfektion).

let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Gruppierte Zeilen" = Table.Group(Quelle, {"abteilung"}, {{"TB alle", each _, type table}}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Gruppierte Zeilen", "code", each [TB alle][code]),
#"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte",{"TB alle"}),
#"Extrahierte Werte" = Table.TransformColumns(#"Entfernte Spalten", {"code", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
#"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Extrahierte Werte", "code", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"code.1", "code.2", "code.3", "code.4"}),
#"Entpivotierte Spalten" = Table.UnpivotOtherColumns(#"Spalte nach Trennzeichen teilen", {"abteilung"}, "Attribut", "Wert"),
#"Pivotierte Spalte" = Table.Pivot(#"Entpivotierte Spalten", List.Distinct(#"Entpivotierte Spalten"[Attribut]), "Attribut", "abteilung")
in
#"Pivotierte Spalte"
cu
Chris
Anzeige
AW: danke, wieder was gelernt, doch ...
19.08.2021 19:42:09
neopa
Hallo Chris,
... für das was der TE im anderen thread anstrebt, ist es so wohl noch nicht ganz ausreichend. Er schrieb im Nachgang es könnten bis zu 3000 Code-Elemente für eine Abt. werden. Wenn in der Quelldatenliste aber zunächst z.B. nur 2000 vorhanden sind, würde die notwendige händische Ergänzung wohl kaum machbar sein.
Solltest Du noch eine Idee haben, wie man die entscheidende Aufsplittung in PQ automatisieren kann, wäre ich daran natürlich noch interessiert. Aber ich hab auch so schon wieder von Dir gelernt. :-)
Das Erzeugen einer Listfeldspalte war mir bisher noch nicht "untergekommen". Diese vereinfacht meinen bisherigen Lösungsansatz natürlich erheblich. Danke.
Gruß Werner
.. , - ...
Anzeige
AW: danke, wieder was gelernt, doch ...
20.08.2021 11:52:14
ChrisL
Hi Werner
Gerne...
Ich frage mich, wer sich durch 2000 Spalten scrollen will, aber egal. Hier eine hübsche Lösung:

let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Sortierte Zeilen" = Table.Sort(Quelle,{{"abteilung", Order.Ascending}, {"code", Order.Ascending}}),
#"Gruppierte Zeilen" = Table.Group(#"Sortierte Zeilen", {"abteilung"}, {{"alle", each _, type table}}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Gruppierte Zeilen", "Benutzerdefiniert", each Table.AddIndexColumn([alle], "Index", 1, 1)),
#"Erweiterte Benutzerdefiniert" = Table.ExpandTableColumn(#"Hinzugefügte benutzerdefinierte Spalte", "Benutzerdefiniert", {"code", "Index"}, {"Benutzerdefiniert.code", "Benutzerdefiniert.Index"}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Erweiterte Benutzerdefiniert",{"alle"}),
#"Pivotierte Spalte" = Table.Pivot(Table.TransformColumnTypes(#"Entfernte Spalten", {{"Benutzerdefiniert.Index", type text}}, "de-DE"), List.Distinct(Table.TransformColumnTypes(#"Entfernte Spalten", {{"Benutzerdefiniert.Index", type text}}, "de-DE")[Benutzerdefiniert.Index]), "Benutzerdefiniert.Index", "Benutzerdefiniert.code")
in
#"Pivotierte Spalte"
cu
Chris
Anzeige
AW: damit wieder eine Funktionalität ...
20.08.2021 13:20:50
neopa
Hallo Chris,
... dazugelernt. Noch dazu eine, die man möglicherweise universell gebrauchen kann. Vielen Dank!
Eine horizontale Ergebnisauswertung hatte mich auch gestört. Aber auf meine diesbzgl. Rückfrage hatte ich vom TE keine Antwort erhalten.
In/mit PQ hatte ich mir deshalb schon vor Tagen eine Änderung ausgedacht, die ich jetzt einfach an Deinen eingestellten M-Code zur horizontalen Auswertung ergänzt habe. So ganz zufrieden bin ich damit zwar noch nicht (bei nachträglichen Entfernungen/Änderungen in der Quelldatenliste wird manchmal nicht sauber für alle Abteilungen gelistet). Aber prinzipiell scheint es zu funktionieren. So lässt sich das nun vertikale Ergebnislisting bei tausenden Codes je Abt. mE besser nutzen.

let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Sortierte Zeilen" = Table.Sort(Quelle,{{"abteilung", Order.Ascending}, {"code", Order.Ascending}}),
#"Gruppierte Zeilen" = Table.Group(#"Sortierte Zeilen", {"abteilung"}, {{"alle", each _, type table}}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Gruppierte Zeilen", "Benutzerdefiniert", each Table.AddIndexColumn([alle], "Index", 1, 1)),
#"Erweiterte Benutzerdefiniert" = Table.ExpandTableColumn(#"Hinzugefügte benutzerdefinierte Spalte", "Benutzerdefiniert", {"code", "Index"}, {"Benutzerdefiniert.code", "Benutzerdefiniert.Index"}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Erweiterte Benutzerdefiniert",{"alle"}),
#"Pivotierte Spalte" = Table.Pivot(Table.TransformColumnTypes(#"Entfernte Spalten", {{"Benutzerdefiniert.Index", type text}}, "de-DE"), List.Distinct(Table.TransformColumnTypes(#"Entfernte Spalten", {{"Benutzerdefiniert.Index", type text}}, "de-DE")[Benutzerdefiniert.Index]), "Benutzerdefiniert.Index", "Benutzerdefiniert.code"),
#"Geänderter Typ" = Table.TransformColumnTypes(#"Pivotierte Spalte",{{"abteilung", type text}}),
#"Hinzugefügte benutzerdefinierte Spalte1" = Table.AddColumn(#"Geänderter Typ", "Abt.", each "Abt. "&[abteilung]),
#"Neu angeordnete Spalten1" = Table.ReorderColumns(#"Hinzugefügte benutzerdefinierte Spalte1",{"abteilung", "Abt.", "1", "2", "3", "4", "5"}),
#"Entfernte Spalten1" = Table.RemoveColumns(#"Neu angeordnete Spalten1",{"abteilung"}),
#"Transponierte Tabelle" = Table.Transpose(#"Entfernte Spalten1"),
#"Höher gestufte Header" = Table.PromoteHeaders(#"Transponierte Tabelle", [PromoteAllScalars=true])
in
#"Höher gestufte Header"
Gruß Werner
.. , - ...
Anzeige
AW: im Nachgang noch eingefallen ...
20.08.2021 13:38:47
neopa
Hallo Chris,
... warum erst horizontal auswerten und dies transformieren, wenn man direkt vertikal auswerten kann.
Auf Basis Deiner Vorarbeit sieht dies jetzt bei mir so aus:

let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Sortierte Zeilen" = Table.Sort(Quelle,{{"abteilung", Order.Ascending}, {"code", Order.Ascending}}),
#"Gruppierte Zeilen" = Table.Group(#"Sortierte Zeilen", {"abteilung"}, {{"alle", each _, type table [code=text, abteilung=number]}}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Gruppierte Zeilen", "Benutzerdefiniert", each Table.AddIndexColumn([alle], "Index", 1, 1)),
#"Erweiterte Benutzerdefiniert" = Table.ExpandTableColumn(#"Hinzugefügte benutzerdefinierte Spalte", "Benutzerdefiniert", {"code", "Index"}, {"Benutzerdefiniert.code", "Benutzerdefiniert.Index"}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Erweiterte Benutzerdefiniert",{"alle"}),
#"Geänderter Typ" = Table.TransformColumnTypes(#"Entfernte Spalten",{{"abteilung", type text}}),
#"Hinzugefügte benutzerdefinierte Spalte1" = Table.AddColumn(#"Geänderter Typ", "ABt.", each "Abt. "&[abteilung]),
#"Entfernte Spalten1" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte1",{"abteilung"}),
#"Pivotierte Spalte" = Table.Pivot(#"Entfernte Spalten1", List.Distinct(#"Entfernte Spalten1"[#"ABt."]), "ABt.", "Benutzerdefiniert.code"),
#"Entfernte Spalten2" = Table.RemoveColumns(#"Pivotierte Spalte",{"Benutzerdefiniert.Index"})
in
#"Entfernte Spalten2"
Gruß Werner
.. , - ...
Anzeige
AW: im Nachgang noch eingefallen ...
20.08.2021 14:31:42
ChrisL
Hi Werner
Danke für die Rückmeldung. Als transponierte Lösung ist dein Vorschlag sicherlich gut.
Die Darstellung als Kreuztabelle finde ich ganz generell ungeeignet, wenn man es nicht mehr "manuell durchlesen" kann d.h. alles was nicht auf 1-2 Seiten Platz hat, würde ich so nicht darstellen. Auch wenn es nicht hübsch aussieht, aber die Darstellung gemäss Rohdaten lässt sich ideal auswerten z.B. Filter, welche Abteilungen verwenden ein bestimmtes Produkt, aber auch Filter auf eine bestimmte Abteilung. Mit der Kreuztabellendarstellung kann man immer nur entweder oder.
Aber eben, war ja nicht deine Idee und bei einem Verhältnis von wenig Abteilungen zu vielen Produkten würde ich es auch eher kippen.
cu und ein schönes WE
Chris
Anzeige
AW: bzgl. des Nutzeffektes sehe ich es wie Du ...
20.08.2021 15:20:52
neopa
Hallo Chris,
... doch das ist Angelegenheit des TE/User. Mir wichtig war und ist, dass ich dank Deiner Hilfe meine PQ-Kenntnisse wieder um zwei Funktionalitäten erweitern konnte.
Gruß Werner
.. , - ...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige