In questo articolo, creeremo una macro per estrarre i dati dal foglio di lavoro dei dati grezzi in un nuovo foglio di lavoro, in base all'intervallo di date specificato.
I dati grezzi sono costituiti da tre colonne. La prima colonna contiene le date, la seconda colonna contiene i nomi degli agenti e la terza colonna contiene i numeri delle vendite effettuate da un agente in quella particolare data.
Prima di eseguire la macro, sono richiesti due input da un utente. L'utente deve definire la data di inizio e di fine. In base alle date specificate, la macro estrarrà i dati tra l'intervallo di date definito in un nuovo foglio di lavoro.
Dopo aver specificato le date di inizio e fine, l'utente deve fare clic sul pulsante "Invia" per eseguire la macro.
Eseguendo la macro, ordinerà i dati nel foglio "RawData", in base alla colonna della data ed estrarrà i dati in base all'intervallo di date specificato nel foglio di lavoro appena inserito.
Spiegazione logica
La macro accetta input per le date di inizio e fine dalle celle J8 e J9, rispettivamente. Questa macro ordina innanzitutto i dati nel foglio "RawData", in base alla colonna A in ordine crescente. Abbiamo ordinato i dati in base ai valori della data, in modo da poter copiare i dati in un unico intervallo, dopo aver applicato il filtro per l'intervallo definito.
Dopo aver ordinato i dati, applica il filtro su di essi. Il filtro applicato si basa su due condizioni, la prima condizione è che il valore nella colonna A deve essere maggiore o uguale alla data di inizio e la seconda condizione è che il valore nella colonna A deve essere minore o uguale alla data di fine.
Dopo aver applicato il filtro, viene inserito il nuovo foglio di lavoro e i dati filtrati vengono copiati e incollati al suo interno.
Spiegazione del codice
Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes
Il codice sopra viene utilizzato per ordinare i dati nell'intervallo definito. Key1 specifica la colonna in base alla quale verranno ordinati i dati. L'ordinamento è fornito da order1. Abbiamo già definito l'ordine crescente. Per definire l'ordine decrescente, si può usare xlDescending costante. L'intestazione viene utilizzata per specificare se l'intervallo di dati contiene l'intestazione.
Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:= ">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate
Il codice sopra viene utilizzato per applicare il filtro sull'intervallo di dati. Campo1 specifica il numero di colonna su cui verrà applicato il filtro. Criteri1 e Criteri2 definiscono le condizioni in base alle quali verranno filtrati i dati. Operatore specifica l'operatore che verrà utilizzato tra due condizioni.
Fogli di lavoro.Aggiungi dopo:=Fogli di lavoro(Foglio di lavoro.Conteggio)
Il codice sopra viene utilizzato per inserire il nuovo foglio di lavoro dopo l'ultimo foglio di lavoro nella cartella di lavoro.
Si possono facilmente comprendere i codici, poiché ho inserito commenti insieme ai codici nella macro.
Si prega di seguire sotto per il codice
Sub CopyDataBasedOnDate() 'Disabilitazione aggiornamenti schermo Application.ScreenUpdating = False 'Dichiarazione di due variabili di tipo dati Date Dim StartDate, EndDate As Date 'Dichiarazione variabile per oggetto foglio di lavoro Dim MainWorksheet As Worksheet 'Inizializzazione delle variabili Date con data di inizio dalla cella J8 'e data di fine dalla cella J9 del foglio "Macro" StartDate = Sheets("Macro").Range("J8").Value EndDate = Sheets("Macro").Range("J9").Value 'Inizializzazione oggetto foglio di lavoro con " Foglio di lavoro RawData" Set MainWorksheet = Worksheets("RawData") 'Attivazione dell'oggetto foglio di lavoro MainWorksheet.Activate 'Ordinamento dei dati per data nella colonna A in ordine crescente Range("A1").CurrentRegion.Sort _ key1:=Range("A1 "), order1:=xlAscending, _ Header:=xlYes 'Filtra i dati in base all'intervallo di date tra la data di inizio e la data di fine Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:= _ ">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate 'Copia i dati del filtro ActiveSheet.AutoFilter.Range.Copy 'Inserimento nuovo wor ksheet dopo l'ultimo foglio di lavoro nella cartella di lavoro Worksheets.Add after:=Worksheets(Worksheets.Count) 'Incolla i dati copiati ActiveSheet.Paste 'Regola automaticamente la dimensione delle colonne selezionate Selection.Columns.AutoFit Range("A1").Select ' Attivazione del foglio "RawData" MainWorksheet.Activate 'Rimozione del filtro dal foglio di lavoro che abbiamo applicato in precedenza Selection.AutoFilter Sheets("Macro").Activate End Sub
Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook. Inoltre, puoi seguirci su Twitter e Facebook.
Ci piacerebbe avere tue notizie, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici al sito di posta elettronica