Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wenn-Formel in Makro packen

Wenn-Formel in Makro packen
09.03.2009 20:03:24
Elmar
Hallo zusammen,
ich bräuchte mal Hilfe...
Ich habe eine Tabelle, die in der Spalte "T" Uhrzeiten angibt (ca. 10000 Datensätze je Datei mit verschiedensten Uhrzeiten) und in Spalte "U" hole ich mir mit "=WOCHENTAG(S2;2)" den Tag (Montag bis Sonntag). Nun suche ich nach einem Makro, dass mir die Tabelle so durchsucht, dass immer wenn die Tagein Spalte "U" Montag bis Freitag (1 bis 5) sind, alle Uhrzeiten zwischen 00:00 Uhr und 14:00 Uhr gelöscht werden. Wenn der Tag = Samstag oder Sonntag ist, dann sollen alle Datensätze mit den Uhrzeiten 00:00 Uhr bis 11:00 Uhr gelöscht werden.
Übrig sollen also nur noch Datensätze bleiben für Mo - FR von 14:01 Uhr bis 23.59 Uhr und Sa und So von 11:01 Uhr bis 23:59 Uhr.
Kann mir jemand helfen?
Mein Problem ist auch noch, dass die ganze Tabelle noch im Format "Text" ist.
Danke schon mal
Grüße
Elmar
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn-Formel in Makro packen
09.03.2009 21:39:34
UweD
Hallo
hab mal was gebastelt:
 
 STU
1DatumZeitTag
210.03.200916:322
311.03.200917:323
412.03.200918:324
513.03.200919:325
614.03.200920:326
715.03.200921:327
816.03.200922:321
917.03.200923:322
1029.03.200911:327
1111.03.200914:323
1212.03.200915:324
1313.03.200916:325
1414.03.200917:326
1515.03.200918:327
1616.03.200919:321
1717.03.200920:322
1818.03.200921:323
1919.03.200922:324
2020.03.200923:325
Formeln der Tabelle
U2 : =WOCHENTAG(S2;2)
 



Option Explicit
Sub Raus()
    On Error GoTo Fehler
    Dim TB1, i%, LR&
    Set TB1 = ActiveSheet
    LR = TB1.Cells(Rows.Count, 20).End(xlUp).Row 'letzte Zeile der Spalte
    Application.ScreenUpdating = False
    For i = LR To 2 Step -1
        If (TB1.Cells(i, 21) < 6 And CDate(TB1.Cells(i, 20)) < "14:00:00"Or _
           (TB1.Cells(i, 21) >= 6 And CDate(TB1.Cells(i, 20)) < "11:00:00"Then
                Rows(i).Delete Shift:=xlUp
        End If
    Next
    Err.Clear
Fehler:
    If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
    Application.EnableEvents = True
    Application.DisplayAlerts = True
End Sub


Gruß UweD
Anzeige
AW: Wenn-Formel in Makro packen
09.03.2009 21:58:05
UweD
Hallo
Die Grenzen noch durch &lt= mit einbeziehen.
Du kannst auch die Formel in Spalte T weglassen und hier mit abfragen:


Option Explicit
Sub Raus()
    On Error GoTo Fehler
    Dim TB1, i%, LR&, TTag%, Zeit As Date
    Set TB1 = ActiveSheet
    LR = TB1.Cells(Rows.Count, 20).End(xlUp).Row 'letzte Zeile der Spalte
    Application.ScreenUpdating = False
    For i = LR To 2 Step -1
        TTag = Weekday(TB1.Cells(i, 19), vbMonday)
        Zeit = TB1.Cells(i, 20)
        If (TTag <= 5 And Zeit <= "14:00:00"Or _
           (TTag >= 6 And Zeit <= "11:00:00"Then
                Rows(i).Delete Shift:=xlUp
        End If
    Next
    Err.Clear
Fehler:
    If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
    Application.EnableEvents = True
    Application.DisplayAlerts = True
End Sub


Gruß UweD
Anzeige
AW: Wenn-Formel in Makro packen
09.03.2009 22:10:39
Elmar
Hallo Uwe,
das läuft ja prima..... Bei 15000 Datensätzen braucht es zwar eine ganze Zeit, aber das stört nicht. Eine große Erleichterung....DANKE
Grüße vom Bodensee
Elmar
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige