347 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich habe ein Problem und zwar versuche ich zufällige Zahlenreihen zu bilden. Die Zahlenreihen sollen aus 2 X (2,3,4,5,6,7,8 Zahlen) bestehen. Jede Zahl in der Zahlenreihe soll zufällig zwischen 1-9 gneriert werden. Jedoch soll keine Zahl in der Zahlenreihe doppelt vorkommen.

Ich habe jetzt schon alles ausprobiert was man über Formeln machen kann sprich =INDEX(G1:G9;ZUFALLSBEREICH(1;9)) oder über =GANZZAHL(ZUFALLSZAHL()*(10-1)+1) jedoch kommen so immer Doppelungen vor. Mittlerweile habe ich auch rausgefunden, dass dies wahrscheinlich nur über vba geht, allerdings habe ich davon überhaupt keine Ahnung.

Kann mir vielleicht jemand weiterhelfen?

Vielen Lieben Dank schonmal im Vorraus!

LG

Ina

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Ina,

kopiere das folgende Makro in ein Standard-Modul deiner Arbeitsmappe:

Sub Zufall()
Dim arrZahlen(9) As Integer
Dim i As Integer
Dim iZ As Integer
Dim anz As Integer
Dim iTemp As Integer
Dim strZufall As String
        
'Array mit Ziffern 1 bis 9 füllen
For i = 1 To 9
  arrZahlen(i) = i
Next i
        
'nun das Feld durchmischen
For i = 9 To 1 Step -1
   Randomize Timer
   iZ = Int((i * Rnd) + 1)
   iTemp = arrZahlen(iZ)
   arrZahlen(iZ) = arrZahlen(i)
   arrZahlen(i) = iTemp
Next i
        
'nun per Zufall die Anzahl der Ziffern ermittlen
'zwischen 2 und 8 Ziffern
Randomize
anz = Int((8 - 2 + 1) * Rnd + 2)

'nun die Zufallszahl zusammensetzen
For i = 1 To anz
 strZahl = strZahl & arrZahlen(i)
Next i

'und nun die zusammengesetzte Zufallszahl als Zahl in aktive Zelle ausgeben
ActiveCell = CLng(strZahl)
       
End Sub

Das Makro fügt eine Zahl mit 2 bis 8 Stellen mit den Ziffern 1 bis 9 in die aktive Zelle ein. Dabei kommen keine Ziffern doppelt vor. Dabei wird sowohl die Anzahl der Ziffern als auch deren Reihenfolge zufällig ermittelt.

Schau mal ob das Makro so funktioniert, wie du willst.

Gruß

M.O.

0 Punkte
Beantwortet von ina-palina Einsteiger_in (9 Punkte)
Hallo M.O.

vielen lieben Dank für deine Hilfe!

Also bis jetzt sieht es soweit ganz gut aus, es kommen keine Dopplungen mehr vor..

Allerdings wird nur eine Zahlenreihe von 6 Ziffern ausgegeben.

Was ich allerdings benötige ich so etwas wie dieses hier:

1. 9 7
2. 6 3
3. 5 9 2
4. 6 9 4
5. 7 2 8 6
6. 6 4 3 9
7. 4 2 7 3 1
8. 7 5 8 3 6
9. 3 9 2 4 8 7
10. 6 1 9 4 7 3
11. 4 1 7 9 3 8 6
12. 6 9 1 7 4 2 8
13. 3 8 2 9 6 1 7 4
14. 5 8 1 3 2 6 4 7
15. 2 7 5 8 6 3 1 9 4
16. 7 1 3 9 4 2 5 6 8

Weißt du wie das funktioniert?

LG

Ina
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Ina,

ich hatte nicht erfasst, wass du mit

Die Zahlenreihen sollen aus 2 X (2,3,4,5,6,7,8 Zahlen) bestehen

meintest sad.

Hier das angepasste Makro:

Sub Zufall()
Dim arrZahlen(9) As Integer
Dim i As Integer
Dim iZ As Integer
Dim anz As Integer
Dim iTemp As Integer
Dim strZufall As String
Dim z As Integer
Dim d As Integer
Dim lngZeile As Long

For d = 1 To 7
 
  For z = 1 To 2
        
  'Array mit Ziffern 1 bis 9 füllen
   For i = 1 To 9
      arrZahlen(i) = i
   Next i
        
   'nun das Feld durchmischen
   For i = 9 To 1 Step -1
       Randomize Timer
       iZ = Int((i * Rnd) + 1)
       iTemp = arrZahlen(iZ)
       arrZahlen(iZ) = arrZahlen(i)
       arrZahlen(i) = iTemp
   Next i
        

   'nun die Zufallszahl zusammensetzen
   For i = 1 To d + 1
      strZahl = strZahl & arrZahlen(i)
   Next i
   'Zähler für Einfügezeile erhöhen
   lngZeile = lngZeile + 1
   'und nun die zusammengesetzte Zufallszahl als Zahl ausgeben
    Cells(lngZeile, 1) = CLng(strZahl)
    'Variable für Zahl zurücksetzen
    strZahl = ""
  Next z
Next d
       
End Sub

Die Zahlen werden ab der Zelle A1 in Spalte A untereinander ausgegeben.

Gruß

M.O.

0 Punkte
Beantwortet von ina-palina Einsteiger_in (9 Punkte)
Hallo M.O.,

tausend Dank Dir!

Schicke Dir einen imaginären Kuchen!

Freue mich sehr, dass Du Dir die Zeit genommen hast um mir zu helfen!

LG

Ina
...