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

Längste Kette aus einer Liste finden ?

Längste Kette aus einer Liste finden ?
27.03.2024 16:53:54
HSO70
Hallo Zusammen,
vorab, habt vielen Dank für Euer Hilfe!

Gegeben ist eine Liste von Werten
Jeder Wert (jede Zeile) hat evtl. einen Vorgänger und/oder Nachfolger
Die Liste kann bis zu 500 Werte (Zeilen) haben
Frage: wie kann ich die längste Kette finden?
Theoretisch habe ich gedacht, dass ich zu einem Wert die Kette Bildlich darstelle. Als Bsp habe ich das für den Wert CH-12 aufgeschrieben.
Kann man das Problem in Excel irgendwie hinbekommen?
Das Ergebnis, kann auch nur als ein Wert, Konkateniert mit "/" oder "," eingefügt werden.
Beispiel File im Anhang.
(https://www.herber.de/bbs/user/168362.xlsx)


Danke
Gruss, Hami

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Längste Kette aus einer Liste finden ?
27.03.2024 17:02:49
Onur
Deine Logik erschliesst sich mir nicht. Vielleicht liegt es daran, dass du viel zu wenig Daten hast oder irgendwo ein Fehler ist.
Wenn CH34 der Vorgänger von CH12 ist, warum steht er dann HINTER CH34?
AW: Längste Kette aus einer Liste finden ?
31.03.2024 18:16:48
Onur
Der kürzeste Weg vom Eingang zum Ausgang eines Labyrinthes ist nun mal der selbe, der auch auf dem kürzesten Weg vom Ausgang zum Eingang führt und das selbe gilt auch für den längsten.
Deswegen habe ich es umgekehrt angepackt: Angefangen mit dem Nachfolger jeder Zeile, von da aus zum Vorgänger zurück und dann zu dessen Vorgänger usw. usw.
Dass z.B. "CH-50" ignoriert wird, ist ok, da er keinen Vorgänger hat und dadurch sowieso nur ein toter Ast ist.
Anzeige
AW: Längste Kette aus einer Liste finden ?
04.04.2024 10:01:40
HSO70
Hallo Onur,
das ist eine sehr interessante und auch schöne Lösung.
Darf ich Dich bitten mir etwas mehr info geben, wie Lösung funktioniert?
In der Datei finde ich mehrere Seiten und bin etwas "überfordert" ;-)

Ich versuche mal in dem Bsp-File meine 500 Datensätze einzutragen. Mal schauen, ob das auch noch funktioniert ;-)?

Lieben Dank für die Unterstützung.
Gruss
Hami
AW: Längste Kette aus einer Liste finden ?
04.04.2024 12:36:35
Onur
Vergiss die anderen Seiten, das war nur Herumspielerei.
AW: Längste Kette aus einer Liste finden ?
04.04.2024 13:27:45
HSO70
Hallo Onur,

okay, welche Seite ist nun die richtige ;-)?
Ich habe meine Daten in Tabelle2 eingetragen, bin aber der Meinung, dass es nicht ganz richtig funktioniert.
Und kannst Du bitte einem Dummy erklären, wie ich Dein Formel detailliert anschauen kann? Ich sehe nur =ch(Z1S3:Z23S3;Z1S4:Z23S4;ZS(-1);5)

Wie muss ich dies für ca. 500 Zeilen dann anpassen ?!
(sorry die Spalten in Deiner Excel sind Zahlen und keine Buchstaben ;-) für mich neue, sorry...

Danke für eine Antwort
Gruss
Anzeige
AW: Längste Kette aus einer Liste finden ?
18.04.2024 13:31:32
HSO70
Hallo Zusammen,
Hallo Onur,
ich bräuchte bitte Hilfe bzgl der Anpassung d. Formel Bitte. Kann jemand mit bitte sagen, was ich hier noch anpassen muss ?
Ich meine, meine Änderung ist nicht korrekt.
Danke für die Unterstützung.

