Mit RND doppelte Einträge möglich oder nicht?

Bild

Betrifft: Mit RND doppelte Einträge möglich oder nicht?
von: Drazen
Geschrieben am: 01.03.2005 22:21:45
Hallo,
Ich lasse mir in eine Tabelle als "Schlüssel" für die Daten per VBA eine ZufallsZahl eintragen, niiedrigster Wert ist 1 und höchster 100.000 (da die Tabelle eh bei 65536 aufhört, dürfte das ja reichen. Nun meine Frage, ist es irgedwie möglich zu bestimmen, dass die ZufallsZahl nicht zwei mal in der gleichen Tabelle vorkommt?
Grüsse
Drazen

Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: MichaV
Geschrieben am: 01.03.2005 22:34:57
Nabnd Drazen,
ist m.E. nicht möglich, denn dann wären es ja keine Zufallszahlen mehr. Warum nimmst Du nicht einfach aufsteigende Nummern von 1 bis 65536 als Schlüssel? Dann ist sicher, daß keine Zahl doppelt ist. Oder addiere eine Zufallszahl zum Vorgänger- Schlüssel....

Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Drazen
Geschrieben am: 01.03.2005 22:39:23
Hallo Micha,
ich nehme keine aufsteigende Zahlen, da ich ab und zu eine Zeile löschen muss, und das ganze wir über UFs angesteuert, die generierte ZufallsZahl dient eigentlich nur nachher zum erkennen und leichteren Finden des DatenSatzes. Ist schon OK so, ich hoffe es gibt keine Doppelten, hab zu wenig Erfahrung damit, Danke für Deine schnelle Antwort.
Grüsse
Drazen
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Bert
Geschrieben am: 01.03.2005 22:56:03
Hi,
wie erzeugst du die Zahlen?
Bert
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Drazen
Geschrieben am: 01.03.2005 22:59:06
Hi Bert,
freut mich dass ich immer wieder auf Dich und all die anderen TOP Leute hier treffe.
Ich mach das so:
Cells(xZeile, 28) = Int((99999 - 1 + 1) * Rnd + 1)
Code hab ich von Herbers CD geklaut ;-)
Grüsse
Drazen
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Bert
Geschrieben am: 01.03.2005 23:04:16
Hi,
Poste mal bitte den Code mit Deklaration und Schleife.
Bert
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Drazen
Geschrieben am: 01.03.2005 23:08:23
Hi,
ist nix Weltbewegendes, nur ein einfacher ZeileEintrag:

Private Sub cmdEintragen_Click()
    Sheets("BESTELLUNG").Activate
    Dim xZeile As Long
    xZeile = Range("A65536").End(xlUp).Row + 1
    Cells(xZeile, 1) = lblKundeI.Caption
    Cells(xZeile, 2) = lblArtikelI.Caption
    Cells(xZeile, 26) = Val(txtBestellNummer)
    Cells(xZeile, 27) = CDate(txtBestellDatum)
    If txtDelNotiz = "" Then
    Cells(xZeile, 21) = 0
    Else
    Cells(xZeile, 21) = CDbl(txtDelNotiz)
    End If
    If txtMenge = "" Then Exit Sub
    Cells(xZeile, 23) = CDbl(txtMenge)
    Cells(xZeile, 24) = txtMassEinheit
    Cells(xZeile, 25) = CDate(txtLieferTermin)
    Cells(xZeile, 22) = txtAnmerkung
    Cells(xZeile, 28) = Int((99999 - 1 + 1) * Rnd + 1)
    txtMenge = ""
    txtMassEinheit = ""
    txtAnmerkung = ""
    txtLieferTermin = ""
    lblArtikelNummer = ""
    lblArtikel = ""
    lstArtikel.ListIndex = -1
    cboKunde.Enabled = False
