Microsoft Excel

Herbers Excel/VBA-Archiv

Zahlenkombinationen

Betrifft: Zahlenkombinationen von: Tom
Geschrieben am: 04.11.2020 00:01:47

Hallo,
da ich in VBA noch nicht weit gekommen bin, und sich das über Formeln nicht lösen läßt,
bitte ich um Hilfe bei folgendem Problem:
Es sollen ALLE möglichen Kombinationen einer Anzahl von Zahlen, die vorher definiert werden,
in einer gewählten Anzahl von Spalten generiert werden.
Z.B. Zahlen: 1 bis 10 in 5 Spalten:

1 2 3 4 5
1 2 3 4 6
1 2 3 4 7
1 2 3 4 8
1 2 3 4 9
1 2 3 4 10
1 3 4 5 6
1 3 4 5 7
.
.
.
6 7 8 9 10

Danke für Eure Hilfe im Voraus.
Grüße Tom

Betrifft: AW: Zahlenkombinationen
von: Rudi Maintaire
Geschrieben am: 04.11.2020 09:36:27

Hallo,
guck mal hier:
https://www.herber.de/excelformeln/pages/Kombinatorik_Permutationen_mitohne_Wiederholung.html

Gruß
Rudi

Betrifft: AW: Zahlenkombinationen
von: Tom
Geschrieben am: 04.11.2020 12:39:46

Hallo Rudi,

das funktioniert für mich so nicht, da jeder Wert einzeln in einer Zelle stehen soll.
(das Formular hat offensichtlich die Tabs zw. den Zahlen entfernt)

Gruß Tom

Betrifft: AW: ALLE? ermittele mal deren Anzahl owT
von: neopa C
Geschrieben am: 04.11.2020 10:25:06

Gruß Werner
.. , - ...

Betrifft: AW: ALLE? ermittele mal deren Anzahl owT
von: Tom
Geschrieben am: 04.11.2020 12:19:08

Hallo,
da wurde etwas offensichtlich falsch verstanden.
Die Anzahl der Zahlen soll für jeden neuen Vorgang frei wählbar sein.
Aber aus diesen frei wählbaren Zahlen (max. 100) sollen dann ALLE mathematisch möglichen
Kombinationen generiert und ausgegeben werden.
In dem angeführten Beispiel wären das 252 Zeilen mit 5 Spalten.

Grüße Tom

Betrifft: AW: Zahlenkombinationen
von: Tom
Geschrieben am: 08.11.2020 11:28:45

Leider ist das keine brauchbare Lösung der Aufgabe.
Gibt es bessere Lösungen?

Gruß Tom

Betrifft: AW: Zahlenkombinationen
von: Daniel
Geschrieben am: 09.11.2020 00:01:18

Hi

wenn die Anazahl der Spalten nicht fest vorgegeben sein soll, dann hilft vielleicht Rekrusion (ein sich selbst aufrufendes Makro)

Beispiel hier:
Gestartet werden muss das Makro StartMakro.
die zu verwendenden Werte legst du am Anfang dieses Makros fest, im String Zahlen mit Bindestrich getrennt und die Anzahl der Spalten durch die dimensionierung des Arrays Kombi.
Option Explicit
Dim strErg
Dim Kombi

Sub StartMarko()
Dim Zahlen As String
Dim arr1, arr2, Werte
Dim z As Long, s As Long

Zahlen = "-1-2-3-4-5-6-7-8-9-10" 'verwendete Zahlen
ReDim Kombi(1 To 5)     'anzahl Spalten

strErg = ""
Call Rekursion(Zahlen, 1)

arr1 = Split(strErg, "|")
ReDim arr2(1 To UBound(arr1), 1 To UBound(Kombi))

For z = 1 To UBound(arr1)
    Werte = Split(arr1(z), ";")
    For s = 0 To UBound(Werte)
        arr2(z, s + 1) = Werte(s)
    Next
Next

Cells(1, 1).Resize(UBound(arr2, 1), UBound(arr2, 2)) = arr2

End Sub

Sub Rekursion(ByVal Zahlen As String, ByVal Spalte As Long)
Dim arrZahlen
Dim z As Long
arrZahlen = Split(Zahlen, "-")
For z = 1 To UBound(arrZahlen) - 1
    Kombi(Spalte) = arrZahlen(z)
    If Spalte = UBound(Kombi) Then
        strErg = strErg & "|" & Join(Kombi, ";")
    Else
        Call Rekursion(Replace(Zahlen, "-" & arrZahlen(z) & "-", "-"), Spalte + 1)
    End If
Next
End Sub
Gruß Daniel

Betrifft: AW: Zahlenkombinationen
von: Tom
Geschrieben am: 10.11.2020 12:20:26

Hallo Daniel,

erst mal danke für deine Mühe.
Ich verstehe die Funktion mancher Teile im Script nicht ganz, sehe aber dass die Problemstellung nicht ganz erfaßt wurde.
Ich lade darum ein Excel-file hoch mit einer genaueren Erklärung der
Aufgabe.
Hallo Daniel,

erst mal danke für deine Mühe.
Ich verstehe die Funktion mancher Teile im Script zwar nicht ganz,
sehe aber dass die Problemstellung nicht vollständig erfaßt wurde.
Ich lade darum ein Excel-file hoch mit einer genaueren Erklärung der
Aufgabe. https://www.herber.de/bbs/user/141450.xlsx

Gruß Tom

Betrifft: AW: Zahlenkombinationen
von: Daniel
Geschrieben am: 10.11.2020 12:51:51

Das ist jetzt irgendwie ne ganz andere Aufgabe als das, was ursprünglich beschrieben wurde.
Hier müsste es relativ einfach sein, pro Zeile mit Summe(Zählenwenn(A1:E1;{1;2;3})) die Anzahl der Übereinstimmungen zu ermitteln und danach zu filtern.

Gruß Daniel