Bin ich zu blöd, oder isses wirklich so schwer

Hallo,

ich möchte, daß mir Excel alle möglichen 5stelligen Zahlen,
in denen die Ziffern 1,2,3,4,5 nur EINMAL vorkommen, ausgibt.
Das soll auch für 6,7 und 8 Ziffern funktionieren, aber 5 reicht erstmal.
Das müßten 120 Stück sein.

Wer kann mir einen Lösungsansatz (Makro) nennen?

besten Dank im Voraus
Bernd

kombinationen

ich möchte, daß mir Excel alle möglichen 5stelligen Zahlen,
in denen die Ziffern 1,2,3,4,5 nur EINMAL vorkommen, ausgibt.
Das soll auch für 6,7 und 8 Ziffern funktionieren, aber 5
reicht erstmal.
Das müßten 120 Stück sein.
Wer kann mir einen Lösungsansatz (Makro) nennen?

Hi Bernd,
A1: 1
A2: 2
A3: 3
A4: usw
Dann Test() starten.
Gruß
Reinhard

Sub Test()
 Dim i As Long
 Dim src As Range
 Dim dest As Range
 Dim y() As String
 Set src = Range("A1")
 Set dest = Range("B1")
 ReDim y(1 To 1)
 y(1) = ""
 Do Until IsEmpty(src)
 Include Left(src.Text, 1), y
 Set src = src.Offset(1, 0)
 Loop
 For i = 1 To UBound(y)
 dest(i, 1).Value = y(i)
 Next i
 dest.Resize(UBound(y)).Sort dest
End Sub

Private Sub Include(x As String, y As Variant)
 Dim i As Long
 Dim j As Long
 Dim m As Long
 Dim n As Long
 m = UBound(y)
 n = Len(y(1))
 ReDim Preserve y(1 To m \* (n + 1))
 For i = n To 0 Step -1
 For j = 1 To m
 y(i \* m + j) = Left(y(j), i) & x & Right(y(j), n - i)
 Next j
 Next i
End Sub

Aller Besten Dank
und so wahnsinnig schnell
funktioniert prima
jetzt muß ich nur noch rausfinden wie, sollte aber kein Problem sein

Gruß bernd

und so wahnsinnig schnell
funktioniert prima
jetzt muß ich nur noch rausfinden wie, sollte aber kein
Problem sein

Hi Bernd,
ja, ist super schnell, ich fand es uirgendwann mal im Internet. Meine Kenntnisse reichen nur so weit, das mit 5 For-Schleifen zu lösen, wo dann immer geprüft wird ob die Schleifenzahl schon in den anderen Schleifenzahlen vorkommt, was natürlich alles verlangsamt.
Gruß
Reinhard

Hallo Bernd,
Die von Reinhard vorgeschlagene Lösung erschließt sich mir überhaupt nicht und funktioniert bei mir mit EXCEL97 nicht.
Mein etwas konventionellerer Ansatz sieht so aus:

Sub Zahlensuchen()
' Die gefundenen Zahlen werden ab der aktuellen Zelle abwärts eingetragen
'Eingabe von Anfangs- und Endzahl
 BoxText = "Ab welcher Zahl soll gesucht werden?" & Chr$(13) & "Nur ganze Zahlen eingeben!!"
 BoxTitel = "Ziffernsuchen"
 BoxVorgabe = 10000
 BoxType = 1
 Startzahl = Application.InputBox(BoxText, BoxTitel, BoxVorgabe, , , , , BoxType)
 If Startzahl = False Then GoTo Abbruch
Eingabe2:
 BoxText = "Bis zu welcher Zahl soll gesucht werden?" & Chr$(13) & "Nur ganze Zahlen eingeben!!" & Chr$(13) & "Endzahl muß größer Startzahl sein!!"
 BoxTitel = "Ziffernsuchen"
 BoxVorgabe = Startzahl + 89999
 BoxType = 1
 Endzahl = Application.InputBox(BoxText, BoxTitel, BoxVorgabe, , , , , BoxType)
 If Endzahl = False Then GoTo Abbruch
 If Endzahl 

Laufzeit auf meinem schon etwas betagten Notebook: ca. 10. Sekunden für die Zahlen von 10000 bis 99999. Dabei hat insbesondere die Überprüfung des Querprodukts die Laufzeit reduziert.
Die Anpassung für Zahlen 1, 2, 3 , 4, 5 und 6 hab ich als Bemerkung eingetragen. Diese Zeilen sind zusätzlich oder ersetzen entsprechende Zeilen.


> <small>[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]</small>

Hallo Reinhard,

dies ist wirklich eine sehr elegante Lösung, auch wenn ich noch nicht alle Funktionen und Operationen im Makro nachvollziehen konnte. Es funktioniert jetzt übrigens auch bei mir mit EXCEL97.

Mein Weg sucht nach den Nadeln im Heuhaufen und der von dir beschriebene listet sofort die Nadeln auf. Leider ist Kombinatorik nicht so meine Stärke, so dass ich garnicht erst in diese Richtung gedacht habe.

Gruss

Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

dies ist wirklich eine sehr elegante Lösung, auch wenn ich
noch nicht alle Funktionen und Operationen im Makro
nachvollziehen konnte. Es funktioniert jetzt übrigens auch bei
mir mit EXCEL97.

Hallo Franz,
was und wie musstest du denn abändern damit es in XL97 läuft, ich habe XL2000. Dort ist zwar in der Hilfe aufgelistet was es an Neuerungen gibt aber irgendwie unvollständig, d.h. ich kann nirgends genau nachlessen welche Befehle es in XL97 nicht oder anders funktionierend gab bzw nicht gab.
Gruß
Reinhard

Hallo Reinhard,
am Makro mußte ich garnichts ändern. Ich hatte in Spalte A mehr als 8 Zahlen eingetragen und dann gab es eine Fehleermeldung, weil ein Grenzwert überschritten war. Ich nehme an es war die max. Zeilenzahl in einer EXCEL-Tabelle.

Gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]