Anzeige
Archiv - Navigation
1584to1588
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

Schleife für Kombination

Schleife für Kombination
19.10.2017 14:38:41
Sifa
Hallo zusammen,
ich weiß nicht, wie ich die Schleife? für das SONST in meiner Formel aufbauen soll.
Kann mir dabei jemand helfen? ... geht dies evtl nur oder besser mit VBA? Wenn VBA, wie müsste das dann insgesamt aussehen?
Tabelle in der die Kombination erstellt werden soll enthalt übrigens mehr als 1000 Werte...
Hier meine Grundidee, wie der Algorithmus aussehen könnte...
F2:=
WENN
UND(B2 = (L0);D2 = ODER((A), (AI), (AIU), (AIUD), (AIUDV), (D), (DU), (DV), (I), (IU), (IUD), (IUDV), (U), (UDV), (V)))
DANN
E2
SONST
E bei B = L0
& WENN B (L1)
DANN
E bei B = L1
& WENN B (L2)
DANN
E bei B = L2
...
& WENN B (L10)
DANN
E bei B = L10
(B kann nur L1 bis L10 sein)

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife für Kombination
19.10.2017 15:56:23
Sifa
... Hab jetzt mal das ODER raus genommen um es zu vereinfachen...
Die Formel sieht bis jetzt so aus:
=WENN(UND(B10="[L0]";D10="(A)");E10;WENN(UND(B9="[L0]";D10="(A)");E9&"|"&E10;WENN(UND(B8="[L0]"; D10="(A)");E8&"|"&E9&"|"&E10;WENN(UND(B7="[L0]";D10="(A)");E7&"|"&E8&"|"&E9&"|"&E10; WENN(UND(B6="[L0]";D10="(A)");E6&"|"&E7&"|"&E8&"|"&E9&"|"&E10;WENN(UND(B5="[L0]";D10="(A)"); E5&"|"&E6&"|"&E7&"|"&E8&"|"&E9&"|"&E10;""))))))
...Das funktioniert leider nur bis zum ersten gleichen Wert in Folge in Spalte B, d.h. in B11 steht "[L5]" und in B10 auch, beide erfüllen aber die Bedingung, dass in D "(A)" steht...
Wie aknn ich zumindest diese Problem umgehen?
Gruß Sifa
Anzeige
Sehe keine Frage sondern nur eine Formel...
19.10.2017 16:19:52
Peter(silie)
Hallo,
erkläre doch bitte kurz was die formel überhaupt tun soll...
Pseudo Code und Formeln sind ja ganz nett, aber eine einfache kurz beschreibung
der Funktionalität ist besser.
AW: Sehe keine Frage sondern nur eine Formel...
19.10.2017 17:05:29
Sifa
OK, ich versuche es noch mal zu erklären...
in Spalte B gibt es die Werte L0 bis L10 und sysmbolisieren eine Hierarchie, wobei L0 die oberste Ebene ist. In Spalte E stehen die Namen der jeweiligen Ebene.
Es soll nun die Hierarchie bis zur jeweiligen Ebene gebildet werden, wenn in Spalte D jeweils ein (A) steht, was aber nicht immer der Fall ist.
Wenn z.B. B8 = L5 ist, soll soll in F5 der Bezeichner für die Ebene aus dem Wert aus E neben L0 + dem Wert aus E neben E1 + dem Wert aus E neben E2 usw. die sich darüber befinden gebildet werden.
Es soll aber immer nur direkt darüber nach oben bis zum nächsten L0 gesucht werden und der name gebildet werden.
Weiter unten in der Tabelle können die Namen für L0, L1, L2 usw. anders sein, daher kann keine allgemeine Tabelle genutzt werden, die man Verweisen und dergleichen nutzen könnte...
Ich denke mal dass sich das sicher irgendwie mit VBA realisieren lassen würde, .... leider bin ich diesbezüglich noch blutiger Anfänger....
Anzeige
AW: nachgefragt ...
19.10.2017 17:28:41
...
Hallo Sifa,
... warum stellst Du nicht einfach mal eine kleine Beispieldatei hier ein und zeigst darin Dein IST und auf und zeigst oder erklärst (ohne Formel) dazu was Du als Ergebnis erreichen willst.
Gruß Werner
.. , - ...
I hoab nix verschdandn o.w.T
19.10.2017 19:47:48
KlausF
AW: da sinn mor schu zwehe ;-) owT
19.10.2017 20:10:07
...
Gruß Werner
.. , - ...
AW: Sehe keine Frage sondern nur eine Formel...
20.10.2017 10:18:08
Sifa
Guten Morgen,
...ist ja auch schwierig zu beschreiben... ;-)
Ich habe daher jetzt mal eine Musterdatei erstellt, die die Ausgangslage und das gewünschte Ergebnis zeigen soll... https://www.herber.de/bbs/user/117117.xlsx
Ich hoffe dies hilft mein problem zu verstehen...und mir vielleicht helfen zu können...
Gruß Sifa
Anzeige
AW: nun nachvollziehbar, dann prüf mal ...
20.10.2017 10:48:41
...
Hallo Sifa,
... ob Deine Version bereits die Funktion TEXTVERKETTEN() kennt. Mit dieser oder wenn nicht mit z.B. der UDF VJoin von Luc (google mal hier im Formum danach) kann man das realisieren.
Gruß Werner
.. , - ...
AW: Sehe keine Frage sondern nur eine Formel...
20.10.2017 11:33:18
Peter(silie)
Hallo,
keinen schimmer ob es so stimmt... aber hier deine Mappe mit button und weiter unten nur Code.
https://www.herber.de/bbs/user/117120.xlsm
Option Explicit
Sub a()
Dim ebenen As Dictionary
Dim ws As Worksheet
Dim lRow As Long
Dim rng As Range
Set ws = ThisWorkbook.Sheets(1)
With ws
lRow = .Cells(.Rows.Count, 2).End(xlUp).Row
Set rng = .Range(.Cells(2, 2), .Cells(lRow, 2))
Set ebenen = Create_Dictionary(rng)
If ebenen Is Nothing Then Exit Sub
AddValues ebenen, rng
End With
End Sub
Private Function Create_Dictionary(ByVal rng As Range) As Dictionary
Dim tmp As Object
Dim c As Range
Set tmp = New Dictionary
For Each c In rng
If Not tmp.Exists(c.Value) And c.Value  "" Then tmp.Add c.Value, ""
Next c
Set Create_Dictionary = tmp
Set tmp = Nothing
End Function
Private Sub AddValues(ByRef dict As Dictionary, ByVal rng As Range)
Dim c As Range
Dim tmp As String
Dim sameItem As Variant
Dim i As Long
For Each c In rng
tmp = c.Offset(, 3).Value & "|"
If c.Value = sameItem Then
dict(c.Value) = tmp
Else
dict(c.Value) = dict(c.Value) & tmp
End If
sameItem = c.Value
If c.Offset(, 2).Value  "" Then
For i = 0 To GetIndexByKey(dict, c.Value) - 1
c.Offset(, 4).Value = c.Offset(, 4).Value & dict(dict.Keys(i))
Next i
End If
Next c
End Sub
Private Function GetIndexByKey(ByRef dict As Object, ByVal key_ As Variant) As Long
Dim varItem As Variant
For Each varItem In dict.Keys
GetIndexByKey = GetIndexByKey + 1
If varItem = key_ Then Exit Function
Next varItem
End Function

