Excel - Zufallswert wiederholt subtrahieren?

...komplette Frage anzeigen

2 Antworten

Das funktioniert nur mit einem Makro - über Formeln wird das Ergebnis immer neu berechnet, man kann so keine Zwischenergebnisse fixieren. Gleiches gilt für das Schreiben in andere Zelle: Eine Formel greift immer nur für die Zelle, in der sie steht. Aus der Zelle heraus, kann man nicht in andere Zellen hineinschreiben.

Wenn Du nicht die Ergebnisse des Zufallswertes manuell als feste Werte eintragen willst (also F9, dann das Ergebnis in eine Zelle eintragen. A1=100-Summe dieser Liste), geht wie gesagt nur ein Makro:

Sub zufall()
Range("A1").Value = Range("A1").Value - Int(Rnd() * 10) + 1
End Sub

das rnd()*10)+1 heißt ganze Zahl zwischen 1 und 10, kannst Du ggf. anpassen.

Das Makro kannst Du auch hinter eine Tastenkombination legen und statt F9 immer wieder erneut ausführen. Wenn die Anzahl der Wiederholungen feststeht, kannst Du das natürlich auch direkt in das Makro einbauen: So wären es 10 Wiederholungen

sub zufall2()
for i=1 to 10

Range("A1").Value = Range("A1").Value - Int(Rnd() * 10) + 1

next

End Sub

Iamiam 12.05.2016, 22:47

wobei ich das mit relativen Versetzungen samt Anpassung der Zufsallszahl an den verbleibenden Wert ausgestalten würde:

Sub ZufallsVerminderung()

Activecell.offset(0, 1).value = Int(Rnd() * Activecell.value)

Activecell.offset(1, 0).value = Activecell.value -  Activecell.offset(0, 1).value

Activecell.offset(1, 0).activate

end sub

Dieses Makro einem Bild oder einer Autoform zuweisen (zB Textfeld), dann den Cursor auf die Startzahl setzen: Die Stufen werden separat untereinander generiert, ebenso die Zufallszahlen rechts daneben dokumentiert.

Schon vorhandene Einträge aber würden gnadenlos überschrieben.

2
krake82 13.05.2016, 09:55
@Iamiam

Hi Iamiam,

das ist auch eine schicke Lösung. Vielen Dank!

Hier hätte ich auch noch 2 kleine Fragen bis ich am Ziel bin:

Ist es möglich anstatt Activecell eine bestimme Zelle anzugeben (also A1) und trotzdem die Versetzung beizubehalten? Damit ich nicht erst den Cursor setzen muss, sondern es auf Button-Druck direkt an der gewünschten Stelle losgeht?

Und auch hier (wie schon in meiner Antwort an Niombre beschrieben) hätte ich im Endeffekt gerne noch einen zweiten Zufallswert der vom ersten Zufallswert abgezogen und das Ergebnis daraus dann von meiner Zelle A1 abgezogen wird. Hoffe auch hier das ist nicht zuviel verlangt! :)

Besten Dank & Grüße
krake

0
Iamiam 13.05.2016, 12:48
@krake82

Hi Krake, möglich ist mit etwas Phantasie und ±Aufwand (fast) alles möglich. Nur zieht jede Forderung nach eigener Bequemlichkeit sofort einen Rattenschwanz nach: in diesem Fall zB das automatische Löschen des Feldes vor Beginn einer neuen Aktion.

Deine andere Forderung, einen Zufallswert von einem anderen abzuziehen: dürfen da auch negative Zahlen rauskommen? -ist ja schon beantwortet- Oder ein zweiter Zufallswert nach Maßgabe der Größenordnung des ersten?

im Übrigen: ist Deine Anordnung von aussen vorgegeben? ich halte sie nämlich -grad unter >Berücksichtigung Deiner letzten Anforderung- für etwas unglücklich!

Nur soviel als Hinweise. Da sich Ninombre weiter um diese Angelegenheit kümmert, werde ich das aber nicht selbst weiterverfolgen.

Und vergiss nicht, eine Hilfreichste zu vergeben!

0
krake82 13.05.2016, 09:37

Hi Ninombre,

vielen Dank für die schnelle und toll erklärte Antwort! Das hilft mir schonmal sehr und löst im Grunde mein eigentliches Problem.

Ist es jetzt noch möglich den Zufallswert in Zelle B anzeigen zu lassen? Das wäre super!

Im 2. Schritt wird es jetzt noch etwas komplizierter, ich hoffe ich darf dich damit nochmal nerven?
Ich habe in Zelle A1 meinen Wert 100. In A2 einen Zufallswert 1 (zwischen 1 und 24). In Zelle A3 soll nun ein Zufallswert 2 (auch zwischen 1 und 24) berechnet werden, der dann von Zufallswert 1 abgezogen wird. Das Ergebnis daraus soll dann schließlich von A1 (also 100) abgezogen werden. Den Subtraktionswert würde ich auch gerne anzeigen lassen. Dann wäre es perfekt!

Wie gesagt, hoffe damit falle ich jetzt nicht zu sehr mit der Tür ins Haus.

Besten Dank & Grüße
krake

0
Ninombre 13.05.2016, 09:49
@krake82

kein Problem - Du kannst überlegen, ob im Makro nur die Zufallswerte geschrieben werden sollen und das Subtrahieren per Formel läuft oder direkt auch im Makro subtrahiert werden soll.

Sub zufall()

Range("A2").Value = Int(Rnd() * 24) + 1

Range("A3").Value = Int(Rnd() * 24) + 1

Range("B1").Value = Range("A2").Value - Range("A3").Value

Range("A1").Value = Range("A1").Value - Range("B1").Value

End Sub

1
krake82 13.05.2016, 10:08
@Ninombre

Okay super. Fast da! :) Jetzt müsste nur noch unterbunden werden, dass die beiden Zufallswerte eine negative Zahl ergeben. Sonst ergibt sich durch das doppelte Minus ein Plus und Wert A1 kann auch ansteigen. Das sollte nicht sein. :)

0
Ninombre 13.05.2016, 10:13
@krake82

Da gäbe es zwei Möglichkeiten - entweder ein mögliches negatives Ergebnis in ein positives drehen (quasi Betrag davon bilden) oder die zweite Zufallszahl von 1 bis max. Wert der ersten Zufallszahl eingrenzen.

Sub zufall() 'mit abs = Betrag
Range("A2").Value = Int(Rnd() * 24) + 1
Range("A3").Value = Int(Rnd() * 24) + 1
Range("B1").Value = Abs(Range("A2").Value - Range("A3").Value)
Range("A1").Value = Range("A1").Value - Range("B1").Value
End Sub

Sub zufall() 'maximalwert begrenzen
Range("A2").Value = Int(Rnd() * 24) + 1
Range("A3").Value = Int(Rnd() * Range("A2").Value) + 1
Range("B1").Value = Range("A2").Value - Range("A3").Value
Range("A1").Value = Range("A1").Value - Range("B1").Value
End Sub

2
krake82 13.05.2016, 10:43
@Ninombre

Jetzt ist es perfekt! :) Vielen vielen Dank für deine schnelle und super kompetente Hilfe, Ninombre. Bin ganz begeistert.

Allerbeste Grüße!
krake

0

Es gibt aber auch noch eine (komplizierte) Formelanordnung, weiß nicht, ob ich die heut noch hinkriege.oder sogar noch  finde.

Was möchtest Du wissen?