hat jemand von euch einen Lösungsvorschlag für dieses Problem :
In einer Tabelle werden in mehreren Zellen (z.B: A5:B14) Zufallszahlen erstellt, z.B. so :
A | B | |
1 | ||
2 | ||
3 | ||
4 | ||
5 | ||
6 | ||
7 | ||
8 | ||
9 | ||
10 | ||
11 | ||
12 | ||
13 | ||
14 |
Funktionen im Tabellenblatt :
Zelle | Formel |
---|---|
A5 | =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
A6 | =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
A7 | =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
A8 | =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
A9 | =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
A10 | =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
A11 | =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
A12 | =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
A13 | =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
A14 | =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
B5 | =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
B6 | =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
B7 | =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
B8 | =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
B9 | =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
B10 | =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
B11 | =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
B12 | =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
B13 | =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
B14 | =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") |
Im Klassenmodul des Tabellenblattes werden die WERTE per Ereignismakro nach "Tabelle2" übertragen.
Damit beim Übertragen die Zufallszahlen nicht neu berechnet werden, wird der Berechnungsmodus temporär auf "manuell" umgestellt, am Ende wieder auf den zuvor gespeicherten Modus (standardmässig "Automatisch").
Leider werden aber genau bei DIESER Statusänderung (auf "automatisch") die Zufallswerte wieder neu berechnet :-( so dass sie nun nicht mehr mit den soeben übertragenen Werten übereinstimmen.
Private Sub Worksheet_Calculate()
Dim intCalc As Integer
Application.EnableEvents = False
intCalc = Application.Calculation
Application.Calculation = xlCalculationManual
Sheets("Tabelle2").[A5:B14].Value = [A5:B14].Value
Application.Calculation = intCalc 'Hier werden die Zufallszahlen neu berechnet
Application.EnableEvents = True
End Sub
Kennt jemand eine Möglichkeit, die Neuberechnung bei Statusänderung zu unterbinden ?Das gleiche passiert auch wenn man per "Extras - Optionen - Berechung" die automatische Berechnung aktiviert, daher vermute ich, das lässt sich nicht umgehen !?!!? Die Neuberechnung sollte allerdings erst wieder bei Eingabe eines Wertes in die Tabelle oder eben per Taste F9 ausgelöst werden. Ein Ereignismakro (Worksheet_Change() etc. möchte ich dazu jedoch nicht verwenden).
Vielleicht hat von euch ja doch noch jemand eine gute Idee diesbezüglich ?
Danke, Gruß NoNet