Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1864to1868
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

Spalten Einträge aus Tabelle filtern

Spalten Einträge aus Tabelle filtern
05.01.2022 17:23:31
MExcel
Hallo liebe Community,
ich komme bei meiner Tabelle nicht weiter.
Zur Tabelle: In der obersten Zeile stehen die Produkte die hergestellt werden sollen. In der ersten Spalte sind die Produkte, die zur Herstellung benötigt werden. Ich möchtet nun eines der Produkte z.B. Äpfel suchen. Nun sollen alle Produkte, die zur Herstellung der Äpfel benötigt werden angezeigt werden, aber auch die Produkte, die zur Herstellung der benötigten Produkte benötigt werden.
Beim Beispiel Äpfel wären dass dann 3,1 Wasser (0,1 für die Samen und 3 für die Äpfel) und 1 Samen, die ausgegeben werden sollen. .
Userbild

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
echt jetzt?!
05.01.2022 17:26:30
Oberschlumpf
Hi,
wenn du in VBA wirklich gut bist, dann musst auch du wissen, dass Excel - nicht - ein Bildbearbeitungsprogramm ist.
Warum zeigst du eine Bilddatei?
Warum zeigst du nicht per Upload eine Excel-Bsp-Datei, die auch Bsp-Daten enthält, damit man dann damit testen kann...für dich
Ciao
Thorsten
AW: echt jetzt?!
05.01.2022 18:24:53
Marvin
Das Bild habe ich hochgeladen, weil ich mir die Tabelle abfotografiert habe um darüber nachzudenkenund den Rechner nicht dabei habe. Dachte, zur Erklärung wäre es hilfreicher.
Heute mittag war es nicht möglich die Datei hochzuladen. Ich schaue, dass ich nachher ein Beispiel fertig mache und hochlade.
Anzeige
AW: echt jetzt?!
05.01.2022 19:17:33
Yal
Hmm... wir müssen nicht, nur weil Hajo nicht mehr beiträgt, seinen nicht ganz liebenswerte Gewohnheiten übernehmen, und jede nicht ganz perfekt formulierte Fragestellung anmotzen.
Ja, ganz klar, eine Datei wäre besser als einen Screenshot. Man kann es aber freundlich-höflich anmerken.
VG
Yal
ok
06.01.2022 06:43:24
Oberschlumpf
...ich entschuldige mich, weil du recht hast!
OT
06.01.2022 08:05:39
Pierre
Das ist sicherlich Hajo, der sich Thorstens Nick geklaut hat ;-)
OT
06.01.2022 08:09:03
Pierre
Das ist sicherlich Hajo, der sich Thorstens Nick geklaut hat ;-)
AW: Spalten Einträge aus Tabelle filtern
05.01.2022 17:28:54
ChrisL
Hi
Ja, die Datei im xlsx-Format wäre sehr hilfreich.
Noch eine Frage dazu. Geht es immer nur über max. 2 Ebenen (z.B. Apfel - Samen) oder gibt es eine unbeschränkte Anzahl an Dimensionen (z.B. Futter - Getreide - Samen für Getreide - Erde - Kompost :)
cu
Chris
Anzeige
AW: Spalten Einträge aus Tabelle filtern
05.01.2022 18:20:24
ChrisL
noch ein paar Fragen...
Geht es hier vielleicht um ein Aufbauspiel und wenn ja welches? Für die bekannten Spiele gibt es i.d.R. gute Ressourcenrechner und man muss das Rad nicht neu erfinden. Oft spielen noch andere Faktoren wie Verfügbarkeit, Transportwege etc. mit rein, welche die Sache komplex machen.
Ist die Datenstruktur gegeben oder lässt sich diese bei Bedarf ändern? Vielleicht würde die Auflösung der Kreuztabelle die Auswertung vereinfachen.
Ändern sich die Werte oder sind sie statisch? Falls statisch, könnte man einfach mal einmalig alle Ressourcen durchrechnen und direkt das Ergebnis ausgeben ohne jedes mal einen "Algorithmus" laufen zu lassen.
Anzeige
AW: Spalten Einträge aus Tabelle filtern
05.01.2022 18:50:17
Marvin
Hier die Excel Tabelle.
Ja es kann mehrere Produkte zur Herstellung geben.
Ja es geht vorerst um ein Aufbauspiel, die Rezepte ändern sich nicht.
Ich habe schon viel danach gesucht, aber es gibt keinen vernünftigen Rechner.
Für den zweite Verwendungszweck möchte ich es auch für mich und meine Freundin nutzen.
Sie hat 36 Lebensmittel allergien und kann kaum etwas essen, weshalb wir alles selbst kochen und herstellen müssen. Um dann einen Überblick zu bekommen welche Zutaten man benötigt, bzw was man herstellen muss um dann ein Gericht kochen zu können.
https://www.herber.de/bbs/user/150179.xlsx
Anzeige
Frage ist noch offen
05.01.2022 19:23:15
Yal
Sorry, ich habe mit meiner Anmerkung den Aufrufzeichen wieder runtergesetzt.
Wieder hoch, Frage ist noch offen.
VG
Yal
AW: zumindest ich erkenne momentan nicht, ...
05.01.2022 20:03:39
neopa
Hallo Marvin,
... also nicht en Detail den Zusammenhang zwischen Deiner eingestellten Datei und Deinen Beispielangaben im Eröffnungsthread.
Vielleicht solltest Du Deine Datei mit ein paar mehr Daten ergänzen und dafür für zumindest ein, besser 2 Beispiele. das von Dir erwartete Ergebnis aufzeigen.
Gruß Werner
.. , - ...
AW: Spalten Einträge aus Tabelle filtern
06.01.2022 11:19:16
ChrisL
Hi
Siehe:
https://www.herber.de/bbs/user/150191.xlsx
Erstellt mit Power-Query d.h. bei Interesse Intro-Video anschauen und die Einzelschritte im Editor nachvollziehen. Bei Fragen melden.
Einschränkung: max. 10 Ebenen (ein paar Ebenen mehr würde es auch noch vertragen)
Die Idee mit obiger Lösung ist, dass der Output eine einmalig berechnete Datenbank (Rezeptbuch) darstellt d.h. die Neuberechnung muss nicht jedes mal neu gemacht werden. Den Output kannst du einfach filtern (vielleicht willst du auch mal die Zutaten für mehrere Rezepte gleichzeitig ermitteln), sortieren oder mit weiteren Features anreichern (z.B. SVERWEIS mit mehreren Suchresultaten, Spezialfilter, Pivot usw.).
Ein anderer Ansatz wäre eine "realtime" berechnete Lösung. Hierfür würde ich auf VBA setzen, wobei ich mich als Inspiration an der Codestruktur z.B. "Verzeichnis und Unterordner durchsuchen" orientieren würde. Ich sehe Ähnlichkeiten mit einer Ordnerhirarchie.
Mit einer fehlerhaften Quelldatendefinition kannst du übrigens eine Endlosschleife produzieren (z.B. Rezept Apfel benötigt Zutat Birne, Zutat Birne benötigt Zutat Apfel etc.). Insofern ist es vielleicht gar nicht schlecht, wenn die Anzahl Ebenen begrenzt ist.
Die beiden Ausgangslagen (Aufbauspiel und Rezepte) sind tatsächlich ähnlich. In den Feinheiten gibt es dann aber doch leichte Unterschiede. Während Aufbauspiele meist über viele Ebenen gehen (Produktionsketten etc.) gehen Rezepte eher in die Breite (viele unterschiedliche Zutaten, aber weniger Ebenen). Die Wahl des idealen Ansatzes (im Voraus berechnen, dafür grössere Datenmenge oder "realtime" berechnen über unbeschränkte Anzahl an Ebenen), hängt für mich ein wenig von dieser Ausgangslage ab. Auch wie du die Quelldaten aufbereitest. Bei z.B. 500 verschiedenen Zutaten erachte ich die manuelle Erfassung als Kreuztabelle recht umständlich, eine entpivotierte Datengrundlage wäre m.E. besser.
cu
Chris
Anzeige
AW: dazu nachgefragt ...
06.01.2022 15:25:45
neopa
Hallo Chris,
... weil mir an Hand Deiner PQ-Lösung nur schemenhaft "verständlich" geworden ist, was die Zielstellung von Marvin war.
Deine Ergebnisse mir zu erklären, ist mir leider nur einigermaßen für die "Zutaten": "Samen" und "Futter" gelungen.
Doch wenn ich versuche, mir Deine Ergebniswerte für die "Zutat": "Wasser" zu erklären, komme ich auf keinen grünen Zweig.
Kannst Du mir, wenn Du dazu Zeit findest, das bitte für die "Rezepte": "Zuckerrohr" und "Kaffeebohnen" (ohne PQ) etwas näher bringen?
Gruß Werner
.. , - ...
AW: dazu nachgefragt ...
06.01.2022 15:46:56
ChrisL
Hi Werner
Vielleicht kommt die Verwirrung davon, dass man zuerst die Spalte identifizieren muss (intuitiv würde ich eher die Zeile suchen).
Spalte Zuckerrohr (H:H) benötigt 1 Samen und 3 Wasser. Den Samen muss man also mit 3 Wasser giessen. Zur Herstellung des Samens (C:C) benötigt man wiederum 0,1 Wasser. Somit also Total 3,1 Wasser und 1 Samen für Zuckerrohr.
Vielleicht hilft es auch, wenn du den Stand der Hauptabfrage vor der Gruppierung betrachtest.
Womit ich mich rechnerisch etwas schwer tue ist, dass im Samen "versteckt" 0,1 Wasser enthalten sind, die 0,1 Wasser dann aber noch einmal als separate Wasser-Zutat aufgeführt sind. Also irgendwie doppelt, aber dennoch korrekt gemäss Aufgabenstellung :)
Ich hoffe dies hilft dir fürs Verständnis weiter.
cu
Chris
Anzeige
AW: jetzt ist es nachvollziehbar, ...
06.01.2022 17:33:17
neopa
Hallo Chris,
... in der von Marvin eingestellten Originaldatei gibt es in Zeile 8 keinen "Samen" und die dortigen Werte für Wasser in Zeile23 sind in Deiner Datei um eine Spalte nach links verschoben. Ich hatte dummerweise Deine PQ-Lösung in XL2016 mit den Daten in Marvins Tabelle, die ich parallel in Xl2010 noch offen hatte, verglichen (die Werte in Deiner Input-Tabelle sahen auf einen oberflächlichen Blick meinerseits ja auch wie die von Marvin aus. Habe aber dabei nicht den Versatz in Deiner Tabelle bemerkt).
Danke für Deine schnelle Rückantwort.
Gruß Werner
.. , - ...
was wäre ein geeigneter Suchbegriff?
06.01.2022 18:18:42
ChrisL
Hi Werner
ach so... ja die unterschiedlichen Quelldaten haben mich erst auch irritiert. Ich habe dann auch noch die Spalte Samen nachträglich eingefügt, so dass mehr Ebenen ins Spiel kommen.
Da du schon hier bist :)
Die Lösung, die 10 Ebenen/Abfragen einfach von Hand zu duplizieren, ist im Sinne einer einmaligen Aufbereitung der Daten zwar akzeptabel, aber dennoch ein wenig faul.
Hast du eine Idee, was ein passender Suchbegriff aus mathematischer Sicht ist? Meine Mathe-Ausbildung hat leider irgendwo bei Algebra aufgehört und mit fehlen die teils Grundlagen. Ich dachte erst an "Permutation", weil in VBA würde man wahrscheinlich die Funktion in der Funktion usw. aufrufen, worin ich Ähnlichkeiten mit der Aufgabe erkenne. Aber Permut kommt gemäss Wiki aus der Kombinatorik, was nicht ganz passt.
Ich glaube nämlich, man könnte in PQ eine Art von Schleife produzieren, aber ich habe keine Idee wie man eine Exit-Bedingung realisieren könnte. Insofern würde ich gerne mal Dr. Google befragen, aber mir fehlt die Idee für einen passenden Suchbegriff.
Eine PQ Endlosschleife bzw. Zirkelbezug habe ich übrigens mal produziert (Resultat-Tabelle als Quelldaten verwendet oder so ähnlich), dann kommt eine Fehlermeldung. Nicht ganz unerwartet, aber muss man ja auch mal austesten :)
cu
Chris
Anzeige
AW: ... da bin ich überfragt ...
06.01.2022 18:41:51
neopa
Hallo Chris,
... meine Mathekenntnisse sind leider äußerst rudimentär und die wenigen, die ich im Rahmen meiner Ing.-Ausbildung mal erworben hatte, liegen nunmehr schon über 5 Jahrzehnte brach und sind längst in Vergessenheit geraten. Meines Wissens hat WF Mathe studiert, der könnte Dir da möglicherweise eher raten.
Gruß Werner
.. , - ...
ok, danke trotzdem owT.
06.01.2022 18:46:15
ChrisL
.
AW: ... da bin ich überfragt ...
06.01.2022 21:48:30
Yal
Hallo Jungs,
auf der Sicht der Produktionsmanagement handelt es sich um eine mehrschichtige Stückliste oder mathematisch gesehen einen gewichteten Baum.
Im Sinne der Graphentheorie, musste man den Graph "traversieren" und dabei die Beziehungen (Menge) und die Gewichtung (Proportion oder Stückmenge) miteinander multiplizieren. Das einzige Problem ist, dass man den Baum nicht vom Wurzel hoch zu Blätter durchlaufen sondern umgekehrt, was unbedingt Teil der üblichen Graph-Algorithmen ist und bei Graph DB (oder zumindest neo4j) nicht out-of-the-box mitgeliefert. Manche Tricks sind jedoch -relativ- einfach: https://maxdemarzi.com/2017/11/17/bill-of-materials-in-neo4j/
Daher ist Ansatz mit PQ gar nicht falsch (gut gemacht :-)
In VBA müsste man Objekt-orientiert und mit Collection arbeiten. Ich habe schon mal versucht aber kein grossen Spass daran gefunden :-(
Das Thema "closed loop", wie z.B. Äpfel um eine Birne zu erzeugen und eine Birne um ein Äpfel zu erzeugen, ist bei Rezept oder bei Bauteile physikalisch nicht möglich. Aber Datentechnisch nicht ausgeschlossen (Vertippte Artikelnummer). Wie Murphy sagt: was schief gehen kann, wird schief gehen.
Hilft das?
VG
Yal
Anzeige
AW: ... da bin ich überfragt ...
07.01.2022 09:44:35
ChrisL
Hi Yal
Vielen Dank für deine Ausführungen. Jetzt weiss ich, in welcher Disziplin das Problem einzuordnen ist, was hilfreich ist.
Ich werde heute mal schauen, ob ich noch einen anderen PQ-Ansatz finde.
cu
Chris
AW: Spalten Einträge aus Tabelle filtern
06.01.2022 16:45:21
ChrisL
fast vergessen...
Hier noch kurz aufgezeigt, wie man mit den Daten weiterverfahren könnte. Über Pivot-Datenschnitt wählst du aus welche Rezepte (1:n) gekocht werden sollen und als Pivot erhältst du deine Shopping-Liste (ebenfalls aggregiert).
https://www.herber.de/bbs/user/150206.xlsx
cu
Chris
Anzeige
PQ Self-Join Loop mit Exit-Bedingung
07.01.2022 16:46:51
ChrisL
Hier eine neue Datei:
https://www.herber.de/bbs/user/150236.xlsx
@ Marvin
Das Ergebnis ist identisch mit der vorherigen Datei, jedoch ist die verwendete Technik ausgefeilter und die Obergrenze an möglichen Ebenen lässt sich individuell einstellen.
Wenn du versuchst die Power-Query nachzuvollziehen, ist die erste Dateiversion besser geeignet. Die neue Variante erfordert M-Code Programmierung und ist darum für Einsteiger weniger geeignet. Anwenden kannst du die Datei natürlich trotzdem.
Also lass dich vom nachfolgenden Code nicht beirren, damit brauchst du dich nicht auseinandersetzen.
@ all
Als Einstieg ins PQ-Loopen hat mir folgendes Video geholfen:
https://www.youtube.com/watch?v=T1q3BF5_YJ8
Exit-Bedingung:
1. currentLoop >= 20
Entspricht der "Notbremse" im Falle einer irrtümlich definierten Endlosschleife (Apfel-Birne, Birne-Apfel Thema). Die Zahl lässt sich natürlich anpassen.
2. List.NonNullCount(Table.Column(#"Erweiterte NeueSpalte","Zutat."&Number.ToText(currentLoop)))=0
Wenn der Join nur noch Null-Werte zurückgibt, wird ebenfalls ausgestiegen. Der Loop läuft also nur noch solange wie notwendig. Ich denke diese Neuerung ist spürbar.
Länger geknobelt habe ich u.a. an der Multiplikation der Mengen. Eigentlich eigentlich einfach =[Feld1]*[Feld2]
Allerdings kann man so keine Variablen benutzen. Lösung:
Record.Field(_, "Menge."&Number.ToText(loops))*Record.Field(_, "Menge."&Number.ToText(loops+1))
So sieht die PQ-Funktion letztlich aus:

(loops as number, tb as table) =>
let
Quelle = Quelldaten,
tb = if loops=0 then Quelle else tb,
#"Zusammengeführte Abfragen" = Table.NestedJoin(tb, {"Zutat."&Number.ToText(loops)}, Quelle, {"Rezept"}, "NeueSpalte", JoinKind.LeftOuter),
#"Erweiterte NeueSpalte" = Table.ExpandTableColumn(#"Zusammengeführte Abfragen", "NeueSpalte", {"Menge.0", "Zutat.0"}, {"Menge."&Number.ToText(loops+1), "Zutat."&Number.ToText(loops+1)}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Erweiterte NeueSpalte", "MengeMultipliziert", each Record.Field(_, "Menge."&Number.ToText(loops))*Record.Field(_, "Menge."&Number.ToText(loops+1))),
#"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte", {"Menge."&Number.ToText(loops+1)}),
#"Umbenannte Spalten" = Table.RenameColumns(#"Entfernte Spalten", {"MengeMultipliziert", "Menge."&Number.ToText(loops+1)}),
message = #"Umbenannte Spalten",
currentLoop = loops + 1,
output =
if currentLoop >= 20 or List.NonNullCount(Table.Column(#"Erweiterte NeueSpalte","Zutat."&Number.ToText(currentLoop)))=0 then message
else @#"fxLoop" (currentLoop, #"Umbenannte Spalten")
in
output

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige