Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Zufallsgenerator in Excel?





Frage

hallo zusammen, ich habe eine tabelle wo in spalte B über 2000 namen stehen und ich frage mich nun ob es in excel eine art von zufallsgenerator gibt, welcher mir aus den 2000 namen eine vorher definierte anzahl nach dem zufallsprinzip herausgibt. in spalte C steht der einsatzstandort. noch besser wäre, wenn ich definieren könnte, das aus dem standort 1 eine definierte anzahl ausgewählt werden soll und aus standort 2 ebenfalls eine vorher definierte anzahl. habt ihr eine idee wie man dies automatisieren könnte?

Antwort 1 von nighty

hi :)

spalt b ist klar ,der rest net so :)

benenn die zelle worin steht wieviel zufallszahlen gezogen werden sollen aus spalte b

gruss nighty

Antwort 2 von Primut

Hi,

am besten mit Makro, hier mal ein Vorschlag auf die Schnelle.
Die Auswahl wird hier einfach in Spalte E eingetragen, ließe sich aber auch anpassen.
Bei falschen Eingaben bricht das Makro einfach ab.
Es wird eine Zufallsauswahl entsprechender Anzahl für entsprechenden Standort vorgenommen.
Wichtig: Dieses Makro geht davon aus, daß zu jedem Namen in Spalte B ein Standort in Spalte C vorhanden ist.

Option Explicit
Sub Zufallsauswahl()
Randomize Timer

Dim Zeile As Integer
Dim i As Integer, AnzNam As Integer
Dim allezahlen As Integer
Dim ziehung As Integer
Dim gezogen As Integer
Dim endeindex As Integer

Zeile = Range("B65535").End(xlUp).Row
ReDim Nam(Zeile) As String
ReDim Ort(Zeile) As String
For i = 1 To Zeile
 Nam(i) = Cells(i, 2).Value
 Ort(i) = Cells(i, 3).Value
Next i
Ort(0) = InputBox("Eingabe Such-Standort:")
For i = 1 To Zeile
 If Ort(0) = Ort(i) Then
 Exit For
 Else
   If Ort(0) <> Ort(i) And i = Zeile Then
    MsgBox ("Falsche Standorteingabe zur Suche")
    Exit Sub
   Else: End If
 End If
Next i
Nam(0) = InputBox("Eingabe Anzahl:")
If Nam(0) > Zeile Then MsgBox ("Falsche Eingabe der Anzahl"): Exit Sub
AnzNam = 0
For i = 1 To Zeile
 If Ort(0) = Ort(i) Then
  AnzNam = AnzNam + 1
  Nam(AnzNam) = Nam(i)
 Else: End If
Next i

ReDim zuzahl(AnzNam) As Integer
ReDim zahl(Nam(0)) As Integer

endeindex = AnzNam
For allezahlen = 1 To AnzNam
 zuzahl(allezahlen) = allezahlen
Next allezahlen
 Cells(ziehung + 3, 5) = Ort(0)
 Cells(ziehung + 2, 5) = Nam(0)
For ziehung = 1 To Nam(0)
 gezogen = Int(Rnd * endeindex) + 1
 zahl(ziehung) = zuzahl(gezogen)
 zuzahl(gezogen) = zuzahl(endeindex)
 endeindex = endeindex - 1
 ReDim Preserve zuzahl(endeindex)
 Cells(ziehung + 4, 5) = Nam(zahl(ziehung))
Next ziehung
End Sub


Makro unter Alt / F11 einfügen unter Einfügen / Modul einfach reinkopieren.
Hab heut leider keine Zeit mehr, d.h. bei Fragen können die anderen weiterhelfen.
Gruß
    Primut


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: