In diesem Artikel erstellen wir ein Makro zum Extrahieren von Daten aus dem Rohdaten-Arbeitsblatt in ein neues Arbeitsblatt, basierend auf dem angegebenen Datumsbereich.
Rohdaten bestehen aus drei Spalten. Die erste Spalte enthält Daten, die zweite Spalte enthält die Namen der Agenten und die dritte Spalte enthält die Anzahl der Verkäufe, die von einem Agenten an diesem bestimmten Datum getätigt wurden.
Vor dem Ausführen des Makros sind zwei Eingaben von einem Benutzer erforderlich. Der Benutzer muss das Start- und Enddatum definieren. Basierend auf den angegebenen Daten extrahiert das Makro die Daten zwischen dem definierten Datumsbereich in ein neues Arbeitsblatt.
Nach Angabe des Start- und Enddatums muss der Benutzer auf die Schaltfläche „Senden“ klicken, um das Makro auszuführen.
Beim Ausführen des Makros werden die Daten im Blatt "RawData" basierend auf der Datumsspalte sortiert und Daten basierend auf dem angegebenen Datumsbereich in das neu eingefügte Arbeitsblatt extrahiert.
Logikerklärung
Makro nimmt Eingaben für Start- und Enddatum aus den Zellen J8 bzw. J9 entgegen. Dieses Makro sortiert zunächst die Daten im Blatt „RawData“ basierend auf Spalte A in aufsteigender Reihenfolge. Wir haben die Daten nach Datumswerten sortiert, sodass wir die Daten in einen einzigen Bereich kopieren können, nachdem wir den Filter für den definierten Bereich angewendet haben.
Wenden Sie nach dem Sortieren der Daten den Filter darauf an. Der angewendete Filter basiert auf zwei Bedingungen. Die erste Bedingung ist, dass der Wert in Spalte A größer oder gleich dem Startdatum sein sollte, und die zweite Bedingung, dass der Wert in Spalte A kleiner oder gleich dem Enddatum sein sollte.
Nach dem Anwenden des Filters wird das neue Arbeitsblatt eingefügt und die gefilterten Daten werden kopiert und eingefügt.
Codeerklärung
Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes
Der obige Code wird verwendet, um Daten im definierten Bereich zu sortieren. Key1 gibt die Spalte an, nach der die Daten sortiert werden. Die Sortierreihenfolge wird von order1 bereitgestellt. Die aufsteigende Reihenfolge haben wir bereits definiert. Um die absteigende Reihenfolge zu definieren, kann man die xlDescending-Konstante verwenden. Header wird verwendet, um anzugeben, ob der Datenbereich den Header enthält.
Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:= ">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate
Der obige Code wird verwendet, um Filter über den Datenbereich anzuwenden. Field1 gibt die Spaltennummer an, auf die der Filter angewendet wird. Kriterien1 und Kriterien2 definieren die Bedingungen, auf deren Grundlage die Daten gefiltert werden. Operator gibt den Operator an, der zwischen zwei Bedingungen verwendet wird.
Worksheets.Add after:=Worksheets(Worksheets.Count)
Der obige Code wird verwendet, um das neue Arbeitsblatt nach dem letzten Arbeitsblatt in der Arbeitsmappe einzufügen.
Man kann die Codes leicht verstehen, da ich neben den Codes auch Kommentare in das Makro eingefügt habe.
Bitte folgen Sie unten für den Code
Sub CopyDataBasedOnDate() 'Deaktivieren von Bildschirmaktualisierungen Application.ScreenUpdating = False 'Deklarieren von zwei Variablen des Datumsdatentyps Dim StartDate, EndDate As Date 'Deklarieren einer Variablen für das Arbeitsblattobjekt Dim MainWorksheet As Worksheet 'Initialisieren der Datumsvariablen mit dem Startdatum aus Zelle J8 'und Enddatum aus Zelle J9 des Blatts "Macro" StartDate = Sheets("Macro").Range("J8").Value EndDate = Sheets("Macro").Range("J9").Value 'Arbeitsblattobjekt wird initialisiert mit " RawData" Arbeitsblatt Set MainWorksheet = Worksheets("RawData") 'Aktivieren des Arbeitsblattobjekts MainWorksheet.Activate 'Sortieren der Daten nach Datum in Spalte A in aufsteigender Reihenfolge Range("A1").CurrentRegion.Sort _ key1:=Range("A1 "), order1:=xlAscending, _ Header:=xlYes 'Filtern Sie die Daten basierend auf dem Datumsbereich zwischen Startdatum und Enddatum Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:= _ ">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate 'Filterdaten kopieren ActiveSheet.AutoFilter.Range.Copy 'Neue Arbeit einfügen ksheet nach dem letzten Arbeitsblatt in der Arbeitsmappe Worksheets.Add after:=Worksheets(Worksheets.Count) 'Einfügen der kopierten Daten ActiveSheet.Paste 'Automatische Anpassung der Größe der ausgewählten Spalten Selection.Columns.AutoFit Range("A1").Select ' Aktivieren des Blatts "RawData" MainWorksheet.Activate 'Filter aus dem Arbeitsblatt entfernen, das wir zuvor angewendet haben Selection.AutoFilter Sheets("Macro").Activate End Sub
Wenn Ihnen dieser Blog gefallen hat, teilen Sie ihn mit Ihren Freunden auf Facebook. Außerdem können Sie uns auf Twitter und Facebook folgen.
Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns auf der E-Mail-Site