Clever-Excel-Forum

Normale Version: dynamische Matrix in Abhängigkeit von MaxWerten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Forum,

ich möchte eine solche Matrix in Abhängigkeit von variablen Maximalwerten dynamisch generieren:




Wie könnte ich diese Problem lösen?

Ich bin für jede Hilfe dankbar.

Grüße Johannes
Hallo Johannes,

wenn Du die Zahlen in einer Zelle darstellst, kannst Du ja eine Reihe bis 1111 bilden.
... hier mal noch die Reihe dazu.

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABC
10001 1111
20010  
30011  
40100  
50101  
60110  
70111  
81000  
91001  
101010  
111011  
121100  
131101  
141110  
151111  
16Ende  
17Ende  
18Ende  

ZelleFormel
A1=WENN(DEZINBIN(ZEILE())*1<=$C$1;DEZINBIN(ZEILE())*1;"Ende")
Diese Tabelle wurde mit Tab2Html (v2.5.0) erstellt. ©Gerd alias Bamberg
Danke für die schnelle Hilfe, aber funktioniert das auch bei max. Werten wie 2222 oder 2121 zum Beispiel?
Und sollte die Matrix auch in 4 Spalten sein, denn die Werte werden im  Anschluss noch für Formeln benötigt.
Hallo Cruiser,

2222 ist dann aber nicht mehr binär, jedenfalls sah Deine Fragestellung nach binären Zahlen aus.
Sollen bei 2222 dann keine Einsen mehr vorkommen?

Man kann auch eine Zahlenfolge aufdröseln, kommt darauf an, was Du machen willst.

Formelbeispiel:
=TEIL(TEXT(A1;"0000");2;1)

Wichtig ist in dem Fall, dass Du den in A1 enthaltenen Wert 1 in einen 4-stelligen Text wandelst, dann kannst Du auch wie in der Beispielformal das zweite Zeichen korrekt extrahieren.
Hi,

dann solltest du deinen Fragenkomplex komplett offenlegen. Dann kann dir zielgerichteter geholfen werden und unnotiges Nachfragen wird vermieden.
(06.12.2015, 14:05)schauan schrieb: [ -> ]Hallo Cruiser,

2222 ist dann aber nicht mehr binär, jedenfalls sah Deine Fragestellung nach binären Zahlen aus.
Sollen bei 2222 dann keine Einsen mehr vorkommen?

Man kann auch eine Zahlenfolge aufdröseln, kommt darauf an, was Du machen willst.

Formelbeispiel:
=TEIL(TEXT(A1;"0000");2;1)

Wichtig ist in dem Fall, dass Du den in A1 enthaltenen Wert 1 in einen 4-stelligen Text wandelst, dann kannst Du auch wie in der Beispielformal das zweite Zeichen korrekt extrahieren.
Ich hab nur die einfachste Matrix gewählt. War von mir falsch erklärt. Es ist kein binäres Problem.
Bei 2222 sollen auch Nullen und Einsen vorkommen.

Ich hab mal eine Mappe mit 2212 angehängt. Es sind die Maximalwerte der Variablen gegeben. Also wenn amax=2, dann gibt es a von 0 bis 2.
Hallöchen,

ist denn die Frage an anderer Stelle schon beantwortet oder sollen wir hier weitermachen?
Ich hab was passendes im Netz gefunden. 
Über VBA:

Option Explicit


Public Sub machs()
Dim a, b, c, d, e, f, g, h, S, lngCount As Long
Dim I As Integer
Dim out
Dim Z
Z = 1

S = Range("A1").CurrentRegion.Columns.Count
Redim spalten(1 To S) As Range
For I = 1 To S
    Set spalten(I) = Range(Cells(Rows.Count, I).End(xlUp), Cells(1, I))
    Z = Z * spalten(I).Count
Next

If Z > 65536 Then
    MsgBox "Mehr Kombinationen möglich als Zeilen vorhanden.", vbCritical, "Problem"
    Exit Sub
End If

On Error Resume Next
Redim out(1 To Z, 1 To 8)
For a = 1 To spalten(1).Count
    For b = 1 To spalten(2).Count
        For c = 1 To spalten(3).Count
            For d = 1 To spalten(4).Count
                For e = 1 To spalten(5).Count
                    For f = 1 To spalten(6).Count
                        For g = 1 To spalten(7).Count
                            For h = 1 To spalten(8).Count
                                lngCount = lngCount + 1
                                out(lngCount, 1) = spalten(1)(a)
                                out(lngCount, 2) = spalten(2)(b)
                                out(lngCount, 3) = spalten(3)©
                                out(lngCount, 4) = spalten(4)(d)
                                out(lngCount, 5) = spalten(5)(e)
                                out(lngCount, 6) = spalten(6)(f)
                                out(lngCount, 7) = spalten(7)(g)
                                out(lngCount, 8) = spalten(8)(h)
                            Next
                        Next
                    Next
                Next
            Next
        Next
    Next
Next
Range("J1").Resize(UBound(out), UBound(out, 2)) = out
End Sub