Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1772to1776
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

Zeitraum filtern

Zeitraum filtern
20.07.2020 16:32:57
Senna
Hallo zusammen,
ich bräuchte eure Hilfe.
Ich habe ein große Datei an Rohdaten und möchte mir per Inputbox, in welcher ich das Datum eingebe einen bestimmten Zeitraum anzeigen lassen (Inputboxdatum und die letzten 7 Tage).
Kann mir jemand weiter helfen?
VG

40
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeitraum filtern
20.07.2020 16:47:46
Hajo_Zi
warum nicht einfach Autofilter?

AW: Zeitraum filtern
20.07.2020 17:15:52
Senna
Das kam mir auch schon in den sinn. Allerdings sollte die Anwendung am Ende so einfach wie möglich sein, wenn man also eine Inputbox für den auotfilter nutzen könnte, wäre das grandios. Damit müsste man nur das Datum von dem an die letzten 7 Tage betrachtet werden sollen eintragen und der Filter würde es automatisch sortieren und Filter .
AW: Zeitraum filtern
20.07.2020 17:27:09
Senna
Sehr cool! Vielen Dank.
Wie kann ich hier jetzt den Bereich auswählen? Damit ich nicht nur ein Datum habe sondern den 06.05.08 eingebe und auch alle Daten der 7 Tage davor erhalte? (also vom 30.04.-06-05.08)
AW: Zeitraum filtern
20.07.2020 17:32:12
Hajo_Zi
ändere in dieser Zeile +7
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1).Column, _
Criteria1:=">=" & raZelle.Value2, Criteria2:=" Gruß Hajo
AW: Zeitraum filtern
20.07.2020 17:41:37
Senna
Vielen lieben Dank!
Das hilft mir wirklich weiter, jetzt geht es mir noch darum die letzten 7 Tage angezeigt zu bekommen.
Ich dachte ich kann es zu -7 umwandeln und es zeigt mir die vergangenen 7 Tage, aber das hat nicht funktioniert.
VG
Anzeige
AW: Zeitraum filtern
20.07.2020 17:49:24
Senna
Kann man daraus auch noch eine Inputbox machen, die sich dann zwar auf die Spalte (M) bezieht aber nicht in den Zellen direkt eingetragen wäre?
DIe Inputbox fragt nach dem Datum X (das gibt man ein und danach erscheinen alle Daten von Datum X und die 7 Tage davor).
AW: Zeitraum filtern
20.07.2020 17:50:37
Hajo_Zi
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
änderrn.
Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
http://www.excel-ist-sexy.de/bilder-statt-datei/
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Das ist nur meine Meinung zu dem Thema.
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1).Column, _
Criteria1:=">=" & raZelle.Value2-7, Criteria2:=" Gruß Hajo
Anzeige
AW: Zeitraum filtern
20.07.2020 18:11:06
Senna
Hallo Hajo,
was meinst du?
Kann man die Zelle, die als Filter dient auch als Inputbox formatieren?
AW: Zeitraum filtern
20.07.2020 18:26:45
Werner
Hallo,
er meint, dass du deine Mappe hier mal hochladen sollst. Sagen kann er dir das aber nicht. Er hat nämlich lauter solche wortreiche "Beispieltexte" die er dann immer wieder zum Besten gibt.
Eine Beispielmappe wäre in dem Fall schon wichtig. Die sollte aber im Aufbau exakt dem Original entsprechen. Kein Mensch hier weiß, wie deine Mappe aussieht, wo welche Daten stehen, wo deine Daten beginnen usw.
Hier mal eine Mappe mit Filter über eine Inputbox.
https://www.herber.de/bbs/user/139183.xlsm
Gruß Werner
Anzeige
AW: Zeitraum filtern
20.07.2020 18:57:20
Senna
Hier kam bei mir leider eine Fehlermeldung. Trotzdem Danke!
AW: Zeitraum filtern
20.07.2020 18:57:21
Senna
Hier kam bei mir leider eine Fehlermeldung. Trotzdem Danke!
AW: Zeitraum filtern
20.07.2020 18:57:22
Senna
Hier kam bei mir leider eine Fehlermeldung. Trotzdem Danke!
AW: Zeitraum filtern
20.07.2020 18:57:23
Senna
Hier kam bei mir leider eine Fehlermeldung. Trotzdem Danke!
AW: Zeitraum filtern
20.07.2020 19:29:54
Werner
Hallo,
das bringt gar nichts. Welche Fehlermeldung und in welcher Codezeile.
Außerdem hattest du mal was von Spalte M gesprochen. Also bin ich davon ausgegangen, dass deine Datumswerte in Spalte M stehen.
Jetzt hast du eine Beispielmappe hochgeladen, da stehen die Datumswerte aber in Spalte D.
Also was jetzt?
Gruß Werner
Anzeige
AW: Zeitraum filtern
20.07.2020 19:52:19
Senna
oh, entschuldige, ich lade morgen früh gleich eine gaaaanz genaue Datei hoch, damit es nicht mehr zu Unstimmigkeiten kommt.
Vielen Danks schonmal.
AW: Zeitraum filtern
21.07.2020 08:33:29
Senna
Userbild
..wo ist die versprochene Datei?
21.07.2020 09:09:33
Helmut
..denn sie wissen nicht, was sie tun.........
OK, hab sie gefunden-Sorry
21.07.2020 09:12:06
Helmut
AW: Zeitraum filtern
20.07.2020 18:27:40
Nepumuk
Hallo Senna,
teste mal:
Option Explicit

Public Sub Datumsfilter()
    Dim strInput As String
    Dim dtmFrom As Date, dtmTo As Date
    Do
        strInput = InputBox("Bitte das Datum eingeben.", "Eingebe")
        If StrPtr(strInput) = 0 Then Exit Sub
        If IsDate(strInput) Then Exit Do
        Call MsgBox("Bitte ein gültiges Datum eingeben.", vbExclamation, "Hinweis")
    Loop
    dtmTo = CDate(strInput)
    dtmFrom = dtmTo - 7
    Call ActiveSheet.Rows(1).AutoFilter(Field:=13, Criteria1:=">=" & _
        CStr(Clng(dtmFrom)), Criteria2:="<=" & CStr(Clng(dtmTo)))
End Sub

Gruß
Nepumuk
Anzeige
AW: Zeitraum filtern
20.07.2020 18:51:14
Senna
Hallo,
da kommt bei mir Laufzeitfehler 1004. :O
AW: Zeitraum filtern
20.07.2020 19:16:41
Nepumuk
Hallo Senna,
mit welchem Text, welche Codezeile markiert der Debugger?
Gruß
Nepumuk
AW: Zeitraum filtern
20.07.2020 18:56:02
Senna
Hier kam bei mir Laufzeitfehler 1004.... hat leider nicht geklappt.
Field(Spalte) anpassen
20.07.2020 19:33:19
Helmut
AutoFilter(Field:=13
Field:=13 bedeutet, dass die spalte 13 gefiltert wird.
Wenn Du in der neuen Datei das Datum in einer anderen Spalte hast, musst Du
die 13 auf die Datumsspalte( zB: D = 4) ändern.
Gruß Helmut
AW: Field(Spalte) anpassen
20.07.2020 19:49:31
Senna
Ah super, das teste ich gleich morgen früh. Melde mich dann wieder.
AW: Field(Spalte) anpassen
21.07.2020 08:33:54
Senna
Userbild
Anzeige
..was soll das ?
21.07.2020 09:03:14
Helmut
AW: Zeitraum filtern
21.07.2020 08:39:35
Senna
https://www.herber.de/bbs/user/139188.xlsx
Hier die genaue Beispieldatei.
Ich würde gern nach Spalte H filtern (diese enthält neben dem Datum allerdings auch noch die Uhrzeit). Am besten wäre es wenn der Autofilter das gewünschte Datum mittels Inputbox abfragt, es wird nach Datum X gefragt, man gibt ein Datum X an und es Filtert alle Zeilen heraus die in dem Bereich von Datum X und den letzen 7 vergangenen Tagen liegen.
Geht das?
Anzeige
AW: Zeitraum filtern
21.07.2020 09:04:10
Nepumuk
Hallo Senna,
teste mal:
Option Explicit

Public Sub Datumsfilter()
    
    Dim strInput As String
    Dim dtmFrom As Date, dtmTo As Date
    Dim astrNames() As String
    Dim ialngIndex As Long
    Dim objCell As Range
    Dim objWorksheet As Worksheet
    
    Do
        
        strInput = InputBox("Bitte das Datum eingeben.", "Eingebe")
        If StrPtr(strInput) = 0 Then Exit Sub
        If IsDate(strInput) Then Exit Do
        Call MsgBox("Bitte ein gültiges Datum eingeben.", vbExclamation, "Hinweis")
        
    Loop
    
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
    End With
    
    dtmTo = CDate(strInput)
    dtmFrom = dtmTo - 7
    
    With Worksheets("Tabelle1") 'Anpassen !!!
        
        Call .Rows(1).AutoFilter(Field:=8, Criteria1:=">=" & _
            CStr(Clng(dtmFrom)), Criteria2:="<=" & CStr(Clng(dtmTo)))
        
        Redim astrNames(0)
        
        For Each objCell In .Range(.Cells(2, 3), _
                .Cells(.Rows.Count, 3).End(xlUp)).SpecialCells(Type:=xlCellTypeVisible)
            
            If UBound(Filter(SourceArray:=astrNames, Match:=objCell.Text)) = -1 Then
                
                Redim Preserve astrNames(ialngIndex)
                astrNames(ialngIndex) = objCell.Text
                ialngIndex = ialngIndex + 1
                
            End If
        Next
        
        For ialngIndex = LBound(astrNames) To UBound(astrNames)
            
            For Each objWorksheet In ThisWorkbook.Worksheets
                
                If objWorksheet.Name = astrNames(ialngIndex) Then Exit For
                
            Next
            
            If objWorksheet Is Nothing Then
                
                Set objWorksheet = ThisWorkbook.Worksheets.Add
                objWorksheet.Name = astrNames(ialngIndex)
                
            Else
                
                Call objWorksheet.UsedRange.ClearContents
                
            End If
            
            Call .Rows(1).AutoFilter(Field:=3, Criteria1:=astrNames(ialngIndex))
            
            Call .AutoFilter.Range.Copy(Destination:=objWorksheet.Cells(1, 1))
            
        Next
        
        Call .ShowAllData
        
        Set objWorksheet = Nothing
        
    End With
    
    With Application
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Zeitraum filtern
21.07.2020 09:28:43
Senna
Hallo Nepuk,
bei mir kommt leider noch Laufzeitfehler 1004. Die Autofiltermethode des Range-Objektes konnte nicht ausgeführt werden.
Bei dem Debugger wird folgende Zeile markiert: Call .Rows(1).AutoFilter(Field:=8, Criteria1:=">=" & _
CStr(Clng(dtmFrom)), Criteria2:="
AW: Zeitraum filtern
21.07.2020 10:16:40
Senna
Hallo Nepuk,
vielen Dank, jetzt funktioniert es. War ein kleiner Fehler. Aber ich habe noch einen Zwischenschritt hinzugefügt, damit passt es.
In dieser Tabelle habe ich jetzt noch ein zweites Blatt, von dort möchte ich genau das gleich machen, nur das ich es für die nächsten 4 Wochen möchte (also + 28 Tagen, statt den letzten 7 Tagen). Kannst du mir da auch nochmal weiter helfen, da der erst jetzt perfekt funktioniert. Ich habe die eine Stelle gefunden, wo man es ändern könnte, aber das scheint noch nicht alles zu sein.
AW: Zeitraum filtern
21.07.2020 10:24:40
Nepumuk
Hallo Senna,
du musst nur diese beiden Zeile:
    dtmTo = CDate(strInput)
dtmFrom = dtmTo - 7
so ändern:
    dtmFrom = CDate(strInput)
dtmTo = dtmFrom + 28
Gruß
Nepumuk
AW: Zeitraum filtern
21.07.2020 10:48:46
Senna
Grandios! Es funktioniert! Vielen lieben Dank!
Teste mal
21.07.2020 09:56:54
Werner
Hallo,
da ich jetzt auch schon einen Code geschrieben habe, hier deine Mappe zum Testen.
Da du die erstellten Blätter "verschicken" willst gehe ich davon aus, dass die danach wieder gelöscht werden.
Ich habe deshalb keine Fehlerbehandlung eingebaut die prüft, ob es das Blatt schon gibt. Sollte das der Fall sein, dann läuft der Code in einen Fehler.
https://www.herber.de/bbs/user/139191.xlsm
Gruß Werner
AW: Teste mal
21.07.2020 10:24:09
Senna
Super, das klappt auch! Vielen Dank! Wo müsste ich etwas ändern, wenn ich das ganze planend für die nächsten 28 Tage möchte, die Rohdatentabelle ist in einem zweiten Tabellenblatt "Planungen"
AW: Teste mal
21.07.2020 10:38:36
Werner
Hallo,
mal ein Tipp: Du solltest dir den Code schon mal anschauen und versuchen ihn zu verstehen.
Da sollte es auch bei deinem VBA-Level möglich sein auf die Idee zu kommen, hier
With Worksheets("Tabelle1")

den Namen des Tabellenblattes anzupassen und hier
.Range("A1").CurrentRegion.AutoFilter Field:=8, _
Criteria1:="=" & varDatum - 7

statt -7 dann -28 zu schreiben.
Gruß Werner
AW: Teste mal
21.07.2020 13:39:57
Senna
Super, vielen Dank!
Gerne u. Danke für die Rückmeldung. o.w.T.
21.07.2020 14:01:30
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige