In qualità di ex utilizzatore pesante della Lotus 1-2-3 in un lavoro precedente, Patti si è MOLTO attaccata a una funzionalità che manca gravemente in Excel: la capacità di trasporre i dati in tre dimensioni. La trasposizione bidimensionale è supportata in Excel, ma Patti non ha trovato un modo per prendere una riga, una colonna o una tabella e distribuirla attraverso una pila di fogli di lavoro. Questa era una funzione che veniva utilizzata quotidianamente da tutti nel suo ufficio finanziario e le manca davvero.

Patti ha ragione; non esiste una funzione incorporata per farlo in Excel. L’opzione più vicina consiste nell’usare una tabella pivot e le funzionalità “Mostra pagine” che include. In generale, segui questi passaggi:

  1. Crea una tabella pivot dai tuoi dati come faresti normalmente.

  2. Posizionare la colonna da cui si desidera creare fogli di lavoro nella sezione “Filtro report” della tabella pivot.

  3. Visualizza la scheda Opzioni della barra multifunzione. (Questa scheda è visibile solo quando stai lavorando su una tabella pivot.)

  4. Fare clic sulla freccia in giù accanto allo strumento Opzioni, nel gruppo Tabella pivot all’estremità sinistra della barra multifunzione.

  5. Scegli Mostra pagine filtro rapporto. Excel ti chiede di confermare che desideri mostrare le pagine.

  6. 6 Fare clic su OK.

Quello che si finisce con è una serie di fogli di lavoro, uno per ogni voce nella colonna specificata nel passaggio 2. Ciascun foglio di lavoro contiene una “pagina” della tabella pivot.

Se questo non fa ancora quello che vuoi, dovrai ricorrere all’uso di una macro per trasporre i dati. Una tale macro può diventare piuttosto complessa, ma fondamentalmente tutto ciò che deve fare è scorrere la tabella dei dati e spostare ogni riga (o colonna) di dati nel proprio foglio di lavoro.

Ad esempio, la seguente macro (Transpose3D) prenderà ogni riga da un intervallo di celle selezionato e posizionerà quella riga sul proprio foglio di lavoro appena creato.

Sub Transpose3D()

Dim rngTbl As Range     Dim wsName As String     Dim R As Integer     Dim C As Integer     Dim i As Integer     Dim j As Integer     Dim Killit As Integer     Dim RCount As Integer     Dim CCount As Integer     Dim Table1() As Variant     Dim Row1() As Variant

RCount = Selection.Rows.Count     CCount = Selection.Columns.Count     If RCount < 2 Then         MsgBox ("Error; Select a range with more than one row.")

GoTo EndItAll     End If

wsName = ActiveSheet.Name     R = ActiveCell.Row     C = ActiveCell.Column

Set rngTbl = Selection     ReDim Table1(1 To RCount, 1 To CCount)

ReDim Row1(1 To 1, 1 To CCount)

Table1() = rngTbl.Value

On Error GoTo Abend

For i = 1 To RCount          If SheetExists(wsName & "_Row_" & i) Then             Killit = MsgBox("Sheet " & wsName & "_Row_" & i & _               " Already Exists!" & vbCrLf & _               "     Cancel: Stop Transposition" & vbCrLf & _               "     OK: Delete Sheet and Continue", vbOKCancel)

If Killit = vbCancel Then GoTo EndItAll             Application.DisplayAlerts = False             Sheets(wsName & "_Row_" & i).Delete             Application.DisplayAlerts = True         End If

Sheets.Add         ActiveSheet.Name = wsName & "_Row_" & i         Cells(R, C).Select         For j = 1 To CCount             Row1(1, j) = Table1(i, j)

Next j         Range(ActiveCell, ActiveCell.Offset(0, CCount - 1)) = Row1()

Sheets(wsName).Select     Next i     GoTo EndItAll

Abend:

MsgBox ("Error in Routine Transpose3D.")



EndItAll:

Application.DisplayAlerts = True End Sub
Function SheetExists(SheetName As String) As Boolean     Dim ws As Worksheet     SheetExists = False     For Each ws In ThisWorkbook.Worksheets         If ws.Name = SheetName Then             SheetExists = True             Exit For         End If     Next ws End Function

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (11246) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: