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

Problem Wertevergleich und Arraydurchlauf

Problem Wertevergleich und Arraydurchlauf
13.09.2017 17:40:50
Theophilix
Die Idee meines Codes: Es gibt 10 Helfer. Jeder Helfer (z.B. Name 1) muss zweimal hintereinander eine Aufgabe erledigen. Dabei soll ihm immer eine andere Person helfen. Jeder kommt einmal dran. (ganze Namensliste wird durchlaufen)
Helfer1: Helfer2 (Zielwerte!):
Name 1 Name 2
Name 1 Name 3
Name 2 Name 4
Name 2 Name 5
Name 3 Name 6
Name 3 Name 7
Name 4 Name 8
Name 4 Name 9
Name 5 Name 10
Name 5 Name 1
Name 6 Name 2
Name 6 Name 3
Name 7 Name 4
Name 7 Name 5
Name 8 Name 6
Name 8 Name 7
Name 9 Name 8
Name 9 Name 10
Name 10 Name 1
Name 10 Name 2
etc.
Array läuft durch bis 10, beginnt dann wieder bei Name 1. Helfer 1 und Helfer 2 dürfen sich nie überschneiden.
Code hier: https://www.herber.de/bbs/user/116225.xlsm
Der erste Teil (Spalte wo Helfer zweimal hintereinander drankommt) funktioniert. Mein Problem ist der Arrayüberlauf und das Problem mit dem Index ab 1
Ich freue mich über jede, auch einfachere Idee! Ggf. auch gegen kleine Vergütung (Kasten Bier oder so).
Noch ein Hinweis: Mein Array beginnt mit Index 1. Dort ist dann "Name 1" gepeichert.
Das Problem war die Random Funktion (siehe Makro). Habe es nicht hinbekommen, dass die mit Index 0 startet.
Grüße,
Theophilix

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachfrage
14.09.2017 10:51:14
Michael
Hallo!
Das Problem war die Random Funktion
Hab ich jetzt keine in Deinem Makro entdeckt. Was bezweckst Du genau, unabhängig von Deinem bisherigen Code?
Sollen die Namen für Helfer1 "gewürfelt" werden, oder wirklich vom ersten bis zum letzten Namen, jeweils 2x hintereinander, eingetragen werden? Wenn diese "gewürfelt" werden (also zB Name 10, Name 2, ...) sollen diese ebenso immer 2x direkt hintereinander vorkommen, oder soll auch das zufällig sein, bspw. Name10, Name2, Name5, Name10, Name7?
Und bei den Namen für Helfer2 ebenso: sollen die dann auch "gewürfelt" werden? Dürften die 2x direkt hintereinander vorkommen?
Interessant sind also alle Bedingungen, die für die fertige Liste gelten sollen (unabhängig vom bisherigen Code).
LG
Michael
Anzeige
AW: Nachfrage
14.09.2017 19:39:39
Theophilix
Vielen Dank für die Antworten!
Den ersten Teil des Codes (Die 10 Namen im Zweierpack auflisten) habe ich ja schon.
Ich brauche also nur ein Macro, das die 10 Namen (Array namens "ArrB", die Daten hole ich aus einer Liste) durchgeht, und dabei prüft, ob links (Helfer1) der Name schon steht. Wenn die 10 (oder besser: x) durch sind, beginne den Arraydurchlauf von vorn.
Beispiel:
Nimm die erste Zeile, vergleiche den ersten Eintrag Spalte "Helfer1" ("Name1") mit dem ersten Wert des Arrays (Hier: "Name1").
Wenn beide Werte identisch sind, nimm den nächsten Wert im Array (hier: "Name2") . Ansonsten schreibe den Array-Wert rein.
Wenn Array zu Ende, fange von vorne an.
Wenn alle Zeilen durch sind, beende Makro.
For Zeile to ZeileGesamt
If Wert = Wert then ArrayIndex+1
Else schreibe ArrayWert.
If ArrayIndex = Max then
ArrayIndex = 1
Ich habe mich mit der Random-Funktion getäuscht, sorry.
Danke für eure Hilfe. Ich vermute dass das ganze sehr einfach geht, komm nur nicht auf den Trichter.
Grüße,
Theophilix
Anzeige
Was ist mit Lupos Anmerkung?
15.09.2017 10:59:34
Michael
Theo?
Hast Du Dir über die Anmerkung von Lupo Gedanken gemacht, dass Du, unabhängig vom Code, ein logisches Problem in der Verteilung der HelferInnen hast? Gibt's dazu von Dir veränderte Parameter?
Denn wenn nicht, klappt das nicht - wie Lupo schon demonstriert hat.
LG
Michael
Dat löpt nich
14.09.2017 15:53:00
lupo1
Bei 10 Leuten hast Du einen fest und 9 Helfer aus seiner Sicht. Deren Anzahl müsste aber gerade sein, damit immer zwei andere dran kommen können. Denn der 9. Helfer hat keinen weiteren mehr zum Kombinieren.
Sonst vielleicht: Spalten B:C aus http://xxcl.de/0072.htm
Anzeige
AW: Dat löpt nich
15.09.2017 18:19:42
Theophilix
Hallo Lupo1,
du sagtest: "Denn der 9. Helfer hat keinen weiteren mehr zum Kombinieren."
Ich verstehe das logische Problem nicht. Es kann doch Name 9 (Spalte links) am 05.01 mit Name 8 und am 12.01 mit Name 10 zusammenarbeiten. Ich brauche zudem ein VBA-Macro zwecks Weiterverarbeitung und keine Formel...
Datum Helfer1 Helfer2 (Zielwerte!):
15.09.2017 Name 1 Name 2
22.09.2017 Name 1 Name 3
29.09.2017 Name 2 Name 4
06.10.2017 Name 2 Name 5
13.10.2017 Name 3 Name 6
20.10.2017 Name 3 Name 7
27.10.2017 Name 4 Name 8
03.11.2017 Name 4 Name 9
10.11.2017 Name 5 Name 10
17.11.2017 Name 5 Name 1
24.11.2017 Name 6 Name 2
01.12.2017 Name 6 Name 3
08.12.2017 Name 7 Name 4
15.12.2017 Name 7 Name 5
22.12.2017 Name 8 Name 6
29.12.2017 Name 8 Name 7
05.01.2018 Name 9 Name 8
12.01.2018 Name 9 Name 10
19.01.2018 Name 10 Name 1
26.01.2018 Name 10 Name 2
Anzeige
Dat löpt noch immer nich
18.09.2017 10:08:29
Michael
Hallo Theo!
So, wie Du es jetzt aufschlüsselst, kommt aber Name 2 insgesamt schon 3x dran... das wolltest Du doch nicht. Insofern ist Lupos aufgezeigtes Logik-Problem noch immer gültig, und kann nur gelöst werden, wenn sich Deine vorgegebenen Parameter ändern.
LG
Michael
AW: Dat löpt noch immer nich
19.09.2017 08:33:57
Theophilix
Hallo Michael,
da hast du natürlich recht. Es ist natürlich ungerecht, dass dann Name 9 insgesamt nur 3-Mal drankommt und Name2 insgesamt 5-Mal.
Ich hab mal hier die Zählung für jede Zeile aufgeführt: https://www.herber.de/bbs/user/116347.xlsx
Ich habe dazu eine Idee: Man könnte parallel ein zweites Array "eröffnen" und dort den Index des ersten Arrays (d.h. den Namen) notieren und die Häufigkeit der Verwendung. Dann darf nur der Name genommen werden, dessen Häufigkeit möglichst nahe bei 0 ist.
Wäre das eine Lösung?
Viele Grüße und danke,
Theo
Anzeige
AW: Dat löpt noch immer nich
19.09.2017 19:17:46
Theophilix
Eine Ergänzung: Bei 20 Personen wäre die Häufigkeit wie folgt:
Name 1 4
Name 2 5
Name 3 4
Name 4 4
Name 5 4
Name 6 4
Name 7 4
Name 8 4
Name 9 4
Name 10 4
Name 11 4
Name 12 4
Name 13 4
Name 14 4
Name 15 4
Name 16 4
Name 17 4
Name 18 4
Name 19 3
Name 20 4
Das heißt, immer der zweite (Name 2) und der vorletzte Wert (Name 19) wären auszugleichen. Jemand eine Idee, wie? Wenn sich das ganze über eine Random-Funktion lösen lässt, bin ich auch nicht traurig...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige