Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Mögliche Kombinationen automatisch zusammenstellen
#1
Hallo. Ich habe gerade eine Liste mit möglichen Nummern-Kombinationen erhalten. Aus dieser soll ich nun eine neue Liste mit allen Artikelnummern generieren, die möglich sind. Insgesamt sind es 15 Stellen mit zwischen 1 und 26 möglichen Zahlen/Buchstaben.
Gibt es eine Formel, mit der es möglich ist, aus all diesen möglichen Zahlen/Buchstaben eine komplette Liste zu generieren, die JEDE mögliche Artikelnummer enthält? Ich müsste es sonst manuell erstellen, was aber echt sehr viel Arbeit wäre und sehr fehleranfällig wie ich meine.
Ich hoffe, Ihr könnt mir da helfen. Vielen Dank schon mal im Voraus.


Gruß,

Bodo


Angehängte Dateien
.xlsx   Aperio-.xlsx (Größe: 9,8 KB / Downloads: 6)
Antworten Top
#2
Hallo Bodo,

aus den Kombinationen ergeben sich ca. 830 Millionen Möglichkeiten.
Die willst Du alle aufgelistet haben?

LG Gerd
Antworten Top
#3
Hallo Gerd,

ja, so dramatisch es auch klingt, aber es sollen alle möglichen Kombinationen gelistet werden. Diese sollen in einer Datenbank fix hinterlegt werden. Aus meiner Sicht macht das absolut keinen Sinn, aber mein Chef verlangt das so. Keine Ahnung was der Sinn dabei sein soll, denn eigentlich macht es keinen Sinn. Da bin ich auch mit meinen Kollegen einig. Shit happens. So viele Zeilen kann Excel gar nicht stemmen, oder?


Bodo
Antworten Top
#4
Hola,

du hast in Excel knapp über 17 Mrd. Zellen zur Verfügung. Allerdings solltest du deinen Chef noch mal fragen, ob er das wirklich will.

Gruß,
steve1da
Antworten Top
#5
Okay, immerhin gäbe es dann genug Platz.

Wir haben das fast eine Stunde im Meeting mit ihm ausdiskutiert und er will die Liste so haben. Idealerweise heute noch, egal wie...
Antworten Top
#6
Hallo Bobo,

das sind wirklich extrem viele Daten ... oO.

Arrays kommen bei dieser Datenmenge an Ihre Grenzen, daher sah ich nur die Möglichkeit, Stück für Stück die Kombis in eine TXT-Datei zu schreiben.

Versuch Dich mal mit folgendem Code
Code:
Option Explicit

Public Sub NummernGenerieren()

   Dim QuellArr As Variant
   Dim TempArr As Variant
   Dim KombiArr As Variant
   Dim ZielArr As Variant
   Dim i As Long, j As Long, k As Long, Start As Date
   Dim Paket As Long
   Dim a As String, Ausgabefile As String
   Dim i1 As Long, i2 As Long, i3 As Long, i4 As Long, i5 As Long
   Dim i6 As Long, i7 As Long, i8 As Long, i9 As Long, i10 As Long
   Dim i11 As Long, i12 As Long, i13 As Long, i14 As Long, i15 As Long
   
   QuellArr = ThisWorkbook.Worksheets("Tabelle1").Range("A2:O27").Value
   
   ReDim KombiArr(LBound(QuellArr, 2) To UBound(QuellArr, 2))
   
   'Kombinationsmöglichkeiten auslesen und leere Zellen ignorieren
   For i = LBound(QuellArr, 2) To UBound(QuellArr, 2)
       k = 0
       Set TempArr = Nothing
       For j = LBound(QuellArr, 1) To UBound(QuellArr, 1)
           If Not IsEmpty(QuellArr(j, i)) Then
               k = k + 1
               If Not IsArray(TempArr) Then
                   ReDim TempArr(1 To k)
               Else
                   ReDim Preserve TempArr(1 To k)
               End If
               TempArr(k) = QuellArr(j, i)
           End If
       Next j
       KombiArr(i) = TempArr
   Next i
   
   'Anzahl Kombinationen ermitteln
   k = 1
   For i = LBound(KombiArr, 1) To UBound(KombiArr, 1)
       k = k * UBound(KombiArr(i))
   Next i
   
   'Kombinationsmöglichkeiten aufbauen und in Textdatei schreiben
   
   Start = Time()

   Ausgabefile = ThisWorkbook.Path & "\" & "Kombinationen.txt"

   Open Ausgabefile For Output As #1

   i = 0: a = "": j = 1: Paket = 250
   For i1 = LBound(KombiArr(1)) To UBound(KombiArr(1))
   For i2 = LBound(KombiArr(2)) To UBound(KombiArr(2))
   For i3 = LBound(KombiArr(3)) To UBound(KombiArr(3))
   For i4 = LBound(KombiArr(4)) To UBound(KombiArr(4))
   For i5 = LBound(KombiArr(5)) To UBound(KombiArr(5))
   For i6 = LBound(KombiArr(6)) To UBound(KombiArr(6))
   For i7 = LBound(KombiArr(7)) To UBound(KombiArr(7))
   For i8 = LBound(KombiArr(8)) To UBound(KombiArr(8))
   For i9 = LBound(KombiArr(9)) To UBound(KombiArr(9))
   For i10 = LBound(KombiArr(10)) To UBound(KombiArr(10))
   For i11 = LBound(KombiArr(11)) To UBound(KombiArr(11))
   For i12 = LBound(KombiArr(12)) To UBound(KombiArr(12))
   For i13 = LBound(KombiArr(13)) To UBound(KombiArr(13))
   For i14 = LBound(KombiArr(14)) To UBound(KombiArr(14))
   For i15 = LBound(KombiArr(15)) To UBound(KombiArr(15))
       i = i + 1: j = j + 1
       a = a & _
           KombiArr(1)(i1) & KombiArr(2)(i2) & KombiArr(3)(i3) & KombiArr(4)(i4) & KombiArr(5)(i5) & _
           KombiArr(6)(i6) & KombiArr(7)(i7) & KombiArr(8)(i8) & KombiArr(9)(i9) & KombiArr(10)(i10) & _
           KombiArr(11)(i11) & KombiArr(12)(i12) & KombiArr(13)(i13) & KombiArr(14)(i14) & KombiArr(15)(i15) & vbCrLf
   If j > Paket Then
       'Debug.Print i
       Print #1, a
       a = "": j = 1
   End If
   
   'If i > 500000 Then GoTo Ende
   Next i15
   Next i14
   Next i13
   Next i12
   Next i11
   Next i10
   Next i9
   Next i8
   Next i7
   Next i6
   Next i5
   Next i4
   Next i3
   Next i2
   Next i1
Ende:
   Close #1
   Debug.Print "Paketgröße: "; Paket, "Start: "; Start, "Ende: "; Time(), "Dauer in Min: "; Round((Time() - Start) * 24 * 60, 2)

End Sub
und lass Excel ruhig 2- 3 Stunden Zeit !!!
LG Gerd
[-] Folgende(r) 1 Nutzer sagt Danke an Bamberg für diesen Beitrag:
  • bodoalbstadt
Antworten Top
#7
Hallo Gerd,

besten Dank. Ich werde es nachher laufen lassen wenn ich Feierabend mache. Dann muss mein Chef halt bis morgen früh warten bis er die Liste bekommt. Niemand kann zaubern bei solchen Datenmengen. Vielen Dank.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste