Office: Uhrzeiten erkennen und zugehörige Daten auslesen

Helfe beim Thema Uhrzeiten erkennen und zugehörige Daten auslesen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Forumsmitglieder, ich bin neu hier. Beschäftige mich auch erst seit kurzer Zeit mit Excel Makros. Leider komme ich momentan an meinem Problem... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von User, 15. Dezember 2010.

  1. Uhrzeiten erkennen und zugehörige Daten auslesen


    Hallo Forumsmitglieder,

    ich bin neu hier. Beschäftige mich auch erst seit kurzer Zeit mit Excel Makros.
    Leider komme ich momentan an meinem Problem nicht so richtig weiter und bin auf der Suche nach Lösung auf dieses Forum gestoßen.
    Zu meinem Problem. Ich habe eine Excel-File in welchem in der ersten Spalte A9:A100 Urzeiten im Format hh:mm stehen. Von diesen Uhrzeiten möchte ich nur bestimmte erkennen 01:07, 02:07, 03:07... Sobald z.B. 01:07 erkannt ist soll er mir den dazugehörigen Wert aus Spalte C auslesen und in eine Tabelle an den forgesehenen Platz kopieren. Ich hab schon einen Code zusammengetragen, leider funktioniert dieser nicht.
    Vieleicht kann mir von euch jemand helfen wie ich das Problem lösen könnte.

    Vielen Dank
    Sebastian

    Code:
    :)
     
  2. Hallo Sebastian,

    willkommen im Forum und in der Welt von (Excel)-VBA. Da du nach eigenen Angaben Anfänger bist, gehe ich ein bisschen auf deinen Code ein, anstatt einfach nur eine fertige Lösung zu posten. Drei Dinge sind mir aufgefallen, zu denen ich etwas sagen möchte. Zunächst einmal: Der Code würde fast funktionieren. Es ist nur ein wirklicher Fehler drin, der das verhindert, und zwar hier (in rot):

    Code:
    Die Schreibweise mit den eckigen Klammern ist eine Kurzschreibweise für Zellbezüge. Du kannst z.B. statt Range("A1") auch einfach [A1] schreiben. Bei Suchbegriffen gilt: Zahlen schreibt man einfach so in den Code, allerdings mit einem Punkt als Dezimaltrennzeichen, also z.B.:

    Code:
    wenn du nach dem Wert 0,5 suchst. Texte werden in doppelte Anführungszeichen gesetzt, also z.B.:

    Code:
    wenn du nach Karl suchst. Datumswerte sind knifflig (Zeit- und Datumswerte gehören untrennbar zusammen). Hinter einem Datumswert steckt excelintern ein Dezimalwert, der die Anzahl an Tagen angibt, die seit dem 1.1.1900 vergangen sind. Jeder Tag entspricht also quasi einem Wert von 1. Uhrzeiten sind Bruchteile eines Tages, also Bruchteile von 1. Um 12 Uhr mittags ist der halbe Tag vergangen, daher steckt hinter dieser Uhrzeit der Wert 0,5 (12/24). Um 15:30 nachmitags sind es dann 15,5/24. Datum und Uhrzeit zusammengenommen, steckt hinter 12 Uhr heute mittag der Wert 40529,5.

    Da hinter den weitaus meisten Uhrzeiten ziemlich krumme Dezimalwerte mit vielen Nachkommastellen stecken, nimmt man hier am Besten die Funktion TimeValue. Das geht so:

    Code:
    Wie du siehst, ist die Uhrzeit in Anführungszeichen eingepackt, also Text. Die Funktion TimeValue macht daraus dann den passenden Dezimalwert, der dieser Uhrzeit entspricht. Aber wie gesagt, Datums- und Uhrzeitangaben sind knifflig. Die Uhrzeit wird nur dann gefunden, wenn in der Zelle tatsächlich nur die Uhrzeit - ohne Datum - enthalten ist. Es könnte auch sein, dass auch ein Datum mit enthalten ist und dieses lediglich aufgrund der Formatierung nicht mit angezeigt wird.

    Jetzt haben wir also folgenden Code:

    Code:
    Dieser wäre bereits funktionsfähig. Zwei Dinge würde ich allerdings noch ändern. Der With...End With-Block ist eine feine Sache. Man spart viel Schreibarbeit, weil man den Bezug auf ein Objekt oder eine Eigenschaft oder was auch immer nur einmal hinschreiben muss und diesen Bezug dann mit einem einfachen Punkt mehrfach verwenden kann. In deinem Code wird der Bezug allerdings tatsächlich nur einmal verwendet. Daher ist der With...End With-Block hier eigentlich überflüssig.

    Solltest du den With...End With-Block verwendet haben, weil die Codezeile sonst zu lang geworden wäre, hier noch ein Tipp. Man kann eine zu lange Codezeile auch auf mehrere Zeilen verteilen, indem man an der Stelle, an der man die Zeile umbricht, ein Leerzeichen, gefolgt von einem Unterstrich schreibt, also z.B.

    Code:
    Die umgebrochenen Folgezeilen rückt man ein, dann wird das Ganze übersichtlicher. Damit sieht der Code jetzt so aus:

    Code:
    Schließlich noch ein wichtiger Punkt. Auf Select kann man in den allermeisten Fällen verzichten. Select macht Codes wahnsinnig langsam. Man muss eine Zelle nicht vorher markieren, um per VBA etwas mit dieser Zelle machen zu können. Es reicht daher folgender, nunmehr endgültiger Code:

    Code:
    Abschließend noch zwei Tipps für künftige Anfragen. Wenn du Code in einer Anfrage postest, füge diesen in Codetags ein, dann wird er übersichtlicher dargestellt - zum Beispiel gehen die Einrückungen nicht verloren. Dazu musst du den Code markieren und dann über eines der Symbole über dem Eingabenfenster mit Codetags versehen. Schau dir diese Symbole mal in Ruhe an.

    Wenn du ein Codeschnipsel postest, das Variablen enthält, dann kopiere bitte auch die Deklarationen dieser Variablen mit hinein. Das trägt häufig viel zur Lösungsfindung bei.

    Weiterhin viel Spaß mit VBA.

    Gruß Ingolf
     
  3. Moin, Ingolf,

    und abschließend verzichten wir auf die Variable Zeile und spendieren dem Ganzen wieder eine With-Anweisung (für ActiveSheet):

    Code:
    @Sebastian,

    die Angaben für die Suche der Zeiten und die Adresse in der Zieltabelle kannst Du z.B. in eine Tabelle schreiben und dann per Schleife abarbeiten lassen (alternative: Datenfelder in VBA) - bis jetzt wird bei Deinem Code nur in die Zwischenablage kopiert...
     
  4. Uhrzeiten erkennen und zugehörige Daten auslesen

    Hallo jinx,

    und abschließend verzichten wir noch auf die Variable rngFound und werfen auch die With-Anweisung wieder über Bord: *tongue.gif*

    Code:
    Und komm mir jetzt nicht mit einer noch kürzeren Methode, sonst beiß' ich in den Tisch. *grins

    Gruß Ingolf
     
  5. Moin, Ingolf,

    sieh Dir bitte Deinen Code an (kopiert in die Zwischenablage) und meinen (kopiert in eine Zelle einer anderen Tabelle). Während bei Dir nur eine mögliche Fehlerquelle gegeben ist (Zeitwert wird nicht gefunden), sind es bei mir zumindest 3 (Zeitwert nicht gefunden, Tabelle nicht vorhanden oder geschützt) - und da würde ich Deine Art der Fehlerbehandlung für den Anwender wenig aussagekräftig finden. Ich für meinen Teil/Code bleibe bei der längeren Variante und beim Range-Objekt - dann habe ich zwar immer noch zwei mögliche Fehlerursachen, die sich aber beide auf die Zieltabelle beziehen.

    Ansonsten sollten wir die hypothetischen Betrachtungen solange hintenan stellen, bis uns TO wissen lässt, was es mit der sicherlich durch Makro-Rekorder-Aufzeichnung gewonnen Anweisung für die weitere Verwendung der Daten aus der Zwischenablage auf sich hat...
     
Thema:

Uhrzeiten erkennen und zugehörige Daten auslesen

Die Seite wird geladen...
  1. Uhrzeiten erkennen und zugehörige Daten auslesen - Similar Threads - Uhrzeiten erkennen zugehörige

  2. Uhrzeiten berechnen

    in Microsoft Excel Hilfe
    Uhrzeiten berechnen: Hallo zusammen, ich hatte früher eine Tabelle wo ich mit Uhrzeiten gerechnet habe, Diese finde ich leider nicht mehr. Mein problem besteht darin dass ich Zeiten aus einem Erfassungs Programm in...
  3. Aktuelles Datum und Uhrzeit in Formular

    in Microsoft Word Hilfe
    Aktuelles Datum und Uhrzeit in Formular: Hallo, zunächst ein herzlichen Dank für die Aufnahme in diesem Forum und hoffe, dass mir jemand bei meinem Problem behilflich sein kann. Ich bin aktuell dabei ein Formular zu erstellen. Das...
  4. Stunden zwischen zwei bestimmten Uhrzeiten ausrechnen

    in Microsoft Excel Hilfe
    Stunden zwischen zwei bestimmten Uhrzeiten ausrechnen: Hallo habe folgendes Problem in Spalte A steht die Anfangszeit (03:00) in Spalte B steht die Endzeiz (23:00) in Spalte C soll jetzt die anzahl der Stunden zwischen 0:00 und 6:00 stehen in Spalte D...
  5. Uhrzeit automatisch Doppelpunkt setzen

    in Microsoft Excel Hilfe
    Uhrzeit automatisch Doppelpunkt setzen: Hallo zusammen. Wollte fragen ob mir jemand helfen kann, wenn ich im B1 = 7.30 schreibe das es automatisch auf 07:30 macht oder 8.00 auf 8:30, oder 12.15 auf 12:15. gibt es da eine...
  6. Datum und Uhrzeit

    in Microsoft Excel Hilfe
    Datum und Uhrzeit: Hallo, ich habe ein kleines Problem vielleicht kann mir Bitte Jemand weiterhelfen, müsste eigentlich schnell lösbar sein dieses Problem. Ich habe in einem Monat (variierend) 20 bis mehrere...
  7. Zeit Berechnung mit mehreren kriterien (Datum/Uhrzeit)

    in Microsoft Excel Hilfe
    Zeit Berechnung mit mehreren kriterien (Datum/Uhrzeit): Hallo zusammen, leider weiss ich nicht wie ich die Start- und Endzeit von "Datum und Uhrzeit" mit mehreren kriterienin über Summewenns einbauen kann. Hab hier im Forum nach einer Lösung geschaut...
  8. Datum/Uhrzeit runden in PowerQuery

    in Microsoft Excel Hilfe
    Datum/Uhrzeit runden in PowerQuery: Hallo zusammen, ich brauche eure Hilfe. Gibt es in PowerQuery eine Möglichkeit bei folgendem Format die Sekunden automatisch für die ganze Spalte auf 00 zu setzen? 24.01.2024 14:29:43 >>>...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden