Ciao AndreaBuratti2,
Sono un consulente indipendente, che cerca di aiutare gli altri utenti della community con la mia esperienza con i prodotti Microsoft. Tieni presente che sono un utente come te e non lavoro direttamente per Microsoft.
In base alla mia esperienza personale, la regolazione dinamica della selezione in base ai dati in ciascun file può essere ottenuta determinando l'ultima riga e colonna dell'intervallo di dati a livello di codice. In questo modo, non è necessario codificare l'intervallo. Ecco come puoi modificare il tuo codice per ottenere questo risultato:
Sub CreatePivotTable()
Dim wsSource come foglio di lavoro
Dim wsNuovo come foglio di lavoro
Quota pt come tabella pivot
Dim pc come PivotCache
Dim SourceRange As Range
Dim LastRow Finché
Dim LastColumn As Long
Attenua PivotRange come intervallo
' Impostare il foglio di lavoro di origine
Imposta wsSource = ThisWorkbook.Sheets("Foglio1")
' Trova l'ultima riga e l'ultima colonna di dati
LastRow = wsSource.Cells(wsSource.Rows.Count, "A"). Fine(xlUp). Fila
LastColumn = wsSource.Cells(1, wsSource.Columns.Count). Fine(xlToLeft). Colonna
' Definire l'intervallo di origine
Impostare SourceRange = wsSource.Range("A1"). Ridimensiona(LastRow, LastColumn)
' Creare un nuovo foglio di lavoro
Imposta wsNew = ThisWorkbook.Sheets.Add
' Creare una cache pivot
Set pc = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=SourceRange)
' Creare la tabella pivot
Set pt = wsNew.PivotTables.Add(PivotCache:=pc, TableDestination:=wsNew.Range("A1"), TableName:="PivotTable1")
' Specificare i campi di riga e colonna
Con pt
. PivotFields("Colore"). Orientamento = xlRowField
. PivotFields("Importo"). Orientamento = xlDataField
Termina con
Fine sottomarino
Questo codice regolerà dinamicamente l'intervallo in base ai dati in ogni file.
- Per rendere questa macro temporaneamente disponibile in più fogli di lavoro, è possibile memorizzarla in un modulo all'interno della cartella di lavoro di Excel. Procedere come descritto di seguito:
- Premere ALT + F11 per aprire l'editor di Visual Basic, Applications Edition (VBA).
- Nella finestra Esplora progetti, individua il progetto della cartella di lavoro.
- Fai clic con il pulsante destro del mouse sul progetto della cartella di lavoro e scegli Inserisci > modulo.
- Incolla il codice della macro nella finestra del modulo.
- Chiudi l'editor VBA.
A questo punto, la macro sarà disponibile per tutti i fogli di lavoro all'interno della cartella di lavoro. Puoi eseguirlo premendo ALT + F8 per aprire la finestra di dialogo "Esegui macro" e selezionando la tua macro. In alternativa, è possibile assegnare la macro a un pulsante o a una scorciatoia da tastiera per un facile accesso.
Apprezzerei il tuo feedback
Cordiali saluti
Fatai
Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.