Excel - da tabella a matrice

Asked By davevit on 13-May-10 09:08 AM
Salve a tutti, =E8 possibile convertire una matrice in una tabella dati?

mi spiego:

Ho una matrice del genere
b   c   d   e   f   ...
b   1   0   3   4   5
c   2   5   8   6   5
d   2   3   6   8
e
f
...

Vorrei convertirla in una tabella a tre colonne:

ROW    COL    VALUE
b          b         1
b          c         0
b          d         3
b          e         4
...

In pratica, una tabella pivot al contrario! :S

Grazie a tutti!!
Dave




r replied to davevit on 13-May-10 09:49 AM
http://groups.google.it/group/microsoft.public.it.office.excel/msg/66c150b7=
639564ef?hl=3Dit

cerca il 3d con medesimo oggetto del tuo
saluti
r
paoloard replied to davevit on 13-May-10 12:16 PM
ciao Dave, Roby non me ne voglia ma mi prudono i tasti....

in A11:
=SCARTO($A$1;ARROTONDA.PER.ECC(RIF.RIGA(A1)/(CONTA.VALORI($A$1:$M$1)-1);0);0)
in B11:
=SCARTO($A$1;0;RESTO(RIF.RIGA($A1)-1;(CONTA.VALORI($A$1:$M$1)-1))+1)
in C11: =CERCA.VERT(A11;$A$1:$M$5;CONFRONTA(B11;$A$1:$M$1;0))
da selezionare tutte e tre e trascinare in basso quanto basta.
Ovviamente adatta gli intervalli al tuo caso.
NB: non scrivere le formule all'interno dell'intervallo di CONTA.VALORI
perch? altrimenti viene falsato il conteggio del numero di iterazioni.
--
Fai sapere se come hai risolto grazie.
ciao paoloard
http://riolab.org
Bruno Campanini replied to davevit on 15-May-10 06:31 AM
==================================
Public Sub Tab2Mat()
Dim RowRange As Range, ColRange As Range
Dim StartPoint As Range, TargetPoint As Range
Dim i As Range, j As Integer, k As Integer

' Definizioni
' ----------------------------------------------------------
Set StartPoint = [Sheet3!A1] ' La cella vuota all'incrocio
' intestazioni Riga
' con Colonna
Set TargetPoint = [Sheet3!C13]
' ----------------------------------------------------------
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set RowRange = StartPoint(2, 1)
If Not IsEmpty(RowRange(2, 1)) Then
Set RowRange = RowRange.Resize _
(RowRange.End(xlDown).Row - RowRange.Row + 1)
End If
Set ColRange = StartPoint(1, 2)
If Not IsEmpty(ColRange(1, 2)) Then
Set ColRange = ColRange.Resize _
(, ColRange.End(xlToRight).Column - ColRange.Column + 1)
End If

For Each i In RowRange
For j = 1 To ColRange.Columns.Count
k = k + 1
TargetPoint(k, 1) = i
TargetPoint(k, 2) = ColRange(1, j)
TargetPoint(k, 3) = i(1, j + 1)
Next
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub
==================================

Bruno