Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1684to1688
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

Kombinationen / Varianten hochzählen

Kombinationen / Varianten hochzählen
06.04.2019 13:05:54
erichm
Hallo,
ich habe mir 2 Tabellen gebastelt mit denen ich die Inhalte von Zellen zu Kombinationen verbinde.
2fach:
D.h. es gibt 2 Spalten mit einer unterschiedlichen Anzahl von Zeilen. Es wird jede Zelle (ZEILE) der Spalte 1 mit jeder Zelle (ZEILE) der Spalte 2 kombiniert.
3fach:
Wie 2fach, erweitert um eine dritte Spalte, wiederum werden aus jeder Spalte die Zellen mit jeder Zelle der anderen Spalten kombiniert.
So weit so gut.
Meine Versuche "dieses System" auf 4-fach auszuweiten sind leider gescheitert. Infosern suche ich die Lösung für die Tabelle 4fach in der beiliegenden Musterdatei.
https://www.herber.de/bbs/user/128977.xlsx
Anhand der Tabellen 2fach und 3fach kann "das System" denke ich gut nachvollzogen werden.
Besten Dank für eine Hilfe.
mfg

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

Betreff
Datum
Anwender
Anzeige
AW: als reine Formellösung kaum zu empfehlen, ...
06.04.2019 16:38:45
neopa
Hallo Erich,
... weil es in der "4-fach" Variante im Extremfall über 455 Tausend Formeln werden könnten (in der Beispielvariante würden es allerdings "lediglich" ca 5.000), wenn ich Deine Angaben richtig deute, wonach je Teil bis zu 15 Varianten möglich sein können.
Und meine Hochrechnung für den Extremfall setzt schon voraus, dass durch eine andere Formeldefinition in Q:T die Formeln in A:E evtl. eingespart werden könnten. Ohne dies kämen nochmals max. über 250.000 Formeln hinzu.
Gruß Werner
.. , - ...
AW: als reine Formellösung kaum zu empfehlen, ...
06.04.2019 16:54:17
erichm
Hallo Werner,
danke für die Rückmeldung. Bei der 4fach-Variante werden sich die Anzahl der betroffenen Zeilen "zwangsläufig" in Grenzen halten müssen. 4fach-Kombinationen werden nur für einzelne Projektabschnitte benötigt die mengenmäßig gut eingegrenzt werden können. Deswegen auch das gewählte "kleine Beispiel".
Aber manuell mit kopieren o.ä. aufzulisten, ist dann doch zu aufwändig. Darum die Anfrage hier.
Falls es eine VBA-Lösung gäbe, könnten wir diese ebenfalls integrieren.
mfg
Anzeige
AW: wenn dem so sein soll, dann ...
07.04.2019 14:27:08
neopa
Hallo Erich,
... würde ich folgende Auswertung vornehmen. Nachfolgende Formel H3 nach rechts und die Formeln A4:E4 weit genug nach unten ziehend kopieren. Diese Formeln sollten auch schneller auswerten, als die SVERWEIS()-Formeln.
Die Auswertung für 2- und 3-fach entsprechend dem hier aufgezeigten entsprechend anpassen.
Arbeitsblatt mit dem Namen '4fach'
 ABCDEFGHIJK
1       3456
2           
3Teil1Teil2Teil3Teil4Ausw  Teil1Teil2Teil3Teil4
4AEIPi.O.  AEIP
5AEIQi.O.  BFJQ
6AEIRi.O.  CGKR
7AEISi.O.   HLS
8AEITi.O.    MT
9AEIUi.O.     U
10AEJPi.O.      
11AEJQi.O.      
12AEJRi.O.      
13AEJSi.O.      
14AEJTi.O.      
15AEJUi.O.      
16AEKPi.O.      

ZelleFormel
H1=ANZAHL2(H4:H15)
A4=INDEX(H:H;KÜRZEN((ZEILE(G1)-1)/I$1/J$1/K$1;0)+4)&""
B4=WENN(A4="";"";INDEX(I:I;KÜRZEN(REST(ZEILE(H1)-1;PRODUKT(I$1:K$1))/K$1/J$1;0)+4))
C4=WENN(B4="";"";INDEX(J:J;KÜRZEN(REST(ZEILE(I1)-1;J$1*K$1)/K$1;0)+4))
D4=WENN(C4="";"";INDEX(K:K;REST(ZEILE(J1)-1;K$1)+4))
E4=WENN(SUMMENPRODUKT(ZÄHLENWENN(A4:D4;A4:D4))=4;"i.O.";"n.b.")
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Gruß Werner
.. , - ...
Anzeige
Superschnelle Lösung Werner - vielen Dank! o.w.T.
09.04.2019 12:46:42
erichm
...
AW: bitteschön owT
09.04.2019 12:55:42
neopa
Gruß Werner
.. , - ...
Ein Link kann ja mal gegenstandslos werden; daher:
10.04.2019 08:08:09
lupo1

Sub EintraegeVonSpaltenKombinieren() 'baut eine exemplarische Datei
Workbooks.Add xlWorksheet
ActiveWorkbook.Names.Add Name:="KombinationenAbHier", _
RefersToR1C1:="=MAX(1,PRODUCT(COUNTA(R[-5]C:R[-1]C),RC[1]))"
ActiveWorkbook.Names.Add Name:="Kombinationsfeld", _
RefersToR1C1:="=INDEX(R1C:R5C,MOD((ROW(R[-7]C)-1)/R6C[1],R6C/R6C[1])+1)"
[A1:C1] = Split("Wasserpumpe Ovalflansch 10ccm")
[A2:C2] = Split("Ölpumpe Rundflansch 20ccm")
[A3:C3] = Split(" Vertikalflansch ")
[A6:D6] = "=KombinationenAbHier"
[A8:C19] = "=Kombinationsfeld"
[A1:D5].Interior.Color = 44444
[A6:D6].Interior.Color = 22222
[A8:C19].Interior.Color = 55555
End Sub

Anzeige
AW: Ein Link kann ja mal gegenstandslos werden; daher:
12.04.2019 08:10:59
erichm
Hallo lupo1,
DANKE für den tollen Service.
Für eine Optimierung meines Einsatzzwecks ist es mir gelungen, folgende Anpassungen vorzunehmen:
1. neue Tabelle im aktiven Workbook erstellen (statt neue Datei)
2. flexible Anzahl der auszuwertenden Zeilen
hier das Beispiel für 9 statt 5 Zeilen:
Sub EintraegeVonSpaltenKombinieren10() 'baut eine exemplarische Tabelle
ThisWorkbook.Worksheets.Add.Name = "Kombi10"
ActiveWorkbook.Names.Add Name:="KombinationenAbHier10", _
RefersToR1C1:="=MAX(1,PRODUCT(COUNTA(R[-9]C:R[-1]C),RC[1]))"
ActiveWorkbook.Names.Add Name:="Kombinationsfeld10", _
RefersToR1C1:="=INDEX(R1C:R9C,MOD((ROW(R[-11]C)-1)/R10C[1],R10C/R10C[1])+1)"
[A1:C1] = Split("Wasserpumpe Ovalflansch 10ccm")
[A2:C2] = Split("Ölpumpe Rundflansch 20ccm")
[A3:C3] = Split(" Vertikalflansch ")
[A10:D10] = "=KombinationenAbHier10"
[A12:C30] = "=Kombinationsfeld10"
'[A1:D5].Interior.Color = 44444
[A10:D10].Interior.Color = 22222
'[A8:C19].Interior.Color = 55555
End Sub
An folgender weiterer Optimierung scheitere ich aber:
Formelanpassung für weitere Spalten die auszuwerten sind. Also derzeit sind es 3 Spalten; diese möchte ich auf 4 / 5 / 6 anpassen.
Vielen Dank für eine Überprüfung bzw. Vorschlag für diese Erweiterungen.
Hilfreich wäre noch, wenn in der Datei überprüft wird, ob die neu zu erstellende Tabelle bereits vorhanden ist und wenn ja, diese dann zu löschen bevor der Code ausgeführt wird.
mfg
Anzeige
doch noch eine Lösung gefunden
12.04.2019 18:22:10
erichm
für 9 Zeilen und 4 Spalten:
Sub EintraegeVonSpaltenKombinieren104() 'baut eine exemplarische Tabelle
Blatt_Loeschen104
ThisWorkbook.Worksheets.Add.Name = "Kombi104"
ActiveWorkbook.Names.Add Name:="KombinationenAbHier104", _
RefersToR1C1:="=MAX(1,PRODUCT(COUNTA(R[-9]C:R[-1]C),RC[1]))"
ActiveWorkbook.Names.Add Name:="Kombinationsfeld104", _
RefersToR1C1:="=INDEX(R1C:R9C,MOD((ROW(R[-11]C)-1)/R10C[1],R10C/R10C[1])+1)"
[A1:C1] = Split("Wasserpumpe Ovalflansch 10ccm")
[A2:C2] = Split("Ölpumpe Rundflansch 20ccm")
[A3:C3] = Split(" Vertikalflansch ")
[A10:E10] = "=KombinationenAbHier104"
[A12:D30] = "=Kombinationsfeld104"
'[A1:D5].Interior.Color = 44444
[A10:E10].Interior.Color = 22222
'[A8:C19].Interior.Color = 55555
End Sub

Sub Blatt_Loeschen104()
Dim x As Long
For x = 1 To Worksheets.Count
If Worksheets(x).Name = "Kombi104" Then
Application.DisplayAlerts = False
Worksheets(x).Delete
Application.DisplayAlerts = True
Exit For
End If
Next
End Sub

für 9 Zeilen und 5 Spalten
Sub EintraegeVonSpaltenKombinieren105() 'baut eine exemplarische Tabelle
Blatt_Loeschen105
ThisWorkbook.Worksheets.Add.Name = "Kombi105"
ActiveWorkbook.Names.Add Name:="KombinationenAbHier105", _
RefersToR1C1:="=MAX(1,PRODUCT(COUNTA(R[-9]C:R[-1]C),RC[1]))"
ActiveWorkbook.Names.Add Name:="Kombinationsfeld105", _
RefersToR1C1:="=INDEX(R1C:R9C,MOD((ROW(R[-11]C)-1)/R10C[1],R10C/R10C[1])+1)"
[A1:C1] = Split("Wasserpumpe Ovalflansch 10ccm")
[A2:C2] = Split("Ölpumpe Rundflansch 20ccm")
[A3:C3] = Split(" Vertikalflansch ")
[A10:F10] = "=KombinationenAbHier105"
[A12:E30] = "=Kombinationsfeld105"
'[A1:D5].Interior.Color = 44444
[A10:F10].Interior.Color = 22222
'[A8:C19].Interior.Color = 55555
End Sub

Sub Blatt_Loeschen105()
Dim x As Long
For x = 1 To Worksheets.Count
If Worksheets(x).Name = "Kombi105" Then
Application.DisplayAlerts = False
Worksheets(x).Delete
Application.DisplayAlerts = True
Exit For
End If
Next
End Sub
mfg
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige