Autor
|
Thema: Zufallszahlen (446 mal gelesen)
|
Ralf_A Mitglied
Beiträge: 269 Registriert: 14.10.2002
|
erstellt am: 01. Sep. 2006 08:04 <-- editieren / zitieren --> Unities abgeben:
Hallo, in einer Tabelle möchte ich folgenden Bereich erstellen, 8 Spalten und 99 Zeilen entspricht 792 Zellen. In jeder der 792 Zellen soll in zufälliger Reihenfolge eine Zahl erscheinen, es müssen alle 792 Zahlen benutzt werden ,es darf jedoch keine Zahl doppelt vorkommen. Die Funktion „ZUFALLSBEREICH“ bringt mich nicht weiter, weil dabei Zahlen doppelt vorkommen. Danke im voraus für eure Hilfe Ralf
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADdog Ehrenmitglied V.I.P. h.c.
Beiträge: 2237 Registriert: 30.04.2004 Intel Xeon 3,6 GHz 32 GB RAM NVIDIA Quadro P2000 Windows 10 Enterprise AutoCADmap 3D 2023 WS-Landcad 2023 QGIS 3.10
|
erstellt am: 01. Sep. 2006 09:07 <-- editieren / zitieren --> Unities abgeben: Nur für Ralf_A
Hallo, ohne Programmierung schlage ich vor: in Tabelle 1 in alle 8 Spalten und 99 Zeilen also von A1 bis H99 eintragen: "=ZUFALLSZAHL()" in Tabelle 2 in Zelle A1 eintragen: "=RANG(Tabelle1!A1;Tabelle1!$A$1:$H$99)" diese Formel in alle Zellen bis H99 kopieren ------------------ gruß CADdog, the dog formerly known as TR AutoCAD spricht mit einem, aber viele hören nicht zu. [Diese Nachricht wurde von CADdog am 01. Sep. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 01. Sep. 2006 09:46 <-- editieren / zitieren --> Unities abgeben: Nur für Ralf_A
mit VBA würde ich vorschlagen: diesen code erweitertCode: Option Explicit Option Base 1 Public Const MAX = 792 Sub Zufall1() Dim i, Zufall As Integer, t As Integer Dim vorrat(MAX) As Integer For i = 1 To MAX vorrat(i) = i Next Randomize t = 1 For i = 1 To 100 If i = 100 Then t = t + 1 i = 1 End If If t = 9 Then Exit Sub End If Do Zufall = Rnd * (MAX - 1) + 1 If vorrat(Zufall) <> 0 Then Cells(i, t) = vorrat(Zufall) vorrat(Zufall) = 0 Exit Do End If Loop Next End Sub
mappe anbei ------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... ---------------- Erfinnder-Gilden-Lehrling Stufe: 0,5 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bst Mitglied
Beiträge: 192 Registriert: 31.08.2004 .
|
erstellt am: 01. Sep. 2006 10:44 <-- editieren / zitieren --> Unities abgeben: Nur für Ralf_A
Auch Hallo, Oder auch so, benötigt je Zelle nur einen Schleifendurchlauf. CU, Bernd --
Code: Option ExplicitSub RandomNumbers() Dim arNumber() As Long, lngLastNumber As Long, i As Long, lngZufall As Long Dim rngQuelle As Range, rngZelle As Range Set rngQuelle = Range("A1:H99") lngLastNumber = rngQuelle.Cells.Count ReDim arNumber(1 To lngLastNumber) For i = 1 To lngLastNumber arNumber(i) = i Next i For Each rngZelle In rngQuelle lngZufall = Int(Rnd() * lngLastNumber + 1) rngZelle.Value = arNumber(lngZufall) arNumber(lngZufall) = arNumber(lngLastNumber) lngLastNumber = lngLastNumber - 1 Next rngZelle End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf_A Mitglied
Beiträge: 269 Registriert: 14.10.2002
|
erstellt am: 04. Sep. 2006 07:25 <-- editieren / zitieren --> Unities abgeben:
|