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

Pivot Filter mit UND-Verknüpfung/ VBA?

Pivot Filter mit UND-Verknüpfung/ VBA?
14.12.2020 17:04:30
Ursula
Hallo Zusammen,
ich habe eine recht große Excel Tabelle (ca 132.000 Zeilen und 7 Spalten).
Die relevanten Spalten lautet Auftragsnummer, Meldebetriebsmittel und Meldezeit.
Je Auftragsnummer gibt es mehrere Zeilen für mehrere Meldebetriebsmittel, denen dann jeweils eine Meldezeit zugeordnet ist.
Mich interessiert, wie viele Aufträge (Auftragsnummern) eine bestimmte Abfolge von Meldebetriebsmitteln haben und am besten noch wie viel Zeit dazwischen vergangen ist.
Bisher habe ich eine Pivot Tabelle erstellt, in der ich je Auftragsnummer die Meldebetriebsmittel mit den Zeiten sehen kann. In Anbetracht der Datenmenge möchte ich jetzt aber nicht manuell zählen wie häufig bestimmte Abfolgen vorkommen. Gibt es die Möglichkeit eines "erweiterten" Filters, der eine UND Verknüpfung beinhaltet und einem dann nur bestimmte Zeilen anzeigt, die man dann über eine Summe zählen könnte?
Oder muss man etwas in VBA schreiben? So eine Art For Each- Abfrage mit If- Schleifen (Ich weiß leider nicht, wie ich das so aufstellen, dass das Programm bei den vielen Zeilen nicht abstürzt)
Schon mal vielen Dank für Eure Hilfe!

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivot Filter mit UND-Verknüpfung/ VBA?
14.12.2020 18:37:03
ChrisL
Hi Ursula
Vielleicht fällt mir etwas ein, wenn du eine vereinfachte Beispieldatei ins Forum laden würdest. Tabelle1 die Ausgangslage (ein paar Zeilen mit Rohdaten) und Tabelle2 das gewünschte Resultat (von Hand ausgerechnet).
Wie gedenkst du deine Filterkriterien zu definieren? Gibt es eine separate Liste der Schrittfolgen, die du ausfiltern möchtest?
cu
Chris
AW: Pivot Filter mit UND-Verknüpfung/ VBA?
14.12.2020 20:14:54
Yal
Hallo Ursula,
deine Daten sind sauber in Spalten geordnet, das ist ein guter Anfang.
Das Problem ist, dass man nicht weißt, wieviel Meldebetriebsmittel (MBM) nach einander vorkommen sollen, die Du bewerten möchtest.
Wenn 2 bis 3 kannst Du mit Formel in Hilfespalten arbeiten, um die Nachfolge von je 2 Elemente hervorzuheben:
= SVERWEIS(A1 & A2; ListeVonVerketteteA1A2; 2; 0)
dann erweiterte Filter. Ist bei 132k Datensätze etwas schwerfällig.
Ansonstens kommst Du kaum ums VBA. Da brauchen wir, wie ChrisL sagt, eine verkürzte, bei Bedarf verfremdete Beispiel.
Mein Tipp wäre Graph DB, wie z.B. Neo4j. :-)
VG Yal
Anzeige
AW: Pivot Filter mit UND-Verknüpfung/ VBA?
15.12.2020 08:29:06
ChrisL
Hi
Die Aufgabe lässt viel Interpretationsspielraum offen, aber ich dachte eher an eine Power-Query Lösung anstelle von VBA:
https://www.herber.de/bbs/user/142322.xlsx
Auf dieser Basis liessen sich weitere Kennzahlen ermitteln z.B. durchschnittliche Dauer etc. (Gruppierung/Aggregation).
cu
Chris
AW: Pivot Filter mit UND-Verknüpfung/ VBA?
15.12.2020 08:55:15
Ursula
Schon einmal vielen Dank für eure Antworten!
Hier ein (sehr kleines) Beispiel: https://www.herber.de/bbs/user/142324.xlsx
Schlussendlich besteht meine Aufgabe darin, Materialflüsse zu verfolgen. Die Power- Query Lösung sieht schon sehr vielversprechend aus. Wie stelle ich das denn auf? Damit habe ich bisher leider gar keine Erfahrung.
Anzeige
AW: Pivot Filter mit UND-Verknüpfung/ VBA?
15.12.2020 10:23:36
Yal
Hallo Ursula,
oha, Produktionslogistik. Materialfluss mit Ziel Optimierung der Transferzeiten, Bestände oder Maschinenauslastung?
Für deine Aufgabe würde ich alle MBM auf einer Buchstabe reduzieren, dann bilden sich ABCD-Ketten.
Verchiedene Auswertung sind dann denkbar:
Übersicht: Anzahl Kette pro Länge, wie lang ist die Durchschnittliche Kette, ...
Pro Kettenlänge, die Top 5 bis Top 10 (je nach Relevanz) nach Menge. Daraus Anteil, Min & max Dauer, Durchschnittsdauer, Varianz (Zwischen A-Start und D-Ende von ABCD).
Differenzierung kann da gemacht werden zwischen kompletter Kette und Ketten-Untermenge: ABC und BCD sind auch in ABCD vorhanden, aber wenn es um Gruppierung von Produktionsmittel geht, ist es sinnvoll diese Häufung ausfindig zu machen.
Schwierig wird, wenn man aus den Zeiten eine Aussage machen möchte, um die gegenseitige Beeinflussung zu entdecken: CD könnte schneller sein, wenn AD nicht dazwischen kommt...
Also jede Menge Spass!
Du kommst kaum darum, dein Daten mit VBA oder irgendeine andere ProgSprache umzuformen. Also Data Engineering. Power Query wird schnell nicht ausreichen, vor allem wenn Du dich einarbeiten muss, lieber die Zeit in VBA oder Python investieren. Excel wäre zuerst als Auswertungswerkzeug nicht verkehrt. Danach geht es Richtung Python, R, und andere Advance Analytics Werkzeuge.
Graph Datenbanken und Graph Algorythmen sind für solche Problemstellung sehr hilfreich.
Willkommen in die Welt der Data Scientist!
Viel Erfolg
Yal
Anzeige
AW: Pivot Filter mit UND-Verknüpfung/ VBA?
15.12.2020 11:37:26
ChrisL
Hi
Hier wird die Anzahl ermittelt:
https://www.herber.de/bbs/user/142330.xlsx
Das optionale Thema mit der Dauer, hatte ich vom Prinzip her schon in der anderen Mappe gelöst.
Mit Power-Query müsstest du dich erstmal ein wenig selber beschäftigen und entsprechende Videos/Tutorials anschauen. Die notwendigen Einzelschritte sollten sich danach anhand der Beispieldatei gut nachvollziehen lassen. Wenn du mit einem bestimmten Schritt nicht klarkommst, kannst du dich gerne mit konkreten Fragen melden.
cu
Chris
AW: Pivot Filter mit UND-Verknüpfung/ VBA?
15.12.2020 15:32:09
Yal
Hallo Ursula,
manche "Knobelaufgabe" lassen einem keine Ruhe.
Ich habe die MBM-Ketten zusammengebracht ("Voll"), auch als Unterteil ("Part") und das Dauer errechnet. Darauf kann man eine Pivottabelle aufbauen. Basis ist die letzte Datei von ChrisL.
Die paar Beispiel-Einträge lassen nicht viel raus. Aber bei 132k sollte auch grafische Bewertungen machbar sein.
Userbild
https://www.herber.de/bbs/user/142348.xlsm
Eine Rückmeldung wäre gut.
Viel Erfolg
Yal
Anzeige
AW: Pivot Filter mit UND-Verknüpfung/ VBA?
16.12.2020 08:59:01
Ursula
Hi Chris und hi Yal,
mit Power- Query komme ich jetzt zumindest soweit klar, dass ich verstehe, wie ihr das Problem gelöst habt. Vielen Dank dafür, ich glaube mit der von Yal weiterentwickelten Version komme ich soweit sehr gut klar.
Dazu eine Frage: Wie hast du die Tabelle 11 (auf der die Pivot- Übersicht beruht) erstellt? Kann man sich das so direkt ausgeben lassen? Auch die Berechnung der Dauer konnte ich zumindest anhand des Power- Query Editors nicht nachvollziehen.
Beste Grüße,
Ursula
AW: Pivot Filter mit UND-Verknüpfung/ VBA?
16.12.2020 09:25:54
Ursula
Mir ist gerade aufgefallen, dass Tabelle 11 scheinbar durch ein Makro entsteht. Ich schaue mir das dann mal an und kann es hoffentlich auf meine große Datei anwenden.
Vielen Dank Euch!
Anzeige
Vielen Dank für die Rückmeldung.
16.12.2020 10:35:57
Yal
Hallo ursula,
ich hatte ein etwa verschachtelte Programmierung mit Klassen und Objekt, obwohl es gar nicht notwendig ist.
hier eine etwa -Coding-technisch- leichtere Version, vielleicht leichter zu verstehen:
https://www.herber.de/bbs/user/142360.xlsm
Viel Erfolg
Yal
AW: Vielen Dank für die Rückmeldung.
16.12.2020 13:24:49
Ursula
Hallo Yal,
ich habe das alles soweit übertragen und versucht auf meine Excel Liste anzupassen. Ich bekomme nun an dieser Stelle den Fehler "zu wenig Speicher"
Sub Clustering_eigen()
Set wQ = ThisWorkbook.Worksheets("Original")
Set wZ = ThisWorkbook.Worksheets.Add
wZ.Cells(1, 1) = "Typ"
wZ.Cells(1, 2) = "Länge"
wZ.Cells(1, 3) = "AuftrNr"
wZ.Cells(1, 4) = "M-Kette"
wZ.Cells(1, 5) = "Dauer (s)"
Set Tbl = wQ.ListObjects("Tabelle3")
Sortiere wQ, Tbl.Name, "Meldezeit"
Sortiere wQ, Tbl.Name, "Auftrag*ProNo*Sch"
ReDim MBMListe(0)
ReDim ZeitListe(0)
For Each R In Tbl.ListRows
Sammeln
Next
End Sub
Kann ich noch irgendetwas machen, außer die Liste in kleinere Bereiche zu zerlegen?
Beste Grüße,
Ursula
Anzeige
AW: Vielen Dank für die Rückmeldung.
16.12.2020 15:42:58
Yal
Hallo Ursula,
es kann sein, dass diese aktive Tabelle zu viel Speicher vereinnehmt.
Hier ein Version ohne. Die PQ-Afragen und Tabelle von ChrisL habe ich auch rausgenommen, da sie zu der aktuelle Lösungsweg nicht beitragen.
Screenupdating wird temporär ausgeschaltet, s'koschtet z'viel.
Eventuell müsste man den Ausgang in einem CSV umlenken...
https://www.herber.de/bbs/user/142372.xlsm
VG Yal
AW: Vielen Dank für die Rückmeldung.
17.12.2020 09:04:38
Ursula
Hi Yal,
ich befürchte, dass ich gerade daran scheitere den Code auf meine Liste anzuwenden. Er läuft irgendwie nicht durch.
Ich habe die Input- Tabelle (Tabelle3) auf dem Blatt "Original". Sie hat die Spalten Zeit(A), Auftrag(B) und MBM(C). Es sind 126520 Zeilen (inkl. Überschriften).
Muss ich noch eine Spalte mit den aneinandergereihten MBM hinzufügen? Wenn ja, war das über eine der vorangehenden Power- Query Abfragen möglich?
Vielen Dank,
Ursula
Anzeige
AW: Vielen Dank für die Rückmeldung.
17.12.2020 11:14:47
Yal
Hallo Ursula,
nein, wenn Du die MBM verkettest, dann hast Du nur eine Kette pro Auftragsnummer. Dann müsstest Du nach Auftragsnummer verdichten (Duplikate entfernen), aber dann sind die Zeiten nicht mehr verwendbar.
Meine Lösungsweg verwendet keine PQ.
Alternativ ist, Excel originale Liste lesen und Ergebnisse in eine oder mehrere CSV ablegen.
Vielleicht habe ich heute Mittag Zeit, ein solche Lösung anzuschauen.
VG Yal
AW: Vielen Dank für die Rückmeldung.
17.12.2020 13:20:25
Ursula
Hallo Yal,
tatsächlich hat es gerade doch noch funktioniert. Das einzige Manko ist, dass ich ein Problem mit Duplikaten bekommen habe.
Ich habe nun die Auftragsspalte über eine Textverkette- Funktion gefüllt und nun wird die resultierende Tabelle wieder nicht ausgefüllt. Kann das an dem eingegebenen Datentyp liegen?
Beste Grüße,
Ursula
Anzeige
AW: Vielen Dank für die Rückmeldung.
17.12.2020 15:36:10
Yal
Äh? Sorry, ich kann die lezte Beschreibung nicht zuordnen.
Kannst Du eine originale Datei, beschränkt auf ca. 100 Einträge hochladen (es darf nicht größer sein als 300kb) und beschreiben, was Du mit Duplikate und verkettete Auftragsnummer meinst?
VG Yal
AW: Vielen Dank für die Rückmeldung.
18.12.2020 08:54:11
Ursula
Hallo Yal,
lass mich das aufgetretene Problem noch einmal anders beschreiben.
Das Makro funktioniert und läuft durch meine gesamte Tabelle. Es kommt jedoch dazu, dass sehr lange Ketten von MBM auftreten, die so logisch betrachtet nicht auftreten können und meines Erachtens auch nicht in der Datengrundlage vorhanden sind. Auffällig ist dabei auch, dass negative Dauern auftreten.
Ich habe versucht dies darzustellen, leider kann ich nicht nachvollziehen bei welchen Aufträgen die großen Verkettungen auftreten.
In diesem (originalen) Beispiel ist zumindest einmal eine negative Dauer vorhanden, welche hier allerdings durch einen Fehler in den Daten zu erklären ist.
https://www.herber.de/bbs/user/142411.xlsm
Ich weiß nicht genug, wie das Makro funktioniert, aber ich könnte bestimmte MBM nennen, die die Verkettung beenden sollten, falls das eine mögliche Bedingung wäre.
Vielen Dank, Ursula
Anzeige
Carriage Return ;-)
18.12.2020 12:11:11
Yal
Hallo Ursula,
negative Zeitspanne sollte es nicht geben, da wir davor dagegen eine Sortierung machen. Die Sortierung ist wohl anders zu steuern, wenn darunter eine aktive Tabelle (ListObject) liegt. Wusste ich nicht. Neue Code ist angepasst und tolerant, egal ob ListObject unterliegt odernicht.
Wo wir "sparen" können:
bis jetzt dröseln wir alle Aufträge runter bis zu zweier Folge, spricht aus einem 5er ergibt sich 2 4er, 3 3er, 4 2er (immer länge*(länge+1)/2 )
Wir könnten bei 3 oder 4 aufhören. Aber da -zumindest in deinem Beispiel- alles 4er oder 3er MBM-Kette sind, würde nicht vie übrig bleiben.
Die zu lange Kette könnte man "rauswerfen": in "Abstellen", wenn die gespeicherte Ketten-"Voll"-Länge (lngTotal) grösser als x, einfach nichts abstellen. Der gesamte Auftrag wird ignoriert.
Am Beispiel mit Ketten grösser als 8:
(Achtung: diese Beschränkung ist in der beigefügten Version vorhanden! Ich habe vergessen, es wieder rauszumachen)
    '[...]
LngTotal = UBound(MBMListe) + 1
If LngTotal > 8 Then Exit Sub
For Lng = LngTotal To 2 Step -1
Es gibt auch einige Übergang Benteler I zu Benteler I, die bis zu 2 Sek Zeitabstand haben. Ich gehe davon aus, dass diese zweier nicht Aussage-relevant sind. Man könnte die zweiten in der Quelle löschen.
https://www.herber.de/bbs/user/142418.xlsm
Zum Thema Coding-Verstsändnis: ja, es ist leider der Punkt, der Dir das Leben schwer machen wird. Aber mit der Basis, die hier vorliegt, kommst Du schon ziemlich weit.
Man kann sich in der Programmierung Schritt für Schritt einarbeiten, in dem einfache Task unter Marko Recorder aufgenommen werden und dann den Code lesen. Die Anfangsschwierigkeiten -die gibt es überall- verschwinden schnell.
Viel Erfolg
Yal
AW: Carriage Return ;-)
21.12.2020 12:06:02
Ursula
Hi Yal,
jetzt läuft es perfekt. Vielen Dank, dass du so geduldig warst. Vielleicht schaffe ich es ja auch mal irgendwann besser mit diesen erweiterten Funktionen von Excel klarzukommen.
Beste Grüße,
Ursula

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige