Verknüpfungen
#1

.xlsm   Fahrzeugliste.xlsm (Größe: 53,83 KB / Downloads: 13) Hallo zusammen,



ich bin schon etwas weiter gekommen, habe aber immer noch nicht ganz, dass was ich benötige.



Ich habe eine sortierte Liste, in der ich in der Spalte "I" Fahrzeugnummern (zum Beispiel "Wagen 1"; "Wagen 2" usw.) vergebe.



Jeder Dienst (Spalte A) der einen einzelnen Umlauf hat (Spalte B) bekommt immer ein eigenes Fahrzeug.

(Ein einzelner Umlauf bedeutet, dass das Fahrzeug nicht mehr anders eingesetzt werden kann).

Das erkenne ich daran, dass in Spalte A und B der gleiche Wert steht.

Dienst    Umlauf (hier folgen weitere Spalten)  Fzg.-Nr
1101      1101                                               Wagen 1
1102      1102                                               Wagen 2

1103      1103                                               Wagen 3
1104      1104                                               Wagen 4
usw. usw.

Nun kann es allerdings auch vorkommen, dass ein Dienst den Wagen eines anderen Umlaufes übernimmt, dass erkennt man daran,
das in Spalte A und Spalte B jeweils andere Werte stehen und in der Spalte B dementsprechend der Umlauf doppelt oder mehrfach
vorkommt.

Dienst    Umlauf  (hier folgen weitere Spalten)  Fzg.-Nr
1109      1132
1121      1101      
1121      1111       
1122      1103
1126      1101
1127      1108

usw.

Damit ich einen besseren Überblich in der Liste habe, habe ich ein Makro reingepackt, dass mir die doppelten Werte markiert (siehe Datei, erstes Tabellenblatt).

Nun muss ich von Hand die doppelt oder mehrfach vorkommenden Werte der Reihe nach vergleichen.

Ich fange mit dem 1101 an, der 2x vorkommt. (Blatt 2 der Datei)
Der Dienst 1101 fährt zuerst mit dem Wagen raus, von 5:02 - 08:36
der Dienst 1121 fährt danach mit dem Wagen raus, von 11:35 - 14:56
der Dienst 1126 fährt danach mit dem Wagen raus, von 18:06 - 22:15

also verknüpfe ich die Spalte "FZG.-Nr." der beiden Dienste, die später rausfahren mit
der Zelle "Fzg.Nr." des ersten Umlaufes, der rausfährt.
(Spalte I des Dienstes, der , rechtsklick "kopieren", dann zu den anderen Zellen, rechtsklick "verknüpfen")

Somit erscheint später beim befüllen der Vorlage später bei den Diensten 1121 und 1126 automatisch die Fahrzeugnummer
des Umlaufes 1101.

Nun kommt der Umlauf 1111 dran. (ebenfalls Blatt 2 der Datei)
Der Dienst 1111 fährt zuerst mit dem Wagen raus, von 05:50 - 14:02
der Dienst 1121 fährt danach mit dem Wagen raus, von 16:04 - 20:41

also verknüpfe ich die Spalte "FZG.-Nr." des Dienstes, der später rausfährt mit
der Zelle "Fzg.Nr." des ersten Umlaufes, der rausfährt.
(erste Spalte, rechtsklick "kopieren", dann zu der anderen Zelle, rechtsklick "verknüpfen")
Somit erscheint später beim befüllen der Vorlage später beim Dienst 1121 automatisch die Fahrzeugnummer
des Umlaufes 1111.

Das mache ich bei allen mehrfach vorkommenden Werte, so das meine fertige Vorlage entsteht.
(Blatt 3 der Datei)


Ist die Vorlage fertig, kann man später die Fahrzeuge reinschreiben und die mehrfach vorkommenden Fahrzeuge
werden automatisch an die richtige Stelle gesetzt.

(Siehe Blatt 4 der Datei).

Und genau für diese Arbeitsschritte versuche ich ein Makro zu schreiben, schaffe es aber nicht.

Könnte mir jemand helfen, der in VBA fit ist?

Viele Grüße
Andreas
Top
#2
- gelöscht -
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Top
#3
Hallo zusammen,

das Makro in der Mappe findet ja in Spalte B die die mehrfach vorkommenden Werte.
Wie baut man in das Makro denn eine Art Vergleichsfunktion ein, dass wenn das Makro zwei doppelte Werte findet,
dass es dann bei den mehrfach vorkommenden Werten jeweils dann die Spalte D (Beginn) nach Uhrzeit vergleicht und
dann darauf entscheidet, wo die Verknüpfung zu setzen ist?

Gruß
Andreas
Top
#4
Hallöchen,

hier mal ein Ansatz, wie Du für eine Zahl die Zeilennummer der Zelle mit der kleinsten Zeit rausbekommst. Das könntest Du auch umbauen nach einer Zeit kleiner der betreffenden Zeile wo Du den Link setzt und größer als die zuvor gefundene Zeit.

Code:
Sub tester()
Dim iVal%, iCnt%, iTime#, iRow%
iVal = 1101: iTime = 100000
For iCnt = 5 To Cells(Rows.Count, 2).End(xlUp).Row
  If Cells(iCnt, 2).Value = iVal Then
    If Cells(iCnt, 4).Value < iTime Then iTime = Cells(iCnt, 4).Value: iRow = iCnt
  End If
Next
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • ari-2001
Top
#5
Hallo Raoul21,

Du hast es mal wieder geschafft und eine tolle Lösung für dieses wirklich komplexe Thema bereit gestellt.

Vielen lieben Dank!

Gruß
Andreas
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste