zufälligkeiten in excel

ich habe mittlerweile herausgefunden, dass es einen „zufallsgenerator“ in excell gibt.
was ich nun machen möchte ist: in tabelle 1 sollen die zellen mit text gefüllt werden, und in tabelle 2 soll dann per zufall aus dieser liste der inhalt einer zelle angezeigt werden.
kurz zur erklärung: mit „tabelle 1“ und"tabelle 2" sind diese eckerl links unten gemeint wo ich in einer datei eben mehrere tabellen anlegen kann. die idee dahinter ist dass man nicht gleich sieht was zur auswahl steht.
wie das fertige projekt aussehen soll:
es soll ein „wahrheit oder pflicht spiel“ werden. also in tabelle 1 kommen die wahrheit-fragen, in tabelle 2 die pflichten und in tabelle 3 ist dann z.b. 1A die „wahrheit“ zelle die zufällig irgendeinen zelleninhalt aus tabelle 1 anzeigt und 2A die „pflicht zelle“ wo zufällig irgendein ihhalt aus tabelle 2 angezeigt wird.
ist jetzt jemand dran kann er sich entweder eine wahrheit oder eine pflicht anzeigen lassen.
ich hoffe meine angaben sind einigermaßen verständlich und die aufgabe ist irgendwie lösbar.

mit bestem dank im vorraus

sebastian

Hallo Sebastian,
Random liefert einen Wert zwischen 0 und 1. Abhängig von dem Maximal zulälligen Wert müsstest Du also dieses Ergebnis mit dem Maxima Mal nehmen. Dies könntest Du für Zeile und Spalte tun.
Sinnvoll wäre wohl die Einbindung eines buttons. Sozusagen auf Knopfdruck könntest Du damit ein Feld innerhalb einer Matrix auswählen.
Hast Du VBA-Erfahrung? Weisst Du wie man einen button erstellt und mit einem Makro verbindet?
Wie groß wäre Dein Range? oder soll der flexibel sein? Und wo / wie soll das Ergebnis der Zufallsoperation auf Tabelle 2 landen?
MfG MwieMichel

Hallo Sebastian,

ist jetzt jemand dran kann er sich entweder eine wahrheit oder
eine pflicht anzeigen lassen.

Sind doch beides zufällig gefüllte Zellen, seh da keinen Unterschied
zwischen Wahrzelle und Pflichtzelle außer daß die Zufallswerte
aus zwei Blättern stammen.

ich hoffe meine angaben sind einigermaßen verständlich

Nicht so ganz für mich. So erzeugt man einen ZufallswertZelle aus A1:A100 in B1 bzw. B2. Bei jeder Neuberechnung des Blattes bzw. F9

Tabellenblatt: [Mappe2]!Tabelle1
 │ A │ B │
──┼───────┼────────┤
1 │ Wert1 │ Wert99 │
──┼───────┼────────┤
2 │ Wert2 │ Wert32 │
──┼───────┼────────┤
3 │ Wert3 │ │
──┼───────┼────────┤
4 │ Wert4 │ │
──┼───────┼────────┤
5 │ Wert5 │ │
──┼───────┼────────┤
6 │ Wert6 │ │
──┼───────┼────────┤
7 │ Wert7 │ │
──┼───────┼────────┤
8 │ Wert8 │ │
──┴───────┴────────┘
Benutzte Formeln:
B1: =INDEX(A1:A100;ZUFALLSZAHL()\*100+1)
B2: =INDEX(A1:A100;ZUFALLSBEREICH(1;100))

A1:B8
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

und die aufgabe ist irgendwie lösbar.

Vielleicht.

Gruß
Reinhard

danke erst mal für die antworten.
zur klärung der aufgetretenen gegenfragen:

  1. @reinhard: es ist mir klar dass der befehl in den beiden zellen der gleiche wäre und sich nur durch eine kleinigkeit unterscheiden würde, aber wie würde dieser lauten?
  2. @MwieMichel: ein button wäre natürlich genial, aber von VBA habe ich garkeine ahnung.

so, und jetzt zur nochmaligen erklärung (ich hoffe ich kann die tabellendarstellung auch mit LaTeX code erzeugen weil um mir was neues anzuschauen ist es schon reichlich spät):
ich habe tabelle 1 da stehen pflichten und tabelle 2 da stehen fragen etwa so:

\begin{tabular}{|c|c|}
\hline
&A\
\hline
1&Frage oder Pflicht 1\
\hline
2&Frage oder Pflicht 2\
\hline
\end{tabular}

(juhu, LaTeX funktioniert auch :smile:)
und so geht das dann weiter.
diese Liste sollte jederzeit erweiterbar sein bis „frage oder pflicht n“
dann wird weitergebklättert in tabelle 3 die dann folgender maßen aussehen soll:

\begin{tabular}{|c|c|c|}
\hline
&A&B\
\hline
1&Wahrheit&\textit{zufaelliger inhalt aus tabelle 1}\
\hline
2&amp:stuck_out_tongue_winking_eye:flicht&\textit{zufaelliger inhalt aus tabelle 2}\
\hline
\end{tabular}

meine frage ist nun in erster linie: welcher befehl gehört bei tabelle 3 in die zellen B1 und B2?
und eine zweite frage hat sich jetzt noch ergeben (MwieMichel hat mir den mund wässrig gemacht): ist es viel aufwand zwei buttons einzubinden, bzw. wenn es nicht all zu schwer ist oder es einen einfachen befehl gibt den ihr mir einfach hier reinschreiben könnt den ich dann kopieren kann wäre ich euch sehr verbunden. dieser button käme dann an die stellen C1 und C2 in tabelle 3

Hallo Sebastian,
danke für die bildliche Darstellung. Tat vieles zum Verständnis. Ich fasse noch einmal zusammen:
Tabelle1: Wahrheiten, wird ggf. erweitert
Tabelle2: Pflichten, wird ggf. erweitert
Tabelle3: zufällige Auswahl einer Wahrheit UND einer Plicht aus Tabelle 1 und 2.
Da Du keine VBA-Erfahrung hast, fange ich mal ohne Button an.

Öffne Deine Excel-Datei. Mit Alt + F11 wechsle zur VBA-Entwicklungsumgebung. Links oben wähle ggf. die gewünschte Datei aus. Füge über Menü Einfügen // Modul ein neues Modul ein. In das Code-Fenster rechts kanns Du diesen Code einfügen (alles zwischen Option und End Sub):

Option Explicit

Sub WahrOPflicht()

’ Variablendeklaration
Dim WBlatt As String, PBlatt As String, WOPBlatt As String
Dim WZeile As Long, PZeile As Long, WEnde As Long, PEnde As Long

’ Initialisierung
WBlatt = „Tabelle1“
PBlatt = „Tabelle2“
WOPBlatt = „Tabelle3“

’ Zufallsgenerator
WEnde = Sheets(WBlatt).UsedRange.Rows.Count
WZeile = Int(WEnde * Rnd() + 1)
PEnde = Sheets(PBlatt).UsedRange.Rows.Count
PZeile = Int(PEnde * Rnd() + 1)

’ Inhalte zuweisen
Worksheets(WOPBlatt).Cells(1, 2).Value = Worksheets(WBlatt).Cells(WZeile, 1).Value
Worksheets(WOPBlatt).Cells(2, 2).Value = Worksheets(PBlatt).Cells(PZeile, 1).Value

End Sub

Mit Alt + F11 zurück zu Excel. Jetzt wechselst Du am Besten auf Tabelle3. Mit Alt + F8 kannst Du das Makro aufrufen. Evtl. in Makros in: auf diese Arbeitsmappe wechseln. Dann solltest Du das Makro WahrOPflicht finden und mit Ausführen oder Run laufen lassen können.

Wenn der Mund immer noch wässrig ist, gib mir Bescheid. Den Button krächten wir auch noch hin.
Viel Spass. MfG MwieMichel

1 Like

