Frage von psvitabesitzer, 101

Excel Hilfe für Zufallszelle?

Hallo! Ich möchte einen Zufallsgenerator schreiben, und bräuchte für eine Funktion des Generators eine Möglichkeit, aus einem bestimmten Bereich eine (oder mehrere) Zelle(n) auszuwählen, die dann halt in eine andere Zelle hineingeschrieben wird. Mit der Funktion Zufallsbereich habe ich irgendwie Probleme, und Tutorials möchte ich jetzt für eine Funktion auch nicht durchsuchen. Danke, falls ihr eine Antwort schreibt.

Expertenantwort
von Ninombre, Community-Experte für Excel, 34

Um das Bild anzuhängen, eine neue Antwort. Für die Variante eine zufällige Anzahl von Zellen mit Formeln aus dem Bereich auszuwählen und aneinanderzuhängen fällt mir nur eine Lösung mit Zwischenzeilen ein.

A1:G1 (gelb) sind die Zellen, die zufällig ausgewählt werden. Hier bestimmst Du frei den Inhalt

A2:E2 (rosa) sind die (von mir auf 5 begrenzt) 1-5 zufällig gewählte Ergebnisse aus A1:G1.
Formel für A2: =INDEX($A1:$G1;1;ZUFALLSBEREICH(1;7))
Formel für B2 bis E2 (oder weitere Zellen, wenn mehr als 5 ausgewählt werden dürfen): =WENN(SPALTE(B2)<=$A3;INDEX($A1:$G1;1;ZUFALLSBEREICH(1;7));"")

In A2 wird auf jeden Fall eine der Zellen aus A1:G1 ausgewählt. Für B2-E2 (wenn max. 5, sonst die Formel noch in F, G etc. kopieren) wird geprüft, ob die Zufallszahl für die Anzahl (in A3) bereits erreicht wurde. Wenn nicht, wird eine weitere Zelle aus A1:G1 ausgewählt

A3: Hier die Formel =Zufallsbereich(1;5) -> die legt fest, wie viele Zellen herangezogen werden

A4: Die Ergebnisse in Zeile 2 werden verkettet:
=VERKETTEN(A2;B2;C2;D2;E2)
Auch hier: Das ist die Variante für max. 5 zufällig ermittelte Zellen.

Antwort
von BerchGerch, 32

Hallo,

nehmen wir an du hättest eine zusammenhängende Liste aus Einträgen für den Zufallsgenerator, die alle untereinander in Spalte A stehen.

Dann sähe die Funktion für den Zufallsgenerator, die du in eine andere Zelle kopieren müsstest, so aus:

=INDEX(A:A;ZUFALLSBEREICH(1;ANZAHL2(A:A)))

Excel wählt dann einen zufälligen Eintrag aus der Liste in Spalte A aus und schreibt ihn in die Zelle.

Wenn du in der Zelle einen neuen Zufallseintrag erzeugen möchtest, drücke F9.

Es gilt prinzipiell das, was Ninombre gesagt hat:

Die Zufalls-Funktionen haben immer das Manko, dass der Wert bei einer Änderung irgendeiner Zelle neu berechnet wird.

Gruß, BerchGerch

Antwort
von Willibergi, 57

Habe ich das richtig verstanden:

Du willst z. B. eine zufällige Zelle aus der Spalte C (Zeile 3-18) auswählen oder was?

LG Willibergi

Kommentar von psvitabesitzer ,

Ja, oder zum Beispiel von A1.G1, zufällig viele, zufällig welche.

Expertenantwort
von Ninombre, Community-Experte für Excel, 41

Funktionen oder Makro? Die Zufalls-Funktionen haben immer das Manko, dass der Wert bei einer Änderung irgendeiner Zelle neu berechnet wird. Das musst Du also direkt kopieren und als Wert einfügen, wenn das Ergebnis erhalten bleiben soll.
Wenn in A1 bis A5 beliebige Zahlen stehen und eine der 5 zufällig gewählt werden soll:
=INDEX(A1:A5;ZUFALLSBEREICH(1;5);1)

Als Makro / VBA (gleiche Annahme A1:A5 enthalten Deine Zahlen, eine wird ausgewählt und in diesem Fall in B1 geschrieben):

Sub zufall()
Range("B1").Value = Cells(Int(Rnd() * 5) + 1, 1).Value
End Sub

Kommentar von psvitabesitzer ,

okay, ich versuche das mal. Danke für die Antwort!

Kommentar von Ninombre ,

Bzgl der Kommentare zu den anderen Antworten wäre es wohl eher so herum: In dem Fall sind es 1-5 Werte, die aus A1 bis G1 zufällig ermittelt werden. Das Ergebnis wird in A2 verkettet abgebildet, also jeder zufällig ermittelte Zellinhalt aneinander gereiht.

Sub zufall()
For i = 1 To Int(Rnd() * 5) + 1
Range("A2").Value = Range("A2").Value & Cells(1, Int(Rnd() * 7) + 1).Value
Next
End Sub
Kommentar von psvitabesitzer ,

Oh, Danke... Gibt es nur auch einen Weg, das als Funktion in eine Zelle zu schreiben? Ich weiß nämlich nicht, wie man den Text verwendet.

Kommentar von psvitabesitzer ,

Nein danke, habs schon selbst herausgefunden, wie makros funktionieren

Kommentar von Ninombre ,

Sehr gut! Ist in dem Fall aus meiner Sicht die bessere Lösung als mit Formeln

Kommentar von Iamiam ,

erkenne jetzt erst die volle Qualität des Makros, kann DH nur 1x vergeben.

-Noch?- Manko:

  1. Zellen können mehrfach aufgerufen werden.
  2. Ergebnis in String, nicht in Zellen unter/nebeneinander (könnte aberauch so gewünscht sein)

Um das zu ändern, bäuchte man eine Doppelschleife und weitere Variable, kein prinzipielles Problem.

Expertenantwort
von Iamiam, Community-Experte für Excel, 18

Für eine beliebige Zellauswahl (eine aus 5 zB) und wenn daraus der Wert (Zahl oder Text) wiedergegeben werden soll, dann:

=WAHL(ZUFALLSBEREICH(1;5);A4;C15;M13;K6;AC2;D14)

Verweisen die Zellen allerdings auf weitere Adressen (steht also zB in A4 Blatt1!B5),l dann muss ein =indirekt(drumrum)

Mischen geht nicht, aber ausweiten auf max. 255? Argumente.

Hängen die Zellen zusammen(zB R26:R30 oder mehr(was dann nicht mehr ausgewählt werden kann), dann

=INDEX(R26:R34;(ZUFALLSBEREICH(1;5)))

Die Zellen R31:R34 werden davon nie ausgewählt

(Sehe grade, dass Berch Gerch da noch eine sinnvolle Erweiterung erstellt hat!

Kommentar von Iamiam ,

lese gerade: "...z.Beispiel von A1.G1, zufällig viele, zufällig welche"

Ob das "zufällig viele" überhaupt geht, weiß ich nicht, muss ich erst mal drüber schlafen. Wahrscheinlich mit Makro, Mit Formeln, wenn überhaupt, nur sehr kompliziert, da verketten nicht zufällig viele Male geht. Darf die gleiche Zelle mehrfach aufgerufen werden?(dann könnte was gehen)

Kommentar von Iamiam ,

da VBA bei mir einen Bug zeigt, bin ich noch nicht weitergekommen. Das ist der Bug:

Debug.Print "Zelle4: " & ActiveSheet.Range("M2:M4,M6,N5").Cells(4).Address
'Ergebnis falsch!: Zellenzahl: 5 Zelle2: $M$3 Zelle4: $M$5
'Zelle4 müsste M6 sein! M5 ist nicht in der vorgegebenen Zelliste!

Für nicht zusammenhängende Zellen kann ich also keine Lösung bieten und habe deshalb alles erst mal hintan gestellt.

Antwort
von maximilianus7, 35

bisserl dünn die info. vermutlich willst du ein vba-makro schreiben. da gibt es die rnd-funktion.

Kommentar von psvitabesitzer ,

Kann auch mit deinem Kommentar nix anfangen :D. 

 A1:G1, zufällig viele, zufällig welche Zellen. Deren Inhalt soll dann in der Zelle hintereinander stehen.

Keine passende Antwort gefunden?

Fragen Sie die Community