in ein neues Arbeitsblatt In diesem Artikel erstellen wir ein Makro, um Daten aus dem Rohdatenarbeitsblatt basierend auf dem angegebenen Datumsbereich in ein neues Arbeitsblatt zu extrahieren.

Rohdaten bestehen aus drei Spalten. Die erste Spalte enthält Daten, die zweite Spalte enthält Agentennamen und die dritte Spalte enthält die Anzahl der Verkäufe, die ein Agent an diesem bestimmten Datum getätigt hat.

ArrowRawData

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.

ArrowMainSheet

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.

ArrowAfterRunningMacro

ArrowOutputSheet

Logische Erklärung

Das Makro nimmt Eingaben für Start- und Enddaten von 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, damit wir die Daten in einen einzelnen 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 ist, 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 gefilterte Daten werden kopiert und eingefügt.

Code Erklärung

Bereich („A1“). CurrentRegion.Sort key1: = Bereich („A1“), order1: = xlAscending, Header: = xlYes Der obige Code wird zum Sortieren von Daten im definierten Bereich verwendet. Schlüssel1 gibt die Spalte an, nach der die Daten sortiert werden. Die Sortierreihenfolge wird durch order1 bereitgestellt. Wir haben die aufsteigende Reihenfolge bereits definiert. Um die absteigende Reihenfolge zu definieren, kann man die Konstante xlDescending verwenden. Mit dem Header wird angegeben, ob der Datenbereich den Header enthält.

Bereich („A1“). CurrentRegion.AutoFilter Feld: = 1, Kriterium1: = „> =“ & StartDate, Operator: = xlAnd, Kriterium2: = „⇐“ & EndDate Der obige Code wird verwendet, um Filter über den Datenbereich anzuwenden . Feld1 gibt die Spaltennummer an, auf die der Filter angewendet wird. Kriterien1 und Kriterien2 definieren die Bedingungen, anhand derer Daten gefiltert werden.

Operator gibt den Operator an, der zwischen zwei Bedingungen verwendet wird.

Arbeitsblätter.Add after: = Arbeitsblätter (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 Kommentare zusammen mit den Codes in das Makro eingefügt habe.

Bitte folgen Sie unten für den Code

Sub CopyDataBasedOnDate()

'Disabling screen updates

Application.ScreenUpdating = False

'Declaring two variables of Date data type

Dim StartDate, EndDate As Date

'Declaring variable for worksheet object

Dim MainWorksheet As Worksheet

'Initializing the Date variables with starting date from cell J8

'and end date from cell J9 of "Macro" sheet

StartDate = Sheets("Macro").Range("J8").Value

EndDate = Sheets("Macro").Range("J9").Value

'Initializing worksheet object with "RawData" worksheet

Set MainWorksheet = Worksheets("RawData")

'Activating the worksheet object

MainWorksheet.Activate

'Sorting the data by date in column A in ascending order

Range("A1").CurrentRegion.Sort _

key1:=Range("A1"), order1:=xlAscending, _

Header:=xlYes

'Filter the data based on date range between starting date and end date

Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:= _

">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate

'Copy the filter data

ActiveSheet.AutoFilter.Range.Copy

'Inserting new worksheet after the last worksheet in the workbook

Worksheets.Add after:=Worksheets(Worksheets.Count)

'Pasting the copied data

ActiveSheet.Paste

'Auto adjusting the size of selected columns

Selection.Columns.AutoFit

Range("A1").Select



'Activating the "RawData" sheet

MainWorksheet.Activate

'Removing filter from the worksheet which we applied earlier

Selection.AutoFilter

Sheets("Macro").Activate

End Sub

Wenn dir dieser Blog gefallen hat, teile ihn mit deinen Freunden auf Facebook und Facebook.

Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns unter [email protected]