Vielen dank erst mal. funktioniert im prinzip schon wie es soll, was jetzt noch fehlt ist dass ich eine zweite runde starten kann. also ich wende das makro an, dann wir in B1 und B2 etwas angezeigt. um das nocheinmal laufen zu lassen muss ich das makro wieder neu anwenden mit alt+F9 und dann wieder in dem menü das makro anwählen und laufen lassen. gibt es dafür irgendeinen shortcut?

jetzt hast du mir den mund so wässrig gemacht dass ich mich gerne mit vba auseinandersetzen würde. an sich wären die semesterferien auch die geeignete zeit dazu, aber leider habe ich gleich zu beginn des sommersemesters einen wichtigen test für den ich unbedingt lernen sollte…
mal schauen vielleicht komme ich da noch dazu.
bitte um die einschätzung eines profis: kann ich vba genau so schnell wie LaTeX? dafür habe ich mit dem buch „LaTeX für dummies“ einen nachmittag gebraucht. dann habe ich natürlich immer noch listen mit den befehlen benötigt aber ich wusste was ich will und wo ich nachschauen kann.
zugang zu dem buch „VBA für dummies“ hätte ich (gibts in der bibliothek)
vorkenntnisse: ich habe in der schule einmal HTML und pascal gelernt, und vor zwei monaten etwa habe ich LaTeX gelernt.
weiß nicht ob mir das zeug was helfen wird.

Hallo Sebastian,

Semesterferien? Ergo: Du bist jung!
Du hast schon Programmiererfahrung? Ergo: VBA ist kein Problem.

Bücher lesen ist ok. Das meiste lernst Du aber durch eine echte Problemstellung, experimentieren und Tante Google. Die Community für Excel und VBA ist riesig.

Zum Shortcut: Schau Dir die Maske nach Alt + F8 genauer an. Rechts gibt es einen button „Optionen“. Hier kannst Du einen Shortcut belegen.

Zum Button: ist das Menü Entwicklertools (ich nutze Excel 2010) aktiviert? Sonst RM auf Menüband, Menüband anpassen und Häkchen setzen.
Unter Entwicklertools // Einfügen // Befehlsschaltfläche (Active-X…), dann button aufziehen. Mit RM // Code anzeigen. Zwischen Private Sub und End Sub plazierst Du den Makronamen (WahrOPflicht) der Routine die ausgeführt werden soll.
Zurück zu Excel, und Entwurfsmodus ausschalten. Fertig.

MfG MwieMichel

1 Like
  1. @MwieMichel: ein button wäre natürlich genial, aber von VBA
    habe ich garkeine ahnung.

Hallo Sebastian,

schreibe in Blatt1 und Blatt2 in A1:Ax deine x Fragen.
Alt+F11, im VB-Editor Doppelklick links auf Tabelle3.
Kopiere den nachfolgenden Code hinein.
Schließe den VB-Editor.

Dann „ziehst“ du in Blatt3 nacheinander zwei Buttons auf.
sage bitte deine Excelversion, die Buttonerstellung ist unterschiedlich.

Gruß
Reinhard

Option Explicit

Private Sub CommandButton1\_Click()
Dim Zei As Long
Zei = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
Range("B1").Value = Worksheets("Tabelle1").Cells(Int(Rnd() \* Zei + 1), 1)
End Sub

Private Sub CommandButton2\_Click()
Dim Zei As Long
Zei = Worksheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row
Range("B2").Value = Worksheets("Tabelle2").Cells(Int(Rnd() \* Zei + 1), 1)
End Sub
1 Like

erst mal vielen dank für die vielen antworten, sternchen werden dann auch gleich noch verteilt :wink:
ich hab jetzt beschlossen mich selbst ein bisschen mit VBA auseinander zu setzen und das ganze als längerfristiges projekt zu betrachten und das ganze g’scheit zu machen also mit eigener oberfläche und so.
als physikstudent ist es eh nie verkehrt eine programmiersprache mehr zu beherschen (C und C++ muss ich nächstes jahr sowieso lernen).