Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1816to1820
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

chronologisch sortieren

chronologisch sortieren
27.02.2021 13:32:42
Sid
Hallo,
versuche mich gerade in VBA einzuarbeiten und ein Zahlengenerator-Script anzupassen,
mußte aber nach vielen Versuchen erkennen, dass meine Kenntnisse noch zu gering für
komplexe Aufgaben sind.
Kann mir bitte jemand helfen?
Es sollen aus einer frei wählbaren Anzahl von Zahlen (1-50) ALLE möglichen Kombinationen
in 5 Spalten aufsteigend sortiert werden.
Beispiel:
gewählte Zahlen: 2;13;14;15;26;27;38;50
Ausgabe:
2 13 14 15 26
2 13 14 15 27
2 13 14 15 38
2 13 14 15 50
2 13 14 26 27
2 13 14 26 38
2 13 14 26 50
2 13 14 27 38
2 13 14 27 50
u.s.w.
Danke, im Voraus
Sid

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: =COMBIN.LIST({2;13;14;15;26;27;38;50};5;)
28.02.2021 12:42:58
Sid
Hallo lupo1;
da ich kein 365 habe bringt das scheinbar nichts.
Ich habe die Formel in der 2013 und 2019 excel-version versucht, wird in beiden
Versionen nicht erkannt. (#NAME?)
Mit einem VBA-Script (Blatt1:Zahlen eingeben, Blatt2: Ausgabe)wäre mir mehr geholfen.
Grüße
Sid

Ja, nur als Anw.bsp. für 365-Beta-User gedacht ...
28.02.2021 14:34:07
lupo1
... in Foren muss nicht immer direkt dem Fragenden geholfen werden, denn es darf auch diskutiert oder ausprobiert werden.

Anzeige
AW: Ja, nur als Anw.bsp. für 365-Beta-User gedacht ...
28.02.2021 16:49:51
Sid
Was genau willst du mir damit sagen?
Kannst oder willst du keinen brauchbaren Ratschlag geben?

Also, dann mal ganz von vorne:
28.02.2021 18:02:39
vorne:
1. Mein Ratschlag IST brauchbar. Du hast nur nicht das richtige Programm dafür.
2. Wenn ich sage, dass man in Foren auch diskutieren statt antworten kann, meine ich das auch so.
3. Nein, eine andere Lösung habe ich grad nicht zur Hand, aber ...
4. ... es gibt Tausende von VBA-Codes, die das liefern, was Du möchtest. Du musst halt danach suchen.
5. Nein, ich recherchiere sehr schlecht und werde das Suchen nicht für Dich übernehmen.
6. Du kannst auch noch etwas warten, und jmd. bringt Dir hier evtl. den Code vorbei.

Anzeige
AW: chronologisch sortieren
28.02.2021 20:34:36
Daniel
Hi
ist ja ein relativ komplexes Thema, dass du dir da ausgesucht hast.
wenn auch die Anzahl der Spalten variabel sein soll (wovon ich mal ausgehe), dann wirst du hier um Rekursion nicht herum kommen.
der Code für die Lösung der Aufgabe ist nicht lang, erfordert aber einiges an abstraktionsvermögen.
Option Explicit
Dim Erg
Sub Start()
Dim strEingabe As String
Dim arrZahlen As String
strEingabe = InputBox("Bitte geben sie semikolon getrennt ein: als ersten Wert die Anzahl der  _
Spalten, ab dem zweiten wert die Zahlenreihe.")
ReDim Erg(1 To CLng(Split(strEingabe, ";")(0)))
Cells.Clear
Call Rekursion(strEingabe & ";", 1)
End Sub
Sub Rekursion(ByVal Zahlen As String, ByVal sp As Long)
Dim arrZahlen
Dim i As Long
arrZahlen = Split(Zahlen, ";")
For i = 1 To UBound(arrZahlen) - 1
Erg(sp) = arrZahlen(i)
If sp = UBound(Erg) Then
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, UBound(Erg)) = Erg
Else
Call Rekursion(Replace(Zahlen, ";" & arrZahlen(i) & ";", ";"), sp + 1)
End If
Next
End Sub
Gestartet wird das ganze über das Makro "Start" (wie der Name vermuten lässt) bei der Eingabe musst du als ersten Wert die Anzahl der Spalten angeben, danach dann die Zahlenfolge, alles jeweils Semikolon getrennt.
du du müsstest für dein Beispiel in die Inputbox dann
5;2;13;14;15;26;27;38;50
eingeben, wobei die erste 5 wie gesagt für die anzahl der Spalten steht.
Achtung, das Makro löscht die bestehenden Inhalte.
Gruß Daniel

Anzeige
Cool, da endlich mal universell für Kombinationen
01.03.2021 04:19:18
lupo1
... andere Lösungen zeigen meistens feste For ... Nexts in gefragter Tiefe k.
Ich habs nicht getestet, aber ich verlinke es mal allgemein (vom LAMBDA-Artikel aus).

AW: chronologisch sortieren
04.03.2021 15:51:50
Sid
Hallo Daniel,
erst mal Danke für deine Hilfe.
Anweisungstext der InputBox war scheinbar zu lange (Syntaxfehler), habe ihn gekürzt, dann hat's funktioniert.
Das Problem ist, dass es nicht wie in der Angabe funktioniert.
Anstatt alle Zahlenkombinationen, die sich in 5 Spalten aus den beschriebenen 8 Zahlen ergeben (Erg = 56 Zeilen), wird jede Zahl in JEDER Spalte mit jeder anderen verknüpft (Erg = 6721 Zeilen.)
Beispiel: 6;1;2;3;4,5;6,7 sollten 7 Zeilen ergeben.
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7
Es werden aber 5041 Zeilen ausgegeben.
Es umzuschreiben war mir unmöglich, blicke da noch nicht ganz durch.
Gruß
Sid

Anzeige
AW: chronologisch sortieren
04.03.2021 16:59:42
Daniel
Hi
ah ok verstanden.
du willst alle Variationen ausschleißen, die sich mit anderer Reihenfolge ergeben.
probiers mal so:
Option Explicit
Dim Stufen As Long
Sub Start()
Dim strEingabe As String
Dim arr
strEingabe = InputBox("Bitte geben sie semikolon getrennt ein: " & vbLf & _
"als ersten Wert die Anzahl der Spalten, ab dem zweiten wert die Zahlenreihe.")
arr = Split(strEingabe, ";")
Stufen = UBound(arr) - CLng(arr(0))
strEingabe = Mid(strEingabe, InStr(strEingabe, ";")) & ";"
Cells.Clear
Call Rekursion(strEingabe, 1)
Columns(1).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=False
End Sub
Sub Rekursion(ByVal Zahlen As String, ByVal sp As Long)
Dim arrZahlen
Dim Zahlen2 As String
Dim i As Long
arrZahlen = Split(Zahlen, ";")
For i = UBound(arrZahlen) - 1 To 1 Step -1
Zahlen2 = Replace(Zahlen, ";" & arrZahlen(i) & ";", ";")
If sp = Stufen Then
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = Mid(Zahlen2, 2, Len(Zahlen2) - 2)
Else
Call Rekursion(Zahlen2, sp + 1)
End If
Next
End Sub
der Syntaxfehler kommt übrigens durch die Forensoftware hier, die bei langen als Code markierten Zeilen versucht, diese analog dem VBA-Editor umzubrechen. Das kann sie aber nicht richtig. daher der Fehler wenn man sich solche Codezeilen aus dem Forum kopiert und einfügt.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige