Excel Problem

icecoldkilla

Lieutenant
Registriert
März 2008
Beiträge
512
Hey, ich komm bei einem Problem in Excel nicht weiter.
Ich mache gerade ein Würfelexperiment in Excel.
In einer Spalte werden Zufallszahlen von 1-6 generiert. Bei 1,2 und 3 soll dann wo anders ein +1 stehen und bei 4,5 und 6 ein -1. Soweit kein Problem.
Für ein weiteres Experiment will ich aber, dass z.B. bei einer 6 das + und -1 getauscht werden soll also dann 1,2 und 3 ->-1 ; 4 und 5 -> 1
Ich weiß aber nicht wie ich das realisieren soll, denn wenn wieder eine 6 kommt soll wiederum getauscht werden.

Kann mir da wer weiterhelfen?

Danke schonmal im Voraus,
icecoldkilla
 
Hi icecoldkilla,

da du uns nicht gesagt hast, wie du das bisher gelöst hast, denke ich mal, dass du alleine zum Ziel kommen willst. Da bietet sich dann ganz einfach die Multiplikation mit -1 (minus 1) an, die dreht das Vorzeichen immer um.

Oder du stellst hier einmal eine Musterdatei ein ... :D
 
ich würds schon gern alleine schaffen mit ein par tipps, aber bisher konnte ich das problem nicht selber lösen.
das mit *-1 hab ich mir schon gedacht, das problem ist, wie ich das excel beibringen soll, dass nur wenn ein bestimmter wert herauskommt dann eine andere zelle mit -1 multipliziert werden soll
 
Sollte sich doch mit einer Wenn-Dann-Anweisung erledigen lassen:

=WENN(ZelleX=bestimmterWert;Y*-1;Y)
 
Das Problem ist nur, dass sich die Änderung nur einmalig auswirkt und nicht auf die Folgende Würfe. Mit einem Speicher für 1 und -1 komme ich auch nicht weiter, da nicht der Speicher verändert wird, sondern nur die Zelle mit der Wenn Funktion und sich somit wiederum nicht auf die Folgeglieder auswirkt.
Im Anhang eine rar Datei mit der Version (einmal xls einmal xlsx)
 

Anhänge

OK, das mit der angehängten Datei war schon einmal eine Hilfe. Dabei habe ich zwei Dinge bemerkt: Die Formel in Spalte B ist falsch, richtig wäre
Code:
=WENN(A4<4;H$4;WENN(A4=6;H$4*-1;H$5))
also 2 Mal das $-Zeichen mehr. Und das zweite: Wenn du in Spalte A die Zufallsformel drinnen lässt, dann wirst du so gut wie nie zum Ziel kommen, weil bei jeder Gelegenheit der Wert in allen belegten Zeilen der Spalte A geändert wird.

So, einmal angenommen, dass in Spalte A die berechneten Werte durch Einfügen->Werte in Zahlen umgewandelt wurden. Dann bleibt die Frage, was bei einer 6 passiert bzw. passieren soll. In Zeile 6 wird eine 6 gewürfelt. -> Was soll dann in B6 stehen? Und in A5 steht eine 2, was soll nach der gewürfelten 6 in B5 stehen? Und dann wird in A7 eine 1 gewürfelt. Was soll dann in B7 stehen? Und dann in Zeile 8 wieder eine 6. ... ?
 
Zuletzt bearbeitet:
Da brauchste wohl ein Makro.

KA ob's die Hilfsspalte unbedingt braucht; bin gerade zu doof zum Denken :D
 

Anhänge

Danke Mr. Snoot für die rar-Datei, aber irgendwie macht Excel so weiter wie vorher

@cpt. Nemo
da das Zufallszahlen sind, weiß ich natürlich nicht welche Zahlen du stehen hast, aber ich probier hier mal ne Tabelle zu schreiben:

Zufallszahl Resultat
1 -> 1
2 -> 1
3 -> 1
4 -> -1
5 -> -1
6 -> 0 (0 wird hingeschrieben und für die Zukunft die Vorzeichen für 1,2,3,4 und 5 getauscht->)
3 -> -1
4 -> 1
6 -> 0 (und nun sollen wiederum die Vorzeichen getauscht werden)
5 -> -1
1 -> 1

Hoffe das Prinzip ist verstanden worden :)
 
Also bei mir wechselt bei 6 immer das Vorzeichen bei 1-3 und bei 4-6; das bei 6 einen 0 kommen soll hab ich jetzt mal eingebaut.


Ich hab das jetzt zumindest zeilenweise verstanden; d.h. jede Zeile ist bei jedem Wurf unabhängig von allen anderen. Oder wie soll das passieren?
 

Anhänge

irgendwas stimmt bei deiner Tabelle nicht, grad z.b. stimmts am anfang und auf einmal sind die werte vertauscht, ohne dass eine 6 gekommen ist

So und nun nochmal eine Erklärung zur Verständnis:
Zufallszahlen sollen generiert werden (von 1- 6)
Bei 1;2;3 soll in einer anderen Zelle 1 ausgegeben werden
Bei 4;5 soll in einer anderen Zelle -1 ausgegeben werden
Bei einer 6 soll sich obiges für die folgenden Zufallszahlen umkehren bis wieder eine 6 erscheint
 
Zuletzt bearbeitet:
Betrachtest du jede Zeile für sich?

Falls nein, versteh ich dein Vorhaben nicht; falls ja, geht dein Excel falsch :D
 
ne ich glaub mein excel geht gut :D
ich stell hier einfach mal n screenshot ein
 

Anhänge

  • würfel.jpg
    würfel.jpg
    299,4 KB · Aufrufe: 127
Also betrachtest du nicht jede Zeile für sich, sondern jede Zeile soll sich auf die darüber beziehen?
 
Und wenn du mehrmals eine 6 würfelst, wird der Vorzeichenwechsel von davor immer mitberücksichtigt?

Ausgangssituation:
1-3 => 1
4-5 => -1
6 => 0 (Vorzeichenwechsel)​

Beginn:
1. Wurf: 6 => 0
2. Wurf: 6 => 0
3. Wurf: 2 => 1
4. Wurf: 4 => -1
5. Wurf: 6 => 0
6. Wurf: 6 => 0
7. Wurf: 3 => 1​
 
Zuletzt bearbeitet:
Prinzipiell bin ich auch ein Fan von VBA-Lösungen, sie gehen mir leichter von der Hand und sind somit schneller erstellt :). Insofern gebe ich Mr. Snoot Recht.

Aber vom Ehrgeiz zerfressen :evillol: wollte ich doch eine Lösung finden, die ohne VBA auskommt. Der Vorteil dabei ist, dass neue Würfe hinzugefügt werden können, ohne dass alles durcheinander kommt :cool_alt: oder die Reihe komplett neu aufgebaut wird oder das Makro neu angestoßen werden muss.

Ich denke, dass auch diese Lösung den Erfordernissen entspricht.
 

Anhänge

Danke Leute, habt mir geholfen, obwohl ich bei cpt. Nemo nicht so ganz durchblick bei der ewig langen Wennfunktion.
Ich muss noch weitere Würfelexperimente erstellen. Kannst du, Mr. Snoot, mit kurz erklären wie du das mit den Makros gemacht hast?
 
Ist im Grunde ganz simpel:

Code:
[COLOR="green"]' Variable, in der später gespeichert wird, ob das Vorzeichen (1, -1) gewechselt wurde[/COLOR]
iWechsel = 1

[COLOR="green"]' Schleife von Zeile 4 bis 35[/COLOR]
For i = 4 To 35

[COLOR="green"]' Generiere eine Zufallszahl von 1 bis 6[/COLOR]
Range("A" & i) = Int((6 - 1 + 1) * Rnd + 1)

[COLOR="green"]' Würfelergebnis prüfen ...
' bei einer 6 ...[/COLOR]
If Range("A" & i) = 6 Then
[COLOR="green"]' gib 0 aus ...[/COLOR]
    Range("B" & i) = 0
[COLOR="green"]' und drehe das Vorzeichen um (aus iWechsel = 1 wird iWechsel = -1 wird iWechsel = 1 usw.)[/COLOR]
    iWechsel = iWechsel * -1

[COLOR="green"]' bei einer 4 oder 5 ...[/COLOR]
ElseIf Range("A" & i) >= 4 Then
[COLOR="green"]' gib -1 aus, iWechsel korrigiert das Vorzeichen[/COLOR]
    Range("B" & i) = -1 * iWechsel

[COLOR="green"]' bei einer 1 bis 3 ...[/COLOR]
Else
[COLOR="Green"]' gib 1 aus, iWechsel korrigiert das Vorzeichen[/COLOR]
    Range("B" & i) = 1 * iWechsel
End If
Next i
 
Zuletzt bearbeitet:
Zurück
Oben