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

Formelkonzept optimierbar / evtl. VBA?

Formelkonzept optimierbar / evtl. VBA?
02.04.2020 17:05:20
erichm
Hallo,
ich habe insgesamt 3 Tabellen:
Tabelle Basis: Auflistung von 84 Abkürzungen in den Zellen A2 bis A85 (Abkürzungen aus Sortimentsteilen). Diese Abkürzungen bestehen immer aus zwei Zahlen und einem Buchstaben (A oder R). Von diesen Abkürzungen werden für diverse Auswertungen immer vier in einer Zelle zusammengefasst. Diese Zellen (sind immer zwölf Ziffern) stehen dann in unterschiedlicher Anzahl zwischen 500 und 1.000 zur Verfügung.
z.B.
01R03A05R22A
02A06A07R42A
Usw…
Aufgabe: diese Zellen müssen jetzt so nebeneinander in einer Zeile aufgelistet werden, dass immer 36 unterschiedliche Abkürzungen (01A, 02R, 04A …) pro Zeile enthalten sind. Dabei dürfen auch die ersten beiden Zahlen der Abkürzung nicht doppelt vorkommen.
Meine aktuelle Lösung (relativ aufwändig):
Tabelle Zufall: Auflistung der zusammengefassten Zellen (z.B. 01R03A05R22A) in Spalte A ab Zeile 2. Diese Auflistung wird nun per „Zufallsprinzip“ immer wieder in unterschiedlicher Reihenfolge untereinander aufgelistet (siehe Musterdatei Spalte S). Dann werden pro Zeile die einzelnen Abkürzungen wieder getrennt (siehe Spalten U bis X)
Tabelle quer: Hier wird die Auflistung von Tabelle Zufall aus den Spalten U bis X pro Zeile aufgelistet; also immer 36 Abkürzungen pro Zeile in den Spalten D bis AM der Tabelle quer. Dann werden „Hilfsspalten“ erstellt in BJ bis CS um zu prüfen, ob es bei den ersten beiden Zahlen in den Spalten D bis AM „doppelte“ gibt. Die unterschiedliche Anzahl wird in den Spalten BC bis BF ermittelt (für 24, 28, 32 und 36 Spalten).
Im Optimalfall ergeben sich quasi 36 unterschiedliche Abkürzungen in der Zeile. Da dies so gut wie nicht vorkommt, behelfe ich mir damit, dass zunächst die Zeilen herauskopiert werden, die in den ersten 24 Zellen auch 24 unterschiedliche Abkürzungen haben (das kommt öfters vor). Auf diesen Grundlagen (siehe Tabelle quer Zeilen 110 bis 114) werden dann durch x-malige Neuberechnungen irgendwann zunächst 28, dann 32 und dann 36 unterschiedliche Abkürzungen erreicht. Wenn diese „Zwischensteps“ jeweils erreicht wurden, werden die entsprechenden Formeln zu Werten kopiert.
In der Zeile 89 habe ich bereits ein endgültiges Ergebnis aufgelistet…..nach x-maligen Neuberechnungen.
Leider habe ich bisher keine Alternative gefunden, mit der ich die x-maligen Neuberechnungen vermeiden oder sogar verhindern könnte. Evtl. könnte hier auch VBA helfen (aber meine Kenntnisse sind nicht ausreichend).
Die Musterdatei (mit Office 365):
https://www.herber.de/bbs/user/136352.xlsx
Vielen Dank für eine Hilfe.
mfg

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: teilweise mE unklar ...
02.04.2020 18:52:05
neopa
Hallo Erich,
... nicht eindeutig ist so für mich momentan welche Bedingungen bei der Reihung der 36 unterschiedlichen Codierungen wirklich gelten. Denn diese wäre nur auf den Daten Deiner Basisdaten mit einer Formel relativ einfach zu ermitteln.
Aber wahrscheinlich willst Du das Listung aus den von Dir (wie auch immer erstellten "MIX"Daten in Zufall!A:A) vornehmen. Oder? Diese bestehen aber nicht als 12 sondern nur aus 8 Ziffern und 4 Buchstaben. Oder was meinst Du wirklich?
Wenn ich das von Dir als korrekt angegebenen Ergebnis der Zeile 89 analysiere, dann gibt es die Verkettung der Ergebnis-Daten nur teilweise in identischer Anordnung in den MIX"-Daten . So sind 1:1 vorhanden nur die Codierungs-Zusammenstellung der "Blocke" 0, 2,3 5 und 6 gemäß den Angaben in Zeile 87. Oder was ist mit den Angaben 87 und 88 genau gemeint?
Gruß Werner
.. , - ...
Anzeige
AW: teilweise mE unklar ...
02.04.2020 20:06:33
erichm
Hallo Werner,
also mit 12 Ziffern meinte ich 8 Zahlen (bzw. 4 x 2) und 4 Buchstaben.
Die fehlenden Blöcke 1, 4, 7 und 8 waren der Verkleinerung meiner Musterdatei geschuldet (wegen Dateigröße zum hochladen, da habe ich danach nicht mehr kontrolliert). Ich habe diese ergänzt und die Datei neu hochgeladen.
Die Zeilen 87 und 88 sind nur meine Hilfszeilen für die Formeln oberhalb.
Aber entscheidend ist wirklich das Listing in Spalte A der Tabelle Zufall. Dieses Listing wird immer wieder neu erstellt (importiert) und muss dann eben ausgewertet werden wie beschrieben. Insbesondere ist es wichtig, dass die verschiedenen Blöcke in der jeweiligen Kombination vorhanden sind.
Die Spalte A in der Tabelle Basis habe ich quasi nur als Zusatzinfo mitgegeben, welche Abkürzungen überhaupt vorkommen.
neue Datei (Office 365):
https://www.herber.de/bbs/user/136362.xlsx
Besten Dank!
mfg
Anzeige
AW: jetzt klarer jedoch noch nicht eindeutig ...
03.04.2020 15:08:32
neopa
Hallo Erich,
... nicht eindeutig ist, ob die in Deiner eingestellten Datei nun noch fehlenden 12er Blöcke in Zufall!A:A genau die 4x3er-Kombinationen sind, die momentan wegen der Dateigröße nicht gelistet sind und die wenn sie vorhanden sind, eine einfache Listung der 3er Blöcke mittels Formel ermöglichen würden. So fehlt momentan z.B. der 12er Block: 17.18.19.20. ("." steht für "A" oder "R") um eine solche Reihung mit Formel zu erzeugen.
Wenn diese jedoch vorhanden wäre, reicht es einfach die Spalte Zufall!A:A aufwärts zu sortieren und dann jeweiligen die 12er Blöcke nach den ersten zwei Zeichen aus der 4er Reihe also 01, 05, 09; ...) zu suchen und diese dann in vier 3er Blöcke nebeneinander und nacheinander aufzusplitten. Dazu reicht eine relativ einfache Formel.
Kannst Du nachvollziehen, was ich meine?
Gruß Werner
.. , - ...
Anzeige
AW: jetzt klarer jedoch noch nicht eindeutig ...
03.04.2020 15:34:27
erichm
Hallo Werner,
ich hatte bereits (mehrmals) daran gebastelt, die Spalte A zunächst aufsteigend zu sortieren und dann die Kombinationen zu ermitteln - bin aber immer wieder gescheitert.
Zu den fehlenden Blöcken wie 17.18.19.20. - das wird immer wieder vorkommen und sollte insofern nicht hinderlich sein. Wenn man eine Lösung mit der aufsteigenden Sortierung findet, dann würde hier vielleicht eine Fehlermeldung entstehen, die aussortiert wird.
Die Idee mit "vier 3er Blöcke nebeneinander und nacheinander aufzusplitten" habe ich noch nicht begriffen?
Ich habe die Musterdatei mit einer Tabelle aufsteigend erstellt und die jeweils ersten Reihen mit 01, 05, 09 farblich markiert. Aber dann......?
Musterdatei:
https://www.herber.de/bbs/user/136379.xlsx
Besten Dank - bin wieder gespannt.
mfg
Anzeige
AW: an Hand der neuen Beispieldaten ...
03.04.2020 17:11:53
neopa
Hallo Erich,
... kann ich erklären was ich meinte, da hier in aufsteigend!A:A alle notwendigen 12-Zeichen-Datenwerte für die leichte formelmäßige Ermittlung von Lösungsvarianten vorhanden ist.
Dazu:
in B2 schreibe folgende Formel:
=WECHSELN(WECHSELN(A2;"R";"A");"A";"_") und kopiere diese durch Doppelklick nach unten.
Nun sortiere Spalte A:B nach Spalte B aufwärts. Dann
Dann in C2: =WENN(C1="";A2;INDEX(A:A;VERGLEICH(TEXT(TEIL(C1;10;2)+1;"00")&"*";A:A;0)))
und kopiere diese ziehend bis C9
Danach in D2:
=TEIL(INDEX($C:$C;KÜRZEN(SPALTE()/4;)+1);1+REST(SPALTE();4)*3;3)
und diese ziehend nach rechts kopieren bis mindestens AI2
Damit hättest Du ein erstes Ergebnis.
Die Hilfsspaltenformel könnte man auch in die Formel D2 noch integrieren und dabei noch einbauen, dass bei Auflisting in Zeile 3 auch mit dem Wert aus A3 begonnen wird. Damit hättest Du im Beispiel schon relativ problemlos 5 ähnliche aber doch verschiedene Ergebnisvarianten. Und man dann noch anstelle der 01...04 Datenwerten mit dem Datenwert 05...08 beginnt weitere Varianten. Damit sollten also auch die bisher vorgegeben 9 angestrebten Ergebnisreihen kein all zu großes Problem sein
Darauf hab ich jetzt verzichtet, denn alle mögliche Ergebnisvarianten aufzulisten, ist mit Formeln sowieso nicht möglich. Mit VBA sollte das Auflisten vieler Ergebnisreihen auf jeden Fall leichter realisierbar sein.
Gruß Werner
.. , - ...
Anzeige
AW: an Hand der neuen Beispieldaten ...
03.04.2020 19:37:45
erichm
Hallo Werner,
das klappt, 9 Ergebnisreihen sind kein Problem.
Ich werde morgen noch ergänzend analysieren und melde mich dann nochmals.
Besten Dank.
mfg
AW: an Hand der neuen Beispieldaten ...
05.04.2020 22:49:19
erichm
Hallo Werner,
funktioniert sehr gut - habe jetzt auch eine VBA-Lösung erhalten, die schneller und effizienter ist.
Besten Dank!
mfg
AW: Formelkonzept optimierbar / evtl. VBA?
02.04.2020 19:53:20
Sulprobil
Hallo Erich,
ich schlage vor, dass Du dies mit VBA löst, im Tabellenblatt quer ist dafür ein Button (Ausgabe in grün):
https://www.herber.de/bbs/user/136360.xlsm
Diese Datei wird ohne jede Gewähr zur Verfügung gestellt, aber ich verwende einen aktuellen Virenscanner.
Die verwendete Funktion stammt vom meiner Homepage
http://sulprobil.com/Get_it_done/Controlling/Risk_Management/Random_Numbers/UniqRandInt/uniqrandint.html
Viele Grüße,
Bernd P
Anzeige
AW: Formelkonzept optimierbar / evtl. VBA?
02.04.2020 21:57:41
erichm
Hallo Bernd P,
danke für die schnelle Rückmeldung. Die Lösung passt aber leider noch nicht.
Evtl. war mein Hinweis nicht eindeutig:
Tabelle quer: Hier wird die Auflistung von Tabelle Zufall aus den Spalten U bis X pro Zeile aufgelistet
Das bedeutet, dass die Kombination von 4 Abkürzungen (z.B. 01R03A05R22A) immer erhalten bleiben muss.
Kann man das hier noch berücksichtigen?
Danke.
mfg
AW: Bitte minimalen Input zeigen
03.04.2020 17:36:15
Sulprobil
Hallo Erich,
Ich habe versucht, eine Lösung mit den minimal möglichen Daten zu erzeugen - wie immer ohne jede Gewähr:
https://www.herber.de/bbs/user/136386.xlsm
Du kannst sehen, dass für jede Eingabezeile sich in der Ausgabe die vier gegebenen Nummern mit A oder R angehängt wiederholen und dann weitere 32 Zufallszahlen zwischen 1 und 42 mit zufälligen A oder R dazukommen, ohne dass sich irgendeine Zahl in der Zeile wiederholt.
Ist dies was Du wolltest? Falls nicht, beschreibe bitte weitere notwendige Schritte oder Bedingungen.
Viele Grüße,
Bernd P
Anzeige
AW: Bitte minimalen Input zeigen
03.04.2020 19:54:37
erichm
Hallo Bernd P,
passt noch nicht ganz. Die ersten vier Spalten B bis E sind soweit i.O. da diese identisch mit Import Spalte A.
Das auffüllen mit Zufallszahlen hilft leider nicht, da auch das Auffüllen jeweils mit den Kombinationen der Spalte A von Import erfolgen muss.
Ich habe zum besseren Verständnis die Datei in der Tabelle Output ab Spalte AM ergänzt. Die jeweiligen Blöcke mit 4 Spalten sind farblich markiert und entsprechend zugehörig aus den Spalten ab B "aufsteigend" sortiert.
Ab Spalte CG wurden diese zu Kombinationen zusammengefasst und ab Spalte CS geprüft ob diese jeweils in der Spalte A von Import vorhanden sind. Wenn sich hier überall eine 1 als Ergebnis finden würde, wären alle Bedingungen erfüllt.
https://www.herber.de/bbs/user/136390.xlsm
Zeilen zum Teil gelöscht, damit die Datei nicht zu groß ist.
Vielen Dank nochmal.
mfg
Anzeige
AW: Neuer Versuch
04.04.2020 17:11:26
Sulprobil
Hallo Erich,
wenn ich Dich richtig verstanden habe (wie immer ohne Gewähr):
https://www.herber.de/bbs/user/136405.xlsm
Das Programm braucht etwa 10s für 15 Lösungen.
Wenn es für Dich in die richtige Richtung geht, kann ich es ggf. noch optimieren (oder korrigieren :-) ).
Viele Grüße,
Bernd P
Grandiose Lösung!!
05.04.2020 22:52:20
erichm
Hallo Bernd P,
vielen vielen Dank - das klappt hervorragend. Bin gerade dabei, den Code etwas zu verstehen (tue mich aber schwer).
Ich lasse noch verschiedene Berechnungen laufen um zu erkennen, ob kleine Änderungen noch hilfreich wären.
Melde mich nochmals.
mfg
Anzeige
AW: Mögliche Optimierungen
06.04.2020 17:00:36
Sulprobil
Hallo Erich,
Es würde helfen, wenn ich wüsste, wofür diese Suche gut sein soll.
Ein Fantasie-Spiel?
Im Moment geht das Programm simpel von oben nach unten durch, guckt ob 9 Einträge die 36 verschiedenen Nummern zeigen und nimmt dann alle 9 verwendeten Einträge aus dem Spiel.
Vielleicht willst Du aber etwas Anderes? Zum Beispiel für jeden der 751 Einträge eine 9 Eintragslösung?
Have fun,
Bernd P
AW: Mögliche Optimierungen
07.04.2020 09:05:53
erichm
Hallo Bernd P,
die „Aufgabenstellung“ kommt aus einem kleinen Projekt, das ich hier bereits mal beschrieben hatte:
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1607973#1608711
Mittlerweile haben sich natürlich einige Änderungen ergeben und ich entwickle den EXCEL-Teil weiter, wobei die Teilnehmeranzahl sich quasi auf 2 reduziert hat…. Nach einem (wenig optimistischen) Zwischenfazit für das Projekt vor einiger Zeit haben wir grundsätzlich den zeitlichen Aufwand reduziert. Mal sehen wie es weitergeht.
Nach Deiner tollen VBA-Lösung habe ich die Basisdaten hierzu nochmals überarbeitet. Dies hat dazu geführt, dass sich die Anzahl der Kombinationen (vier zusammengefasste Zellen mit 12 Zahlen/Buchstaben) nahezu verdoppeln lässt. Ich meine, dass der Code relativ schnell einige „9er-Kombinationen“ schnell findet und dann etwas länger braucht. Deswegen habe ich die Spalte A von Import immer wieder unterschiedlich (per Zufall) sortiert und laufen lassen (die Einstellung für die Anzahl der zu ermittelnden Ergebnisse habe ich im Code gefunden). Das geht dann ganz komfortabel im Vergleich zu meinem Formelaufwand.
Im weiteren Verlauf des Projektteils wird sich zeigen, wie viele Ergebnisse relevant / interessant / notwendig sind. Folgende Einschränkungen / Vorgaben habe ich aber bereits jetzt herausgefunden:
- mindestens 7 x „A“ oder „R“ in den 36 verschiedenen Nummern
- mindestens / maximal von x Zahlen aus y Zahlen; z.B. mindestens 3 von 01, 14,18, 21, 33 oder maximal 3 von 05, 09, 12, 37, 42
Aktuell kann ich das nach der Ermittlung der 9er-Kombinationen per Code problemlos im zweiten Schritt mit entsprechenden Formeln auswerten. Ich weiß nicht ob der Code evtl. schneller durchläuft wenn vorher solche Bedingungen (variabel) vorgegeben werden können, weil dann die Durchsuchung evtl. schneller geht?
Momentan habe ich auch keine Vorstellung, wieviele unterschiedliche 9er-Kombinationen aus der Spalte A von Import überhaupt möglich wären.
Insofern wäre derzeit eine Optimierung mit o.g. Einschränkungen / Vorgaben hilfreich – weiß aber nicht wieviel Aufwand da in der Code-Umsetzung nötig ist.
Vielen Dank für eine evtl. weitere Hilfe.
Mfg
AW: Mögliche Optimierungen
08.04.2020 13:51:11
erichm
Korrektur zu der Einschränkung x von y:
- mindestens / maximal von x Zahlen aus y Zahlen; z.B. mindestens 3 von 01,14,18, 21, 33 oder maximal 3 von 05, 09, 12, 37, 42
Hier müssen A oder R bereits berücksichtigt werden:
- mindestens / maximal von x Zahlen aus y Zahlen; z.B. mindestens 3 von 01A,14A,18R, 21A, 33R oder maximal 3 von 05R, 09A, 12R, 37A, 42R
mfg

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige