Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
696to700
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
696to700
696to700
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kombinationen auslesen mit VBA

Kombinationen auslesen mit VBA
15.11.2005 14:10:19
Christian
Hallo Leser,
ich habe ein Problem. Ich habe ein (geordnete) Liste von Namen z. B. Müller, Meier, Schmidt, ...) der Länge N. Dazu eine Zahl M. Ich möchte nun in VBA mir zuerst alle Kombinationen der Länge M aus den N (Namens)Elementen erzeugen. Im Beispiel mit M=2:
Müller, Meier
Müller, Schmidt
Meier, Schmidt
Eine Lösung in Excel habe ich bereits hier gefunden und könnte diese auch auf größere (Zahlen / Gruppen) Mengen ausdehnen. Mich interessiert aber eine VBA Lösung, da diese hoffentlich schneller läuft und ich anschließend diese Kombinationen noch weiter bearbeiten will.
Vielen Dank für die Hilfe im Voraus
Christian

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kombinationen auslesen mit VBA
15.11.2005 23:25:38
Sebastian
Hallo Christian
Excel-Profi - VBA gut
1.) eine Formel ist immer schneller als ein VBA-Code, vorallem wenn er mit schleifen arbeiten muss, aber das weißt du eigentlich selbst als Profi!
Wie sieht denn deine vorhandene Formel aus, vielleicht lässt sich diese ja im VBA-Code nachstricken?
Auch das müsstest du eigentlich wissen, VBA gut!
Also, was ist die wirkliche Frage
gruss wastl
AW: Kombinationen auslesen mit VBA
16.11.2005 09:21:14
Christian
Hallo wastl,
es scheint mir als wenn Deine Antwort nicht gerade konstruktiv ist. Eine Formel ist immer schneller als ein Code, wobei eine Formel doch auch nur Code ist. Von daher könnte ich nun philosophieren. Für von Excel vorgegebene Formeln stimmt dies aber auf jeden Fall.
Aber eine Formel ist manchmal nur eine mögliche Lösung ist. Hier ist eine rekursive Lösung wohl das Optimum, die "forward" Formel funktioniert auch, aber halt nicht optimal.
Um das Problem weiter zu erklären, Excel hat nur 65536 Zeilen, falls es mehr Kombinationen sind, versagt die "Excel Lösung" und bei n!/((n-k)!*k!) als Anzahl möglicher Kombinationen ist 65536 sehr schnell erreicht.
Vielleicht helfen dir diese Angaben den Hintergrund des Problems zu verstehen und den Thread zu beenden. Also nichts für ungut
Für die gelieferte Lösung von Rolf Merci Beaucoup
Anzeige
2 aus n
16.11.2005 09:03:19
Rolf
Hallo Christian,
hier ein Algorithmus für 2er-Kombinationen -
die aus der Funktion "ZweiausN" gelieferten Zahlenkombinationen
nimmst du dann als Zeilennummern.
fG
Rolf
Option Base 1
Option Explicit

Sub Test_ZweiausN()
Dim y
y = ZweiausN(10)
MsgBox Join(y, vbLf)
End Sub

Public

Function ZweiausN(n%) As Variant
Const k% = 2
Dim b&, i%, j%, x&
b = BinomialKoeffizient(n, k)
ReDim A(b)
For i = 1 To n
For j = i + 1 To n
x = x + 1
A(x) = i & "|" & j
Next
Next
ZweiausN = A
End Function

Public

Function BinomialKoeffizient(ByVal n%, ByVal k%) As Double
Dim i%
If k + k > n Then k = n - k
BinomialKoeffizient = 0
If k >= 0 Then
BinomialKoeffizient = 1
n = n + 1
For i = 1 To k
BinomialKoeffizient = BinomialKoeffizient * (n - i) / i
Next i
End If
End Function

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige