In qualità di ex utilizzatore pesante di 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 “Pagine” della tabella pivot.

  3. Sulla barra degli strumenti tabella pivot fare clic sull’opzione tabella pivot sul lato sinistro della barra degli strumenti. Excel mostra una serie di opzioni che puoi scegliere.

  4. Scegli Mostra pagine. Excel ti chiede di confermare che desideri mostrare le pagine.

  5. Fare clic su OK.

Ciò che si ottiene è una serie di fogli di lavoro, uno per ogni voce della colonna specificata nel passaggio 2. Questi fogli di lavoro contengono ciascuno 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 selezionato di celle 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 (11245) si applica a Microsoft Excel 97, 2000, 2002 e 2003.

Puoi trovare una versione di questo suggerimento per l’interfaccia a barra multifunzione di Excel (Excel 2007 e versioni successive) qui: