Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Uhrzeiten Filtern aber Kniffliger
#1
Moin zusammen,

ich bräuchte ein Makro mit dem ich mir die Schichtzeiten bzw. eher sind es Ausführungszeiten für Equipments... 
Mein Aktueller Code sieht so aus:

Code:
ActiveSheet.Range("$C$4:$C$28").AutoFilter Field:=1, Criteria1:=">=06:00", _
        Operator:=xlAnd, Criteria2:="<=14:30"

Im Normalfall würde das auch funktionieren, allerdings zickt er rum und ich denke es liegt daran, dass 2 Zeiten in der Spalte je Zelle angegeben sind...

Beispiel:

Spalte A                                   Spalte B
Wetterschutzhaus                    10:00 12:00

Wobei die 10:00 = Start der Leistung ist und 12:00 die endzeit... beides in einer Zelle... das ist ein Umstand den ich leider nicht ändern kann *lach*

Heißt das Makro müsste sich auf die zweite Zahl beziehen.

Ich denke das wird irgendwie mit der Links oder Rechts funktion klappen... nur habe ich die in VBA nie genutzt :s

Aufbau jeder zelle wäre 
X = Zahl
XX:XX[Leerzeichen]XX:XX

Hoffe hier kann mir jemand helfen :)

Bis dahin, 

liebe Grüße Seeqi
Antworten Top
#2
Hallo,
 
lege eine Hilfsspalte mit gesplitteten Zellinhalt dieser Zellen an und filtere dann in dieser Hilfsspalte.
 
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • Seeqi
Antworten Top
#3
vielen Dank :D

manchmal muss man nicht alles verkomplizieren...^^ ich werde es mal testen :)
Antworten Top
#4
Hi,

im Makro die Zellen splitten und dann filtern.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#5
Hallo,

Edgars Vorschlag könnte dann so aussehen:

Code:
Sub FilterMakro()
  Dim rngD As Range
  Set rngD = Cells(4, Columns.Count).End(xlToLeft).Offset(0, 1)
  Range("$C$4:$C$28").TextToColumns Destination:=rngD, DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
      Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
      :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
  rngD.Resize(, 2).AutoFilter Field:=1, Criteria1:=">=06:00", Operator:=xlAnd, Criteria2:="<=14:30"
  rngD.Resize(, 2).AutoFilter Field:=2, Criteria1:=">=06:00", Operator:=xlAnd, Criteria2:="<=14:30"
End Sub

Gruß, Uwe
Antworten Top
#6
Hey,

alternativ gehts auch so: 

Code:
Sub FilterEquipmentTimes()
    Dim lastRow As Long
    Dim i As Long
    Dim timeRange As Range
   
    ' Set the range to filter
    Set timeRange = ActiveSheet.Range("C4:C28")
   
    ' Loop through each cell in the range
    lastRow = timeRange.Cells(timeRange.Rows.Count, "C").End(xlUp).Row
    For i = 4 To lastRow
        ' Split the time string into two parts
        Dim timeParts() As Variant
        timeParts = Split(timeRange.Cells(i, "C").Value, " ")
       
        ' Check if the start time is >= 06:00 and <= 14:30
        If TimeValue(Left(timeParts(1), Len(timeParts(1)) - 2)) >= TimeValue("06:00") And TimeValue(Left(timeParts(1), Len(timeParts(1)) - 2)) <= TimeValue("14:30") Then
            ' Filter the data
            ActiveSheet.Range("$C$4:$C$28").AutoFilter Field:=1, Criteria1:=">=06:00", _
                Operator:=xlAnd, Criteria2:="<=14:30"
        End If
    Next i
End Sub
Antworten Top


Gehe zu:


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