
Ich habe ein MS Excel-Blatt mit 100 Namen in einer einzigen Spalte.
Auf einem anderen Blatt habe ich ein 10 x 10 Zellenraster, dem ich nach dem Zufallsprinzip einen Namen aus der Spalte zuweisen möchte.
Gibt es eine relativ einfache Möglichkeit, dies zu erreichen, oder ist dafür VBA-Arbeit erforderlich?
Antwort1
Dies kann mit einer Hilfsspalte erfolgen, die eine zufällige Ordnungszahl von 1 bis 100 erstellt. Mit Ihren Namen in A2:A101. In B2 geben Sie ein:
=AGGREGATE(15,7,ROW($1:$100)/(COUNTIFS($B$1:B1,ROW($1:$100))=0),RANDBETWEEN(1,100-COUNT($B$1:B1)))
Und nach unten kopieren.
Dadurch wird zufällig eine Zahl zwischen 1 und 100 ausgewählt, wobei das k im AGGREGATE ist RANDBETWEEN(1,100-COUNT($B$1:B1))
. Dabei COUNTIFS($B$1:B1,ROW($1:$100))=0
wird sichergestellt, dass wir keine Duplikate erhalten.
Dann verwenden wir INDEX/MATCH, um den Wert zu finden. Tragen Sie diesen in die obere rechte Ecke des Rasters ein:
=INDEX($A:$A,MATCH((ROW($A1)-1)*10+COLUMN(A$1),$B:$B,0))
Beim Hin- und Herziehen sucht es in der ersten Zeile nach 1-10 und in der zweiten nach 11-20 usw. Und da die Nachschlagespalte zufällig ist, wird sie zufällig sein.
Kopieren Sie dann 10 Zoll nach oben und 10 Zoll nach unten:
Wenn Sie Office 365 Excel haben, können Sie den INDEX/MATCH durch diese dynamische Version ersetzen, die die 10x10-Aufteilung automatisch übernimmt:
=INDEX(A:A,MATCH(SEQUENCE(10,10),B:B,0))
Antwort2
Angenommen, die Namen sind in Spalte A gespeichert:
- Wenden Sie in Spalte B die Formel an
=RAND()
- Kopieren Sie die resultierenden Werte und fügen Sie sie in Spalte B ein. Überschreiben Sie dabei die Formel
- Wenden Sie in Spalte C die Formel an
=RANK(B2, $B$2:$B$101)
. Auf diese Weise können Sie jedem Namen eine Nummer zwischen 1 und 100 zuweisen. - Fügen Sie über Ihrem 10x10-Raster die Zahlen 1-10 hinzu. Machen Sie dasselbe links von Ihrem 10x10-Raster. Diese dienen als Zeilen- und Spaltenüberschriften.
Angenommen, Ihre Zeilenüberschriften sind in ... E2:E11
und Ihre Spaltenüberschriften sind in F1:O1
...
- Geben Sie die Formel
=INDEX($A$2:$A$101, MATCH(($E2-1)*10+F$1, $C$2:$C$101,0))
in Zelle F2 ein und ziehen Sie sie über das 10x10-Raster