Anzeige
AW: Sehe keine Frage sondern nur eine Formel...
20.10.2017 13:44:14
Sifa
@Peter(silie) vielen Dank, das sieht schon sehr gut aus!
Leider schein da aber noch ein Fehler drin zu sein....
Bis zur ersten wiederkehrenden [L0] klappt es meistens sehr gut, es sind nur ab und an mal kleine Fehler vorhanden.
Ab der wiederkehrenden Ebene [L0] ist anfangs ein wiederkehrender Fehler vorhanden, der sich später aber teilweise reduziert.
Ich habe die Datei mal mit farblichen Markierungen noch mal hoch geladen.
Der grüne Text ist korrekt, die rot durchgestrichenen Texte sind falsch und zu viel...
https://www.herber.de/bbs/user/117124.xlsm
Vielleicht findet ja jemand das Problem? ... Leider sind dafür meine VBA-Kenntnisse nicht ausreichend ^^"
Gruß Sifa
Anzeige
AW: Sehe keine Frage sondern nur eine Formel...
20.10.2017 13:56:04
Peter(silie)
Hallo,
ändere mal den AddValues in folgendes :)
Private Sub AddValues(ByRef dict As Dictionary, ByVal rng As Range)
Dim c As Range
Dim tmp As String
Dim i As Long
For Each c In rng
tmp = c.Offset(, 3).Value & "|"
dict(c.Value) = tmp
If c.Offset(, 2).Value  "" Then
For i = 0 To GetIndexByKey(dict, c.Value) - 1
c.Offset(, 4).Value = c.Offset(, 4).Value & dict(dict.Keys(i))
Next i
End If
Next c
End Sub

AW: Sehe keine Frage sondern nur eine Formel...
24.10.2017 15:45:48
Sifa
Hallo zusammen,
sorry für die späte Antwort, war über das WE nicht da...
@Peter(silie) super, jetzt funktiniert es ja so wie ich es mir vorgestellt habe :-)
Vielen lieben Dank.
Ich versuche gleich mal das von der Beispieldatei auf meine Realdatei zu übernehmen...
Anzeige
AW: Schleife für Kombination
24.10.2017 17:30:33
Sifa
.. hat super funktioniert, ich musste nur vorher noch unter Extras-Verweise die Microsoft Scripting Runtime aktivieren.... ;-)
Nochmals vielen Dank.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige