Clever-Excel-Forum

Normale Version: Bedingte Zählung mittels VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe schon einiges abgesucht - Aber leider ohne Erfolg. 


Ich habe eine Tabelle mit einer Uhrzeit, Bauteilnummer, Anlage und ein Entscheid wie der Prozess abgeschlossen wurde. Das habe ich für ca. 10.000 Datensätze (immer ein Tag). Es gibt ca 20 verschiedene Anlagen. Ein Bauteil kann mehrmals an einer Anlage gewesen sein, beim ersten mal war es vll. ok beim zweiten mal ggf. nok. 
 Ich "will" jetzt eine Tabelle haben, in der aufgelistet ist, wie viele Bauteile OK bzw. NOK an der Anlage 1,2,3,4... war. Aktuell ziehe ich über die Datentabelle eine PIVOT. Somit erhalte ich z.B. zu einer Bauteilnummer das dass Bauteil 1 mal OK bzw. 1 NOK war. Die Anlage selektiere ich über die Filter. 
Mit einer Wenn Funktion lege ich fest, dass immer das schlechteste Ergebnis übernommen wird. (Was prinzipiell falsch ist, ich müsste auf die Uhrzeit gehen und das letzte Ergebnis nehmen.)
Das Vorgehen funktioniert auch soweit (außer das mit dem Faktor der Uhrzeit), bei 10.000 Datensätzen ist das aber Extrem langsam. Vorallem wenn ich noch weitere Berechnungen mache, wie z.B. die Schicht anhand der Uhrzeit zu errechnen. Des Weiteren brauche ich für jede Anlage eine neue Pivottabelle (?)
Gibt es da eine VBA Lösung? 
Ich habe es zwar geschafft die Bauteilnummern mit einem Skript zu durchlaufen und mit IF zu prüfen ob es auf der Anlage war, aber doppelte Meldungen (also ggf. NOK und im Anschluss OK) zählt er natürlich mit.
Bin in VBA "noch" nicht so bewandert.
Ein Beispiel mit meinem _skript_ habe ich angehangen.

Vielen Dank für eure Anregungen im voraus.
Hi
 
Du gibst uns einen Beispieldatensatz und ein Wunschergebnis. Wie diese beiden Zusammenhängen sollen erschließt sich mir nicht.
Ich versuch es mal mit Raten.
Hast du schon mal Versucht in der Pivot, dass was du in den Zeilen hast in die Spalten zu nehmen und umgekehrt?
 
Gruß Elex
Hallo,

das Tabellenblatt "Wunsch" besteht nicht aus Formeln und ich würde die aufgezeigte Rechnung mit der Pivottabelle gerne mit vba lösen.
Hi


Zitat:das Tabellenblatt "Wunsch" besteht nicht aus Formeln und ich würde die aufgezeigte Rechnung mit der Pivottabelle gerne mit vba lösen.
Das soll heisen das Blatt Wunsch ist gar nicht dein Wunsch?


Aber deine Pivot + Formellösung beschreibst du so.

Zitat:(Was prinzipiell falsch ist, ich müsste auf die Uhrzeit gehen und das letzte Ergebnis nehmen.)


Sorry, aber bevor mir nicht klar ist was nun eigentlich das richtig gewünschte Ergebnis ist kann ich nicht weiter helfen.

Gruß Elex
Ich versuchs nochmal zu beschreiben:

Die Pivottabelle ist mein aktuelles vorgehen. (Tabellenblatt: Aktuelles Vorgehen)
Ich summiere dann die NOK bzw. OK aus der Spalte Result und bekomme ein Ergebnis wie viele Bauteile OK / NOK auf einer Anlage waren.
 Wie du siehst, nehme ich das NOK Ergebnis an, auch wenn es vielleicht im Nachgang OK war.
Als Beispiel:

Ein Bauteil wird bearbeitet um 10:15Uhr, die Anlage meldet das es allerdings NOK war. Um 11:30 wird das Bauteil erneut an der gleichen Anlage bearbeitet. Dieses mal ist es OK. 
Mit der Pivot und der zugehörigen nebenstehenden Tabelle nehme ICH an, dass es NOK ist, weil ich immer das "schlechtere" Ergebnis nehme. Um das 100% richtig zu haben, müsste ich aber das OK nehmen, da der letzte Status ja OK war und nicht NOK. Bei mir ist der Faktor Zeit nicht mit berücksichtigt.

Mein Ziel ist es am Ende eine Tabelle zu haben (wie im Tabellenblatt "Wunsch"), wo ich die Summe der OK / NOK Bauteile je Anlage sehe. Mit der Pivottabelle mache ich das wie oben beschrieben mit der Summierung OK/ NOK. - Das klappt auch alles! (außer die Uhrzeit)
Da ich aber Insgesamt um die 75 Anlagen habe und 10.000 Bauteile wären das mehrere Pivottabellen. 

Ich würde jetzt gerne eine Lösung in VBA haben / schreiben die die Aufgaben der Pivottabelle, der Prüfung ob es OK / NOK ist und die Summierung übernimmt.
Hi
 
Ich hoffe das Problem und Wunsch jetzt verstanden zu haben.
VBA ist möglich aber doch einige Zeilen zu schreiben.
Ich denke es geht auch mit nur eine Pivot und eine Formel. Geschwindigkeit mal sehen. Evtl. in der Formel nicht die ganze Spalte als Bezug nehmen.
[attachment=35256]

Gruß Elex
Hallo,

TOP. Das sieht sehr gut aus. Aber wie bekommst du die Pivot so hin? Wenn ich alles in den Bereich : Zeilen ziehe, sieht das nicht so aus wie bei dir.
(Siehe Anhang)


Danke

Habs selber gefunden -> Pivot-Einstellungen waren mir in der Tiefe nicht bekannt. 
Ich werde morgen prüfen ob das so passt, sonst würde ich mich nochmal melden!

Ansonsten - Vielen lieben Dank!! :18:
Eine Pivottabelle ist normalerweise die schnellste Lösung.
Eine VBA Alternative wäre ggf. meine Funktion sbMinipivot:
https://berndplumhoff.gitbook.io/sulprob...bminipivot