Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Abfahrtszeiten korrigieren
#1

.xlsm   CleverExcelForum.xlsm (Größe: 45,63 KB / Downloads: 9)
Hallo zusammen,

für eine Abrechnungstabelle habe ich Fahrten, die stattfinden, zusammengefasst.

Nun möchte ich bei bestimmten Fahrten, (sollten diese im "Arbeitsblatt" vorkommen), die Endzeit um eine "Pufferzeit" ergänzen.

Ich habe dazu ein zweites Blatt mit dem Namen "Pufferzeiten", in dem die Fahrten mit den möglichen Pufferzeiten gepflegt ist.

Ich möchte nun mittels Makro nachschauen, ob im Arbeitsblatt eine Fahrt, die im Blatt "Pufferzeiten" steht, stattfindet und wenn ja, die Ankunftszeit um die im Arbeitsblatt
"Pufferzeiten" definierte Pufferzeit korrigiert wird.

Also, wenn im Arbeitsblatt z.B. auf der Linie 711, eine Fahrt die den Textteil "Im Märchengrund" in der Spalte "von (Beschreibung)" und den Textteil "Am oberen Feld" in der Spalte
 "bis (Beschreibung)" enthält sollen zur Ankunftszeit in der Spalte "bis" 00:10 Minuten aufaddiert werden.
So soll das "Arbeitsblatt" nach allen Fahrten aus dem Blatt "Pufferzeiten" durchgeforstet werden.

Ich habe eine sehr arbeitsintensive Methode per Makro erstellen können, allerdings musste ich dabei jede Möglichkeit per "Hand" in das Makro eintragen
(das Makro ist mit eingepflegt und nennt sich "PufferzeitenAnpassen".

Mein bisheriges Makro:

MsgBox "Pufferzeit wird angepasst", vbExclamation
Dim LRPufferzeit As Long, iPufferzeit As Long

    With Sheets("Arbeitsblatt")
    If .FilterMode Then .ShowAllData ' Autofilter alle
    LRPufferzeit = .Cells(.Rows.Count, "B").End(xlUp).Row 'letzte Zeile der Spalte
    For iPufferzeit = 2 To LRPufferzeit
    If .Cells(iPufferzeit, 3) = "711" And InStr(.Cells(iPufferzeit, 8), "Märchengrund") And InStr(.Cells(iPufferzeit, 10), "Feld") > 0 Then
    .Cells(iPufferzeit, 19).Value = .Cells(iPufferzeit, 9).Value 'speichert ursprüngliche Endzeit ab
    .Cells(iPufferzeit, 9).Value = .Cells(iPufferzeit, 9).Value + TimeValue("00:10:00")
    End If



wobei ich nach dem ersten "Kriterium" jede weiter vorkommende Möglichkeit von Hand eingeben musste (Das Makro ist schon recht lang und unübersichtlich geworden).


Daher meine Frage, ob man nicht die Parameter aus den "Pufferzeiten" irgendwie in das Makro übernehmen kann?

Viele Grüße und besten Dank im Voraus.

Andreas
Antworten Top
#2
Vermutlich nicht ganz zutreffend ist folgender alter Thread (Zenon-Paradoxon):

office-loesung.de/ftopic585394_0_0_asc.php#2473083

Eine andere Möglichkeit wäre, "binär" Deine Abfahrtzeiten zu durchsuchen, um bei der knappsten Ankunftszeit zu landen. Dafür müssen Umsteigestellen und dortige Puffer dem Algorithmus beigefügt werden.
Antworten Top
#3
Hi

Egal ob VBA oder Formel. Für einen einfachen Vergleich müssen die Texte im Arbeitsblatt und Pufferzeit gleich sein. In deinem Bsp. gibt es nicht eine Übereinstimmung. 

Die Formel in X2 eintragen mit strg+shift+enter schließen und nach unten kopieren.
Code:
=I2+WENNFEHLER(INDEX(Pufferzeiten!$E$2:$E$37;VERGLEICH(C2&H2&J2;Pufferzeiten!$A$2:$A$37&Pufferzeiten!$B$2:$B$37&Pufferzeiten!$D$2:$D$37;0););0)
Dann spalte x nach i kopieren.

Gruß Elex
Antworten Top
#4
Hey Elex,

darum habe ich es ja mit inStrg versucht, um nur einen Teil aus dem Text zu suchen.
Und damit klappt es ja, ich suche nur die Möglichkeit, diesen "Teil" als String in eine Variable zu packen und das dann zu suchen.

Gruß
Andreas
Antworten Top
#5
In #1 schreibst du nichts davon das du Teiltexte suchst.
Und das wird wohl auch schwer wenn die wirklich so aussehen.
Arbeitsblatt: Lage Markt Hörste
Pufferblatt:  Lage Hörste Markt

Hier sollte evtl. erst mal ein Textanpassungsmakro laufen.

Gruß Elex
Antworten Top
#6
Hallo Elex,

ich hatte in "#1" aber geschrieben:

Also, wenn im Arbeitsblatt z.B. auf der Linie 711, eine Fahrt die den Textteil "Im Märchengrund" in der Spalte "von (Beschreibung)" und den Textteil "Am oberen Feld" in der Spalte
 "bis (Beschreibung)" enthält sollen zur Ankunftszeit in der Spalte "bis" 00:10 Minuten aufaddiert werden.
So soll das "Arbeitsblatt" nach allen Fahrten aus dem Blatt "Pufferzeiten" durchgeforstet werden.



Ich versuche grade, dass ich das mit einer Formel hinbekomme, aber ich suche eigentlich eine vba Lösung.

Gruß
Andreas
Antworten Top
#7

.xlsm   CleverExcelForum.xlsm (Größe: 41,43 KB / Downloads: 3)
Hallo zusammen,

ich habe fertig! Smile

Habe es per Makro hinbekommen, dass aus dem Blatt "Pufferzeiten" nur mit Angabe der Linie und Textteilen aus den Spalten "von Beschreibung" und "bis Beschreibung" 
im Blatt "Arbeitsblatt" die entsprechenden Fahrten rausgesucht werden und die benötigten Angaben sauber in diesem Blatt darstellt.

Für alle, die die Lösung interessiert, ist die Datei mit dem Makro beigefügt.

@Elex: Den Einsatz einen Wordkorrekturmakros wollte ich bewusst vermeiden, da es so ja viel komfortabler ist.
Die Liste mit den Pufferzeiten kann man jetzt ganz einfach durch die Eingabe der Parameter "Linie", "von Beschreibung", "bis Beschreibung" und die Dauer der "Pufferzeit"
ergänzen.

@LCohen: Das Zenon-Paradoxon ist für mich nicht zutreffend gewesen

Hier das Makro:
Dim LRArbeitsblatt As Long
Dim LRPufferzeiten As Long
Dim i As Long
Dim j As Long
Dim Linie As Integer
Dim von As String
Dim bis As String
Dim Pufferzeit As Date

With Sheets("Arbeitsblatt")
    LRArbeitsblatt = Sheets("Arbeitsblatt").Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
    For i = 2 To LRArbeitsblatt
    For j = 2 To LRArbeitsblatt
    Linie = Sheets("Pufferzeiten").Cells(j, 3).Value
    von = Sheets("Pufferzeiten").Cells(j, 8).Value
    bis = Sheets("Pufferzeiten").Cells(j, 10).Value
    Pufferzeit = Sheets("Pufferzeiten").Cells(j, 16).Value
    If .Cells(i, 3) = Linie And InStr(.Cells(i, 8), von) And InStr(.Cells(i, 10), bis) > 0 Then
    .Cells(i, 13).Value = Pufferzeit '.Cells(i, 9).Value 'speichert ursprüngliche Ankunftszeit ab
    .Cells(i, 14).Value = .Cells(i, 9).Value + Pufferzeit
    .Cells(i, 15).Value = .Cells(i, 11).Value + Pufferzeit
    End If
    Next
    Next
    End With




So, vielen Dank trotzdem, ich finde es cool, dass ich es ohne Hilfe selber hinbekommen habe.

Einen schönen Sonntag noch.
Andreas
Antworten Top


Gehe zu:


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