Anzeige
Archiv - Navigation
1468to1472
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

nach Uhrzeit suchen...

nach Uhrzeit suchen...
24.01.2016 19:40:52
Björn
Hallo,
ich habe eine Exceltabelle mit 4 gefüllten Spalten. Spalte A beinhaltet die Benennung einer bestimmten Einheit. In Spalte B sind Vorgänge der jeweiligen Einheit aufgelistet. In Spalte C und Spalte D sind die Start- bzw. Endzeiten der Vorgänge zu finden. Das Format dd.mm.yyy hh:mm:ss .
Ich möchte gerne den frühsten und spätesten Termin aus den Vorgängen einer bestimmten Einheit ermitteln. Die Ausgabe soll in einer msgbox erfolgen.
Tabellenlayout:
Einheit_1_____VRG_1______02.01.2016____11:00:23
Einheit_1_____VRG_2______02.01.2016____10:45:56
Einheit_1_____VRG_3______03.01.2016____08:12:00
Einheit_2_____VRG_1______...
...
...
Ausgabe über msgbox:
Startzeit: dd.mm.yyyy hh:mm:ss
Endzeit: dd.mm.yyyy hh:mm:ss
Die Bezeichnung der Einheit muss in einer msgbox eingegeben werden. Die Ausgabe der gesuchten Daten erfolgt in einer separaten msgbox.
Mein Makro schreibt leider nur die Anfangszeit des ersten VRG´s und die Endzeit des letzten VRG´s einer von mit definierten Einheit. Das Makro sucht nicht nach dem frühesten und spätesten Termin.
Mein Ziel war, die Start-/Endzeiten einer Einheit in einem Array zu sammeln und über den Befehl array.small herauszufiltern. Leider bekomme ich diese Variante nicht umgesetzt...
Kann mir jemand einen Tipp geben? Das würde mit sehr weiterhelfen.
Viele Grüße.

Sub Laufzeiten()
Dim es As Date
Dim ll As Date
Dim Einheit%
Dim dat As Date
' Tabellenlänge ermitteln
Z = 2
Do While Cells(Z, 1)  ""
Z = Z + 1
Loop
fz = InputBox(prompt:="Bitte die Einheit eingeben ", Title:="Einheit ")
' Startzeit in Tabelle suchen
For r = 2 To Z
If Cells(r, 1) = Einheit Then
es = Cells(r, 3)
Exit For
End If
Next r
' Endzeit in Tabelle suchen
For s = 2 To Z
If Cells(s, 1) = Einheit Then
ll = Cells(s, 4)
End If
Next s
' Start-/Endzeit susgeben
MsgBox prompt:="   Startzeit " & es & Chr(10) & Chr(10) & "   Endzeit: " & ll, Buttons:= _
vbInformation + vbSystemModal, Title:="Start-/Endzeiten. " & Einheit
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nach Uhrzeit suchen...
24.01.2016 20:01:36
Daniel
Hi
wenn du dir das Programmieren einfach machen willst, dann sortierst du die ganze Liste nach Einheit (A), Datum (C) und Uhrzeit (D).
Dann ist der früheste Termin in einer Einheit der erste und der späteste der letzte und du kannst einfach danach suchen.
gruß Daniel

AW: nach Uhrzeit suchen...
24.01.2016 20:16:59
Björn
Die Datei wird zentral abgelegt und von mehreren Leuten angefasst.
Ich möchte die Tabelle mit einer externen Auswertedatei öffnen und dann die Start- Endzeiten auslesen.
Deine Variante ist aus Programmiersicht einfacher, erzeugt aber einen erhöhten Pflegeaufwand hinsichtlich der Sortierung etc.
Die Kollegen werden die Tabelle sicherlich NICHT entsprechend aufbereiten, das kann man nicht verlangen bzw. würde nicht funktionieren ;)

Anzeige
AW: nach Uhrzeit suchen...
24.01.2016 20:33:18
Daniel
HI
das müssen die Kollegen auch nicht tun.
das machst du in deinem Makro.
da du die Datei sowieso mit einer externen Datei öffnen und auswerten willst, kannst du ja mit der Datei anstellen was du willst, du solltest sie halt schreibgeschützt öffnen und auf jeden Fall dann ohne Speichern schließen.
oder noch besser, du kopierst einfach nur die benötigten Inhalte in deine Auswertedatei und bearbeitest sie dann dort.
Gruß Daniel

kleiner Stupser
24.01.2016 20:57:11
Michael
Hi zusammen,
anbei ein simpler Entwurf mit Hilfsspalte und ohne VBA: https://www.herber.de/bbs/user/103001.xls
Daniel hat natürlich völlig Recht: Originaldatei öffnen, Daten am besten Kopieren, Datei schließen und dann so viel damit arbeiten, wie Du willst.
In die Beispieldatei kannst Du die Daten einfach reinkopieren, und wenn Du die Formeln in der Hilfsspalte nach unten ziehst, bekommst Du die Ergebnisse nach Eingabe des Begriffs in H1 sofort angezeigt.
Ich persönlich mag MsgBoxen in solchen Fällen eigentlich weniger, weil es ein Bedienungsschritt mehr ist; außerdem kann man so die Ausgabe in Zellen bei Bedarf gleich weiterverarbeiten, z.B. kopieren.
Allerdings:
1. wer will schon *einzelne* Werte händisch eingeben und ansehen? Wäre nicht eine Ausgabe in Listenform mit einer Zeile pro Begriff und von..bis ne Sache?
2. wenn wirklich nur jeweils *ein* Wert interessant ist, quasi als Momentaufnahme eines bestimmten Vorgangs, würde ich eher "datenbankmäßig" denken, also etwa mit einer Art SQL-Zugriff, bei dem alle Bedingungen gleich im Statement formuliert sind.
Schöne Grüße,
Michael

Anzeige
AW: kleiner Stupser - Nachtrag
25.01.2016 05:56:29
Michael
Nochmal zu 2. aus dem vorhergehenden post:
Die grundlegende Frage ist, wie aktuell die ausgeworfene Info sein muß.
Wenn Deine Kollegen "irgendwo" Eingaben machen und die Datei nicht gleich speichern, ist die Änderung bis zur nächsten in Excel definierten "automatischen Speicherung" alle x Minuten nur im Arbeitsspeicher des betreffenden Rechners, nicht jedoch in der Datei vorhanden.
Das ist eine grundsätzliche Geschichte, die man in Excel so nicht wirklich "sauber" lösen kann.
*Wenn* das wirklich hochaktuell sein müßte, könnte man in der Datendatei noch ein Makro anbringen, das nach erfolgten Eingaben immer gleich speichert, aber eine echte Datenbanklösung wäre dann das Mittel der Wahl, und wenn's SQlite ist...
Gruß,
Michael
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige