Zufällige Namen auswählen (Microsoft Excel)
Eine häufige Aufgabe für viele Menschen ist es, eine Reihe von zufälligen Namen aus einer großen Liste auszuwählen. Beispielsweise führen Sie möglicherweise einen Wettbewerb für Ihre Community durch und haben 1.000 Personen, die sich angemeldet haben. Mit ihren Namen in jeder Zeile einer Tabelle fragen Sie sich möglicherweise, wie Sie eine bestimmte Anzahl der Namen zufällig auswählen können.
Wie so oft bei Excel gibt es verschiedene Ansätze. Bei jedem in diesem Tipp untersuchten Ansatz wird davon ausgegangen, dass die Namen, aus denen Sie auswählen müssen, in den Zellen A1 bis A1000 aufgeführt sind.
Natürlich kann Ihr Namensbereich kürzer oder länger sein, aber der Punkt ist, dass sie sich in zusammenhängenden Zellen in Spalte A befinden. In den Beispielen wird auch davon ausgegangen, dass Sie 15 Namen zufällig aus der Liste auswählen müssen.
Der erste Ansatz ist die Verwendung der INDEX-Funktion. Geben Sie die folgende Formel in die Zellen B1 ein: B15:
=INDEX(A:A,INT((RAND()*1000)+1),1)
Eine ähnliche Formel verwendet die OFFSET-Funktion:
=OFFSET($A$1,ROUNDUP(RAND()*1000,0),0,1,1)
Es ist möglich, aber nicht wahrscheinlich, dass Sie in der resultierenden Liste zweimal denselben Namen erhalten. (Die Unwahrscheinlichkeit ist auf die Größe der ursprünglichen Liste zurückzuführen. Je größer die Liste, desto weniger wahrscheinlich sind Duplikate in der extrahierten Liste.) Wenn Sie einen doppelten Namen erhalten, erzwingen Sie einfach eine Neuberechnung Ihres Arbeitsblatts, indem Sie F9 drücken . Bei jeder Neuberechnung wird die Liste der extrahierten Namen neu generiert.
Ein weiterer möglicher Ansatz erfordert die Verwendung mehrerer Spalten. Befolgen Sie einfach diese Schritte:
-
Geben Sie in Zelle B1 = RAND () ein.
-
Geben Sie die folgende Formel in Zelle C1 ein:
-
Wählen Sie den Bereich B1: C1 und füllen Sie ihn bis zur Zeile 1000 aus.
-
Wählen Sie den Bereich B1: C1000.
-
Drücken Sie Strg + C, um den Bereich in die Zwischenablage zu kopieren.
-
Zeigen Sie die Registerkarte Home des Menübands an.
-
Klicken Sie auf den Abwärtspfeil unter dem Einfügewerkzeug und wählen Sie dann Spezial einfügen. Excel zeigt das Dialogfeld Inhalte einfügen an. (Siehe Abbildung 1.)
-
Stellen Sie sicher, dass das Optionsfeld Werte ausgewählt ist.
-
Klicken Sie auf OK. Sie haben jetzt statische Werte in B1: C1000, was bedeutet, dass sie sich nicht jedes Mal ändern, wenn das Arbeitsblatt neu berechnet wird.
-
Wählen Sie eine Zelle in Spalte C aus.
-
Zeigen Sie die Registerkarte Daten des Menübands an.
-
Klicken Sie auf das Sortierwerkzeug. Excel zeigt das Dialogfeld Sortieren an. (Siehe Abbildung 2.)
-
Klicken Sie auf OK. Die Tabelle (Bereich A1: C1000) ist nach den Werten in Spalte C sortiert.
Das Ergebnis ist, dass Spalte C jetzt eine Rangfolge aller Zufallszahlen in Spalte B enthält. Die ersten 15 Zeilen enthalten Ihre Zufallsnamen.
Bei diesem Ansatz hätten Sie auch Spalte C vollständig weglassen und Ihre Liste einfach anhand der statischen Zufallswerte in Spalte B sortieren können.
Auch hier wären die Top 15 Ihre zufälligen Namen.
Natürlich gibt es eine beliebige Anzahl von Makrolösungen, die Sie für dieses Problem verwenden können. Die Codierung eines Makros ist ähnlich und basiert auf der RND-Funktion von VBA, um Zufallszahlen zu generieren. Von allen möglichen Makrolösungen ist möglicherweise die folgende die einzigartigste und bietet einige Vorteile, die mit den bisher diskutierten Arbeitsmappenlösungen nicht verfügbar sind:
Sub GetRandom() Dim TempDO As Variant Dim iRows As Integer Dim iCols As Integer Dim iBegRow As Integer Dim iBegCol As Integer Dim sCells As String Dim J As Integer Dim iWantRow As Integer Set TempDO = New DataObject iRows = Selection.Rows.Count iCols = Selection.Columns.Count iBegRow = Selection.Row iBegCol = Selection.Column If iRows < 16 Or iCols > 1 Then MsgBox "Too few rows or too many columns" Else Randomize Timer sCells = "" For J = 1 To 15 iWantRow = Int(Rnd() * iRows) + iBegRow sCells = sCells & Cells(iWantRow, iBegCol) & vbCrLf Next J TempDO.SetText sCells TempDO.PutInClipboard End If End Sub
Sie sollten beachten, dass dieses Makro – unmittelbar nachdem die Variablen deklariert wurden – ein neues DataObject definiert und es der TempDO-Variablen zuweist. Wenn das Makro in dieser Codezeile bombardiert wird, bedeutet dies einfach, dass Sie VBA anweisen müssen, auf die richtige Bibliothek zu verweisen:
-
Wählen Sie im VBA-Editor im Menü Extras die Option Referenzen. VBA zeigt das Dialogfeld Referenzen an. (Siehe Abbildung 3.)
-
Scrollen Sie durch die Liste der Referenzen, bis Sie eine mit dem Namen Microsoft Forms Object Library sehen. (Der Referenzname enthält möglicherweise eine Versionsnummer, z. B. Microsoft Forms 2.0 Object Library.)
-
Stellen Sie sicher, dass das Kontrollkästchen links neben der Objektbibliothek aktiviert ist.
-
Klicken Sie auf OK.
Um das Makro zu verwenden, wählen Sie einfach die Namen aus, aus denen Sie die 15 zufälligen Namen auswählen möchten. In den bisherigen Beispielen würden Sie den Bereich A1: A1000 auswählen. Das Makro zieht dann zufällig 15 Namen aus den Zellen und legt sie in der Zwischenablage ab. Wenn Sie das Makro ausführen, können Sie den Inhalt der Zwischenablage an einer beliebigen Stelle einfügen. Jedes Mal, wenn das Makro ausgeführt wird, wird eine andere Gruppe von 15 ausgewählt.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (12475) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: