TOP

Elementi non pivottabili (Unpivot)

Descrizione

Le tabelle pivot (pivot tables) sono un potente strumento per l'analisi dei dati. Tuttavia, a volte è necessario annullare l'orientamento (unpivot) dei dati sottoposti a rotazione (altrimenti noto come "raddrizzamento" o annullamento dell'orientamento dei dati) per inserirli in un formato di tabella regolare in modo che tutti i valori simili siano nella stessa colonna. Ciò è necessario, ad esempio, per creare un grafico o un report nuovo o modificato.

Puoi eseguire questa conversione in Excel utilizzando lo strumento Power Query, ma non è veloce e non è molto conveniente. Proviamo un approccio diverso per implementare i dati di riepilogo senza Power Query.


Formulazione del problema

Immaginiamo di dover convertire alcuni set di dati da una tabella pivot a una tabella flat (Unpivot):

Tale compito viene risolto meglio con l'aiuto di una macro. Scriviamo la nostra procedura che sarà in grado di convertire una tabella incrociata (cross table) con dati in un formato di tabella normale (piatto), che ci consentirà nuovamente creare tabelle riassuntive con dati modificati o integrati.

Codice VBA per la procedura UnPivotTable

Aprire l'editor Visual Basic (Servizio - Macro - Editor Visual Basic), inserire il nuovo modulo (Insert - Module) e copia lì il testo di questa macro:

Sub UnPivotTable()
  'moonexcel.com.ua  
  Dim InVal    As Variant
  Dim OutVal() As Variant
  Dim j, k, i  As Long
  Dim NewSheet
  
  i = 1
  InVal = Selection.Formula
  ReDim OutVal(1 To Selection.Count, 1 To 3)
  
  For j = 2 To UBound(InVal, 1)
    For k = 2 To UBound(InVal, 2)
      If InVal(j, k) <> "" Then
        OutVal(i, 1) = InVal(j, 1)
        OutVal(i, 2) = InVal(1, k)
        OutVal(i, 3) = InVal(j, k)
        i = i + 1
      End If
    Next k
  Next j
  
  Set NewSheet = Worksheets.Add
  NewSheet.Range("A1").Resize(UBound(OutVal, 1), 3).Value = OutVal
End Sub 

Successivamente, puoi chiudere l'editor VBA, tornare a Excel, selezionare la tabella di origine (completamente, con l'intestazione e la prima colonna con i paesi) ed eseguire la nostra macro attraverso il menu Servizio - Macro - Macro (Tools - Macro - Macros) (ALT+F8) .

La macro inserirà un nuovo foglio nella cartella di lavoro e creerà su di esso una nuova versione ricostruita della tabella selezionata. Puoi lavorare con una tabella di questo tipo "con il programma completo", utilizzando l'intero arsenale di strumenti Excel per l'elaborazione e l'analisi di tabelle di grandi dimensioni.

Articoli Correlati: