Il post della scorsa settimana su come trasformare una tabella in un elenco ha prodotto commenti interessanti. Marco segnala che si può fare molto prima con R, in sole quattro righe di codice:
library(reshape) ordini <- read.csv("ordini.csv") ordini2 <- melt(ordini, id="Prodotto") names(ordini2) <- c("Prodotti","Taglia","Quantità") ordini3 <- ordini2[order(ordini2$Prodotti), ]
Robsom con MatLab se la sbriga in due sole righe:
data = load (‘info.dat’);
data_new = reshape (data’,size(data,1)*size(data,2),1);
Massimo Morelli invece prende la strada più difficile e la risolve con le formule di Excel. Allego il file di esempio (Esempio – formule dalla tabella alla lista) per i più avventurosi, ma giusto per darti l’idea ecco la formula in A2 che inserisce le etichette della prima colonna:
=SE(RIF.RIGA()-1<=RIGHE(SCARTO(Tabella!$A$1;1;0;CONTA.VALORI(Tabella!$A:$A)-1;1))*COLONNE(SCARTO(Tabella!$A$1;0;1;1;CONTA.VALORI(Tabella!$1:$1)-1));SCARTO(SCARTO(Tabella!$A$1;1;0;CONTA.VALORI(Tabella!$A:$A)-1;1);TRONCA((RIF.RIGA()-2)/COLONNE(SCARTO(Tabella!$A$1;0;1;1;CONTA.VALORI(Tabella!$1:$1)-1));0);0;1;1);””)
Invece per i meno avventurosi, c’è anche una soluzione dove le prime due colonne sono state inserite a mano, e la terza viene calcolata con una formula che si riesce ascrivere in una sola riga:
=CERCA.ORIZZ(B16;$B$1:$G$8;CONFRONTA(A16;$A$1:$A$8;0);0)
Per quanto riguarda la soluzione originale con la macro in VBA, più la guardo e meno mi piace. Magari uno di questi giorni la rifaccio e la ripubblico.
Detto così la soluzione in excel sembra un sudoku. Ma usando nomi e helper columns le formule non sono poi così complicate.
Massimo,non c’è dubbio che la soluzione con i nomi e con le formule intermedie sia più facile.
La mia variante ha però il vantaggio di essere immediatamente applicabile a qualsiasi tabella di dati.
Si potrebbe anzi trasformarla in una funzione personalizzata, e renderla ancora più facile da usare, non ti pare?
Naturalmente.