End Sub

Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Bert
Geschrieben am: 01.03.2005 23:19:56
Hi,
auf diese Weise kannst du Doppler nicht zu 100% vermeiden.
Ehrlich, ich hab den Zweck dieser Zufallszahl auch nicht verstanden.
Beschreib das mal in Pros, ggf. gibts ja eine andere Lösung.
Bert
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Drazen
Geschrieben am: 01.03.2005 23:24:45
Hi,
ich brauch halt einen Key, mit dem ich in der Bestellung den Datensatz der Bestellung kennzeichne damit ich ihn später in der Rechnung verwenden kann, ich arbeite aber auch gerade an der Korrektur der Bestellung und da könnte dieser Key auch nützlich sein um den Datensatz eventuell zu löschen oder? Es kann natürlich auch eine Fortlaufende Zahl sein, was aber passiert wenn ich einen Datensatz lösche ich möchte dass sich dann alle Datensätze natürlich nach oben verschieben aber ihren "Schlüssel" beibehalten.
Grüsse
Drazen
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Ramses
Geschrieben am: 01.03.2005 23:33:57
Hallo
Sorry, wenn ich mich einmische, aber warum nimmst du nicht
Cells(i,??) = Worksheefunction.MAX(Deine_Nummernspalte) + 1
Dann hast du aufsteigende, eindeutige Nummern ohne Doppler
Gruss Rainer
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Drazen
Geschrieben am: 01.03.2005 23:43:10
Hallo Rainer,
ganz einfach weil ich diese Funktion bisher noch nicht gekannt habe, was mainst Du mit (Deine_Nummernspalte), muss ich da "AB1" angeben oder 28?? Vieleicht eine Top Lösung, bitte nur um nähere Erklärung.
Grüsse
Drazen
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Ramses
Geschrieben am: 01.03.2005 23:46:56
Hallo
das geht ganz einfach
Worksheetfunction.Max(range("A1:A10000")) + 1
Sucht den grössten Wert in A1:A10000 und addiert 1.
Fertig ;-)

Gruss Rainer
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Drazen
Geschrieben am: 01.03.2005 23:54:39
Hi,
Prob. gelöst!!!
Vielen Dank für die ausführliche Hilfe an alle beide.
Grüsse
Drazen
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: K.Rola
Geschrieben am: 01.03.2005 23:55:13
Hallo Ramses,
schön, mal wieder von dir zu lesen.
Wußtest du übrigens, dass Worksheetfunction.FunctionXXX() bei einigen Funktionen
einen bug hat? Besser ist Application.FunctionXXX(), wenn auch nicht mehr dokumentiert
ist und obwohl die ja eigentlich in einer eigenen Klasse gekapselt sind.
Schönen Abend und Gruß K.Rola
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Ramses
Geschrieben am: 02.03.2005 08:08:46
Hallo K.Rola
Bin erstaunt gewesen welche Auswirkungen mein Beitrag imn OffTopic verursachte :-)
Trotzdem schön :-)
Danke für die Info, werde ich mir merken.
Mal sehen ob da für Application was finde. Muss ja irgendwo mal dokumentiert gewesen sein. Stehen im Application-Object eigentlich alle Worksheet-Function dann zur Verfügung ?
Gruss Rainer
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: K.Rola
Geschrieben am: 02.03.2005 11:53:35
Hallo Ramses,
ab E 97 sind die Funktionen in der Klasse Worksheetfunction. Aus Kompatibilitätsgründen
sind sie auch weiterhin direkt der Application zugeordnet, werden dort aber im Objektkatalog nicht angezeigt. Nach meiner Erfahrung stehen in beiden Klassen
die identischen Function zur Verfügung.
Gruß K.Rola
Bild

Betrifft: AW: Mit RND doppelte Einträge möglich oder nicht?
von: Bert
Geschrieben am: 01.03.2005 23:42:54
Hi,
"möchte dass sich dann alle Datensätze natürlich nach oben verschieben aber ihren "Schlüssel" beibehalten."
Das tun sie auch, wenns keine Zufallszahlen sind. Wenns dann aber unbedingt welche sein sollen, dann z.B. so:
Do
deineZelle = Int(Rnd * 99999 + 1)
Loop Until WorksheetFunction.CountIf(deinZellbereich, deineZelle) = 1
Bert
Bild

Betrifft: Zufallszahl von … bis ...ohne Wiederholungen
von: Beate Schmitz
Geschrieben am: 01.03.2005 22:58:02
Hallo Drazen,
hier eine Lösung mit Hilfsspalte:
http://www.xl-faq.de/xl-faq/xl-faqs03.htm#xlaad
Gruß,
Beate
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Mit RND doppelte Einträge möglich oder nicht?"