Mein BSP File: https://www.herber.de/bbs/user/168833.xlsm
Anzeige
AW: Längste Kette aus einer Liste finden ?
18.04.2024 14:03:50
Onur
So kann es nicht klappen - dafür müssen alle Elemente gleiche Anzahl von Zeichen haben.
AW: Längste Kette aus einer Liste finden ?
18.04.2024 14:49:18
Onur
Die Änderung war schon korrekt, aber deine Beispielsdatei nicht.
Woher kommen denn plötzlich die langen Zahlen her? Früher war alles 5 Zeichen lang, jetzt mal so mal so....
Hab ich angepasst, aber du hast jede Menge Endloschleifen drin (B ist Nachfolger von A und A ist Nachfolger von B - siehe Beispielsbild)
https://www.herber.de/bbs/user/168835.xlsm
Userbild
Anzeige
AW: Längste Kette aus einer Liste finden ?
04.04.2024 12:53:48
Onur
Da jeder Nachfolger einen eindeutigen Vorgänger hat, aber nicht umgekehrt, sucht meine Formel das Ganze rückwärts.
AW: Längste Kette aus einer Liste finden ?
27.03.2024 17:03:31
Onur
Sorry:
Wenn CH34 der Vorgänger von CH12 ist, warum steht er dann HINTER CH12?
AW: Längste Kette aus einer Liste finden ?
27.03.2024 17:45:41
HSO70
Ach... ja ... Soory noch einmal Vorgänger, der als Nachfolger aufgeschrieben wird ;-) mein Fehler.
Vergiss bitte einfach Nachfolger in diesem Bsp !
Es sind im Grunde zwei Spalten --> Wert und Vorgänger
Über die beiden Spalten suche ich die längste Kette.
Wenn nicht klar, bitte melden. Danke
AW: Längste Kette aus einer Liste finden ?
27.03.2024 17:54:41
HSO70
Hier vielleicht ein besseres Bsp.

Wert1 Wert2
1 CH-12 CH-34
2 CH-34 CH-11
3 CH-34 CH-30
4 CH-11
5 CH-34 CH-10
6 CH-34 CH-13
7 CH-34 CH-14
8 CH-34 CH-15
9 CH-15 CH-21
10 CH-15 CH-22


Danke
Anzeige
AW: Längste Kette aus einer Liste finden ?
27.03.2024 17:47:43
Onur
Poste bitte mal eine vernünftige Datei und mit mehr Datensätzen (am besten wieder mit korrektem Wunschergebnis).
AW: Längste Kette aus einer Liste finden ?
27.03.2024 17:42:11
HSO70
Hallo Sorry, CH-12 hat als Vorgänger CH-34 und dann CH-34 hat wiederum zwei Vorgänger (CH-11 und CH30)
Sorry ja ich könnte wesentlich mehr daten zur Verfügung stellen, aber dachte, weniger ist mehr ;-)
AW: Längste Kette aus einer Liste finden ?
27.03.2024 18:43:44
daniel
Hi
nein, in dem Fall nicht.
Zeige bitte einen größeren Bereich deiner Daten - so wie sie vorliegen - , der vielleicht auch ein paare Sonderfälle umfasst und zeige uns auch dein Wunschergebnis für genau diese Daten.
Gruß Daniel
AW: Längste Kette aus einer Liste finden ?
27.03.2024 20:28:45
HSO70
Hallo Zusammen,
habt vielen Dak für die Frage. Ich hoffe, ich habe nur ein besseres Bsp:
https://www.herber.de/bbs/user/168367.xlsx

Danke
Hami
Anzeige
AW: Längste Kette aus einer Liste finden ?
27.03.2024 21:49:35
daniel
Hi
spannend. ist was für Programmierer.
vermute mal, dass man hier mit Rekursion arbeiten muss.
das neue Lambda soll ja auch rekursiv verwendet werden können, aber ich vermute mal dass es ohne VBA nicht geht.
spannend, aber zu hoch für mich.

Gruß Daniel
AW: Längste Kette aus einer Liste finden ?
27.03.2024 22:17:23
daniel
ok, doch nicht ganz.
hier ne VBA-Lösung.
dieses Makro schreibt dir die Ketten in Spalte M
das Makro passt für deine Beispieldatei.

Code in ein allgemeines Modul einfügen und das Makros "test" ausführen
die Spalte M vorher leeren
Hinterher ggf. ein TEXT IN SPALTEN ausführen, um die Elemente in einzelnen Zellen zu verteilen.



Option Explicit
Dim Nachfolger


Sub test()
Dim arr
Dim z As Long
Dim x
arr = Range("c4:e26").Value
Set Nachfolger = CreateObject("scripting.dictionary")

'--- Nachfolgerbeziehungen Speichern
For z = 1 To UBound(arr)
If arr(z, 3) > "" Then Nachfolger(arr(z, 1)) = Nachfolger(arr(z, 1)) & "|" & arr(z, 3)
Next
For Each x In Nachfolger.keys
Nachfolger(x) = Split(Mid(Nachfolger(x), 2), "|")
Next

'--- Ketten ermitteln
For Each x In Nachfolger.keys
Call KetteVerfvollständigen(x)
Next
End Sub

Sub KetteVerfvollständigen(ByVal Kette As String)
Dim arr
Dim Letzte As String
Dim nf
arr = Split(Kette, "|")
Letzte = arr(UBound(arr))
If Not Nachfolger.exists(Letzte) Then
Cells(Rows.Count, 13).End(xlUp).Offset(1, 0).Value = Kette
Else
For Each nf In Nachfolger(Letzte)
Call KetteVerfvollständigen(Kette & "|" & nf)
Next
End If
End Sub


ist jetzt nur so dahin geschrieben, lässt sich sicher optimieren.

ob sowas per Formel möglich ist, weiß ich nicht.

Gruß Daniel
Anzeige
AW: hierzu ...
30.03.2024 14:25:17
neopa C
Hallo Daniel,

... Deine VBA-Lösung funktioniert zur Ermittlung der jeweiligen Datenkette problemlos. Jedoch wenn ich z.B. in E15 die "CH-27" durch "CH-34" ersetze, kommt in meiner XL2010er Version ein "Nicht genügend Stapelspeicher"-Meldung.

Ich habe mir (interessehalber) eine reine Formellösung gebaut. Da ich kein XL365 habe, habe ich die von Dir vermutet notwendige "Rekursion" auch vermeiden müssen und können.
Dazu habe ich eine Kombination einer Hilfsspaltenformel und einer Ergebnislösungsformel definiert und diese mit einer bedingten Formatierung zur übersichtlichen Darstellung der Ergebnislistung kombiniert. Das funktioniert soweit auch soweit für die Beispieldatendaten und auch meine zuvor bezeichnete Datenabweichung dieser. Allerdings würde ich diese Formellösung den TE nicht empfehlen wollen, weil er ja bis zu 500er Datenzeilen hat und dafür müßte ich wohl die Ergebnisformel mind. ca. 500*3*25 kopieren, Außerdem kann ich nicht abschätzen wielange Excel da rechnen muß. Theoretisch evtl möglich, Besser wäre allerdings da wohl schon eine funktionsfähige VBA-Lösung.

Gruß Werner
.. , - ...
Anzeige
AW: hierzu ...
30.03.2024 17:05:04
Daniel
Jedoch wenn ich z.B. in E15 die "CH-27" durch "CH-34" ersetze, kommt in meiner XL2010er Version ein "Nicht genügend Stapelspeicher"-Meldung.

Logisch.
Dann hast du dir ja auch eine sich permanent selbst aufrufende Endlosschleife gebaut.
AW: sehe ich nicht so ...
30.03.2024 17:51:30
neopa C
Hallo Daniel,

... mag mit VBA so sein, aber ist nicht so mit meiner Formellösung, wo ich eine solche nicht habe.
Mein Ergebnis sieht da jedenfalls wie folgt aus:

Arbeitsblatt mit dem Namen 'Tabelle1'
 CDEFGHIJKLMNOPQRSTUV
1CH-21hat längste Kette mit13 Datenwerten            
2                    
3Werte1 Wert2                 
4CH-12 CH-34  1CH-12CH-34CH-11           
5CH-34 CH-11     CH-30CH-20          
6CH-34 CH-30      CH-21CH-25CH-26        
7CH-11        CH-22CH-52CH-53CH-54CH-55CH-56CH-57CH-59   
8CH-30 CH-20      CH-23          
9CH-30 CH-21                 
10CH-30 CH-22  2CH-34CH-11            
11CH-30 CH-23    CH-30CH-20           
12CH-29 CH-24     CH-21CH-25CH-26         
13CH-21 CH-25     CH-22CH-52CH-53CH-54CH-55CH-56CH-57CH-59    
14CH-25 CH-26     CH-23           
15CH-26 CH-34                 
16CH-27 CH-28  3CH-11             
17CH-50 CH-22                 
18CH-22 CH-52  4CH-30CH-20            
19CH-52 CH-53    CH-21CH-25CH-26CH-34CH-11        
20CH-53 CH-54    CH-22CH-52CH-53CH-54CH-55CH-56CH-57CH-59     
21CH-54 CH-55    CH-23            
22CH-55 CH-56                 
23CH-56 CH-57  5CH-29CH-24            
24CH-57 CH-59                 
25CH-58 CH-59  6CH-21CH-25CH-26CH-34CH-11         
26CH-59         CH-30CH-20        
27      CH-21CH-25CH-26CH-34CH-30CH-22CH-52CH-53CH-54CH-55CH-56CH-57CH-59 
28           CH-23        
29                    
30     7CH-25CH-26CH-34CH-11          
31         CH-30CH-20         
32          CH-21         
33          CH-22CH-52CH-53CH-54CH-55CH-56CH-57CH-59  
34          CH-23         
35                    
36     8CH-26CH-34CH-11           
37        CH-30CH-20          
38         CH-21CH-25         
39         CH-22CH-52CH-53CH-54CH-55CH-56CH-57CH-59   
40         CH-23          
41                    
42     9CH-27CH-28            
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
AW: sehe ich nicht so ...
30.03.2024 18:59:47
Daniel
Die Formel arbeitet vermutlich nicht vollständig und bricht Ketten ab, anstatt sie weiter zu verfolgen.
AW: die Ergebnisketten habe ich aufgezeigt, ...
30.03.2024 20:53:40
neopa C
Hallo,

... da wo in den vorderen Spalten scheinbar keine Werte stehen, sind diese von mir lediglich (mit Ausnahme in der maßgeblichen längsten Kette) durch bedingte Formatierung ausgeblendet (weil diese identisch der darüberliegenden Datenwerte sind).
Wo erkennst Du also den von Dir bisher nur vermuteten Abbruch in einer Kette? Ich sehe einen solchen jedenfalls aktuelle nicht.

Gruß Werner
.. , - ...
AW: die Ergebnisketten habe ich aufgezeigt, ...
30.03.2024 23:48:54
Daniel
Mit der von dir eingebrachten Änderung in E15 wird 34 Nachfolger von 26.
Damit bekommt du diese sich selbst aufrufende Folge:

34 30 21 25 26 34

Frohe Ostern.
AW: (m)eine Formel fängt dies ab, (D)ein Makro nicht ...
31.03.2024 09:46:41
neopa C
Hallo Daniel,

... es sollte doch aber gerade für Dich kein Problem sein, das entsprechend in Dein Makro einzubauen. Aber naja, vielleicht ist es ja für den TE nicht wirklich erforderlich, weil bei ihm eine derartige Datenkonstellation nicht vorkommt/vorkommen kann. Aber keiner von uns kann es wissen bzw. ausschließen.

Gruß Werner
.. , - ...
AW: (m)eine Formel fängt dies ab, (D)ein Makro nicht ...
01.04.2024 10:35:17
Daniel
Nö, ist auch kein Problem.
Aber das sollte jeder können, der VBA-Grundlagen beherrscht. Dazu muss man ja nur prüfen.

Aber warum hast du uns deine Lösungsformel bisher vorenthalten?
Ich habe von dir noch keine Lösung gesehen.
En paar Werte hinschreiben und diese "abfotografieren" kann ich auch so, ohne Formel.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige