Kopieren von Daten mit Datum zwischen zwei definierten Terminen neues Arbeitsblatt mit VBA
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.
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.
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]