Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zufällige Zelle auswählen

Zufällige Zelle auswählen
27.03.2022 15:51:09
Ingo
Hallo
Ich habe eine Excel Tabelle mit ca. 1000 Zeilen. Die Anzahl der Zeilen ändert sich immer wieder mal. Es kommen also welche hinzu oder werden gelöscht. Es gibt aber keine leeren Zeilen in der Tabelle.
Nun möchte ich gerne mit einem Makro erreichen, dass zufällig einer der Zellen aus Spalte A gewählt wird. Natürlich nur bei den Zeilen, die am Ende der Tabelle nicht leer sind.
Und was mir dabei besonders sichtig ist, dass alle Zeilen mit Inhalt bei jeder Makro-Auslösung immer genau gleich gewichtet werden. Es sollen also jedes Mal alle Zeilen die gleiche Chance haben, ausgewählt zu werden. Es sollen nicht irgendwie die Zeilen am Angang und/oder Ende schlechtere oder bessere Chancen haben, als die im mittleren Bereich.
Da ich selber VBA eigentlich fast nur mit dem Makrorecorder "kann", würde ich mich da über Eure Hilfe riesig freuen.
Gruß
Ingo
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufällige Zelle auswählen
27.03.2022 15:57:53
Daniel
Hi
Cells(Worksheetfunction.RandBetween(1, Worksheetfunction.CountA(Columns(1))), 1).Select
Gruß Daniel
AW: Zufällige Zelle auswählen
27.03.2022 16:11:13
Ingo
Hallo Daniel
Ich hatte leider doch noch was vergessen. Entschuldige bitte.
Es sollen nur Zeilen berücksichtigt werden, bei denen die Spalte 19 nicht leer ist.
Gruß
Ingo
Anzeige
AW: Zufällige Zelle auswählen
27.03.2022 19:34:27
Ingo
Hallo
Bitte entschuldige, Doch, natürlich danke ich auch Dir sehr für Deine Hilfe.
Wäre es für Dich in Ordnung, den Code für das Makro hier in eine Antwort zu posten?
Ich öffne nicht so gerne Excel-Dateien aus mir unbekannten Quellen. Ich hoffe, Du bist mir da jetzt nicht böse.
Gruß
Ingo
Anzeige
AW: Zufällige Zelle auswählen
27.03.2022 19:38:23
onur

Private Sub UserForm_Activate()
Dim ti
Do
DoEvents
TextBox1.Text = Time
TextBox2.Text = Date
Me.Repaint
ti = Timer
While Timer - ti 

AW: Zufällige Zelle auswählen
27.03.2022 19:49:45
Ingo
Hallo
Hmmm, das verstehe ich nun leider garnicht. Das hat doch mit meinem Anliegen, eine Zelle in Spalte A per Zufall auszuwählen, nichts zu tun. Oder stehe ich da jetzt irgendwie auf dem Schlauch?
Gruß
Ingo
Anzeige
AW: Zufällige Zelle auswählen
27.03.2022 19:51:49
onur
Sorry, falsches Makro erwischt:

Private Sub CommandButton1_Click()
Dim lz, ze
Randomize Timer
lz = Cells(Rows.Count, 1).End(xlUp).Row
Do
ze = Rnd(Timer) * lz + 1
Loop While Cells(ze, 19) = ""
Cells(ze, 1).Select
End Sub

Zufall bei beiden Methoden gleichwertig?
27.03.2022 20:07:04
Ingo
Hallo
Dein Makro arbeitet ja mit Randomize Timer. Und das vom Daniel mit RandBetween. Sind die beiden Methoden denn sozusagen gleichwertig, was den Zufall angeht?
Ich frage, weil ich vor längerer Zeit mal irgendwo gelesen hatte, dass es bei bestimmten Methoden sowas gibt, wie eine kleinere Berücksichtigung der mittleren Zeilen der Tabelle. Also so, dass eben nicht alle Zeilen jedes Mal exakt die gleiche Chance haben, ausgewählt zu werden.
Gruß
Ingo
Anzeige
AW: Zufall bei beiden Methoden gleichwertig?
27.03.2022 20:35:03
onur
Für deine Ansprüche reicht die Zufälligkeit beider Versionen allemal.
Hier die Zufallsverteilung meines Makros mit 20 verschiedenen Zahlen bei 20 Mill. Durchgängen:

1		1000034
2		1000760
3		1000224
4		1000403
5		999861
6		999959
7		1000136
8		999522
9		999687
10		1000040
11		1000082
12		999713
13		999504
14		999892
15		999705
16		999793
17		999367
18		1001137
19		1000039
20		1000142

Anzeige
AW: Zufall bei beiden Methoden gleichwertig?
27.03.2022 21:23:06
onur
Hier die Ergebnisse mit Zufallsbereich (ähnliche Ergebnisse, nur seltsamerweise fast 30 mal langsamer, obwohl Excelfunktionen in der Regel schneller arbeiten als Makros) bei einer Rechenzeit von 142,5 s statt 5,05 s:

1		1000707
2		1000890
3		1000694
4		1000086
5		999272
6		1000317
7		1001112
8		998281
9		999917
10		999927
11		999636
12		1000219
13		1000511
14		1000283
15		998309
16		999469
17		1000145
18		999625
19		999464
20		1001136

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zufällige Zelle in Excel auswählen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und die entsprechende Arbeitsmappe.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  4. Füge den folgenden VBA-Code in das Modul ein:

    Sub ZufälligeZelleAuswählen()
       Dim lz As Long, ze As Long
       Randomize Timer
       lz = Cells(Rows.Count, 1).End(xlUp).Row
    
       ' Suche eine zufällige Zeile, bei der die Spalte 19 nicht leer ist
       Do
           ze = Int((lz * Rnd) + 1)
       Loop While Cells(ze, 19).Value = ""
    
       Cells(ze, 1).Select ' Wähle die Zelle in Spalte A aus
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus, indem du ALT + F8 drückst, das Makro ZufälligeZelleAuswählen wählst und auf Ausführen klickst.

Jetzt wählst Du mit diesem Makro zufällig eine Zelle in Spalte A aus, basierend auf den Bedingungen, die Du festgelegt hast.


Häufige Fehler und Lösungen

  • Problem: "Laufzeitfehler 1004: Die Methode 'Select' für das Objekt 'Range' ist fehlgeschlagen."

    • Lösung: Stelle sicher, dass Du das Makro in einer aktiven Arbeitsmappe ohne geschützte Blätter ausführen möchtest.
  • Problem: Das Makro wählt keine Zelle aus.

    • Lösung: Überprüfe, ob in Spalte 19 (Spalte S) tatsächlich Werte vorhanden sind und keine leeren Zellen vorhanden sind.

Alternative Methoden

Es gibt verschiedene Ansätze, um eine zufällige Zelle in Excel auszuwählen:

  1. Formelbasierte Lösung: Verwende die Funktion INDEX zusammen mit ZUFALLSZAHL. Diese Methode ist jedoch nicht so flexibel wie VBA und berücksichtigt keine Bedingungen.

    =INDEX(A:A, RANG(GANZZAHL(ZUFALLSZAHL()*ZÄHLEN(A:A)), ZÄHLEN(A:A)))
  2. Excel-Zufallszahl-Funktion: Du kannst auch die ZUFALLSBEREICH-Funktion nutzen, um zufällige Zeilen zu generieren, aber es ist schwieriger, die Bedingungen zu erfüllen.

    =ZUFALLSBEREICH(1; ZÄHLEN(A:A))

Praktische Beispiele

  • Beispiel 1: Zufällige Auswahl von Namen in einer Liste. Wenn Du eine Liste von Namen in Spalte A hast, kannst Du das Makro verwenden, um zufällig einen Namen auszuwählen.

  • Beispiel 2: Zufällige Auswahl von Produkten. Hast Du eine Produktliste, kannst Du mit dem gleichen Makro einen zufälligen Artikel auswählen, der in Spalte A aufgeführt ist.


Tipps für Profis

  • Verwende Randomize Timer: Dies sorgt dafür, dass Deine Zufallszahlen nicht bei jedem Ausführen des Makros gleich sind.
  • Erweitere das Makro: Du kannst das Makro so anpassen, dass es weitere Spalten oder Bedingungen berücksichtigt. Zum Beispiel könntest Du zusätzliche Filter für andere Spalten einfügen.
  • Makros speichern: Stelle sicher, dass Du deine Arbeitsmappe als xlsm-Datei speicherst, um die Makros zu behalten.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Rnd und RandBetween in Excel?
Rnd generiert eine zufällige Zahl zwischen 0 und 1, während RandBetween eine ganze Zahl zwischen zwei von Dir festgelegten Werten zurückgibt. Beide Methoden können zur Auswahl zufälliger Werte verwendet werden.

2. Kann ich das Makro anpassen, um mehrere Zellen auszuwählen?
Ja, Du kannst die Logik im Makro so anpassen, dass mehrere zufällige Zellen ausgewählt werden, indem Du eine Schleife hinzufügst, die die Auswahl mehrmals wiederholt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige