Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
276to280
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
276to280
276to280
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zufallsgenerator

Zufallsgenerator
10.07.2003 01:07:16
Willi
Hy all,
ich habe ein kleines und für Euch sicher auch ein banales Problem:
In meiner Tabelle stehen in Spalte A 20 Namen. Nun möchte ich per Zufallsgenerator 6 dieser Namen auswählen, die dann in Spalte B geschrieben werden. Allerdings gelingt es mir bislang nicht, Doppel- oder Mehrfachwerte auszuschliessen.
Wer kann mir helfen,
Gruß und vielen Dank
Willi

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufallsgenerator
10.07.2003 07:12:49
Berai
Hallo Willi,
hier noch ne Lösung
Option Explicit

Sub Zufall()
Dim intZeile As Integer, intZ As Integer
Dim intI As Integer, strFeld(200) As String, strTemp As String
intZeile = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
For intI = 1 To intZeile
strFeld(intI) = Sheets("Tabelle1").Cells(intI, 1).Value
Next intI
For intI = 1 To intZeile
Randomize Timer
intZ = Int((intI * Rnd) + 1)
strTemp = strFeld(intZ)
strFeld(intZ) = strFeld(intZeile + 1 - intI)
strFeld(intZeile + 1 - intI) = strTemp
Next intI
For intI = 1 To 6
Sheets("Tabelle1").Cells(intI, 2).Value = strFeld(intI)
Next intI
End Sub

Gruß
Rainer

Anzeige
Zufallsgenerator - Namen ermitteln ohne Doppler
10.07.2003 01:20:26
Boris
Hi Willi,
Namen in A1:A20 (auch doppelt und dreifach und...)
In B1:
=WENN(ZÄHLENWENN(A1:A$20;A1)>1;"";ZUFALLSZAHL())
und runterkopieren bis B20.
Dann in C1:
=INDEX(A:A;KKLEINSTE(B:B;ZEILEN($1:1)))
und runterkopieren bis C6.
Grüße Boris

Kleine Korrektur für Formel in C1:
10.07.2003 01:23:01
Boris
Hi Willi,
es muss in C1 heissen (und runterkopieren):
=INDEX(A:A;VERGLEICH(KKLEINSTE(B:B;ZEILEN($1:1));B:B;0))
Man sollte halt diese Dinge nicht aus der Hand schreiben...;-)
Grüße Boris

AW: Kleine Korrektur für Formel in C1:
10.07.2003 01:34:33
L.Vira
Hallo Meister,
ginge es auch so?:
in B1: Zufallszahl() und runterkopieren bis 18.000
in c1: =INDIREKT("A"&RANG(B1;$B$1:$B$20;ZEILE())) und runterkopieren bis 18.000
Gruß L.Vira
PS das mit den 18000 ist natürlich ein Gag!

Anzeige
Das geht nur, wenn...
10.07.2003 01:50:18
Boris
Hi L.Vira,
...du bis 26.355 runterkopierst.
Mit deiner Lösung erhält man aber auch doppelte Namen - daher scheidet sie (für mich) aus.
Gruß Boris
P.S.: Die Lösung von Melanie zu den Commandbars klingt so einfach - ist es so einfach?

AW: Das geht nur, wenn...
10.07.2003 02:50:00
L.Vira
Ich geh mal davon aus, dass die Namen, gerade bei dieser Thematik,
nur einmal vorkommen. Außerdem, wenn z.B. nur Vornamen einegeben
wurden, kann es doch durchaus sein, dass die doppelt vorkommen.
Gruß L.Vira

AW: Das geht nur, wenn...
10.07.2003 02:47:25
L.Vira
Hi, Boris,
muss gestehen, dass ich das noch nicht getestet habe, vermutlich
wirds so sein, denn welche MVP(You know?) würde sonst solch eine
Antwort geben?
Gruß L.Vira

Anzeige
AW: Das geht nur, wenn...
10.07.2003 02:56:40
Boris
Hi L.Vira,
jo, MVP´s irren nie...;-))
Jezt mach ich "Feierabend" - gute Nacht!
Grüße Boris

AW: Kleine Korrektur für Formel in C1:
10.07.2003 01:30:21
Willi
Hy Boris,
danke für deine schnelle Antwort und gleichzeitig ein verschämtes "Entschuldigung" für die unpräzise gestellte Frage:
Ich möchte das ganze per Makro regeln und zwar so, daß aus einer Liste von zwanzig Namen aus Spalte A sechs zufällig ausgewählt werden und dann in Spalte B geschrieben. Wenn ich "randomize" verwende, gelingt es mir nicht, daß in einigen Fällen in der Spalte B Namen doppelt oder dreifach aufgeführt werden. Also quasi möchte ich per Knopfdruck "6 aus 20" ziehen.
Ich hoffe, das war nun eindeutiger formuliert,
Gruß
Willi

Anzeige
6 Zufalls Namen aus Spalte A
10.07.2003 01:50:15
Oliver
Hallo Willi,
habe mir nen Code von Herbers Excel Beispiele geschnappt und ein wenig angepasst.
Sollte so 6 Namen aus der Spalte A in Spalte C liefern.
Gruß
Oliver

Sub Zufall()
Dim rngAct As Range, rngPart As Range, rngFind As Range
Dim iCol As Integer, iTmp As Integer
Dim iRow As Integer, iCount As Integer
Application.ScreenUpdating = False
Randomize
If IsEmpty(Cells(1, 3)) Then
iRow = 1
Else
iRow = Cells(Rows.Count, 3).End(xlUp).Row + 1
End If
iCount = WorksheetFunction.CountA(Columns(1))
For iRow = 1 To 6
iCol = 1
Set rngPart = Range(Cells(1, iCol + 2), Cells(iCount, iCol + 2))
iTmp = Int((iCount * Rnd) + 1)
Set rngFind = rngPart.Find(Cells(iTmp, iCol), _
lookat:=xlWhole, LookIn:=xlValues)
While Not rngFind Is Nothing
iTmp = Int((iCount * Rnd) + 1)
Set rngFind = rngPart.Find(Cells(iTmp, iCol), _
lookat:=xlWhole, LookIn:=xlValues)
Wend
Cells(iRow, iCol + 2) = Cells(iTmp, iCol)
Next iRow
End Sub


Anzeige
AW: 6 Zufalls Namen aus Spalte A
10.07.2003 01:57:41
Willi
Puuuuhhh, ihr seid ja fix! Kompliment!
Muss ich dieses Script noch modifizieren und auf meine Bedürfnissen anpassen, denn ich erhalte die Fehlermeldung:
Die Find-Eigenschaft des Rangeobjektes kann nicht zugeordnet werden.
Set rngFind = rngPart.Find(Cells(iTmp, iCol), _
lookat:=xlWhole, LookIn:=xlValues)
Jetzt ist wieder so ein Moment, indem ich bedaure, daß ich mein VBA-Wissen nur oberflächlich erlangt habe....

Das ist bedauerlich
10.07.2003 02:06:49
Oliver
Bedauerlich,
bei mir läuft das Ding ohne Probleme....
komisch, komisch, komisch
Gruss Oliver

AW: Das ist bedauerlich
10.07.2003 02:15:05
Willi
Das Ganze nochmal ganz in Ruhe. Und nun funzt es ohne Ruckeln. Genau wie ich es wollte. Danke!
Willi, sich verneigend

Anzeige
Mit VBA vielleicht so:
10.07.2003 01:46:05
Boris
Hi Willi,
bin kein VBA-Fachmann - da sind andere Cracks noch online (L.Vira, Rainer).
Aber so geht es zumindest:
Option Explicit

Sub zufall()
Range("B1:B20").FormulaLocal = "=ZUFALLSZAHL()"
Range("B1:B20").Copy
Range("B1:B20").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub

Die Formeln in Spalte C bleiben bestehen.
Weise diesen Code einem Button zu - auf Knopfdruck wird dann neu gemischt.
Gruß Boris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige