È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Impilare valori in colonna

Ultimo Aggiornamento: 22/12/2014 17:00
Post: 6
Registrato il: 24/08/2014
Età: 43
Utente Junior
2010
OFFLINE
22/12/2014 15:01

Ciao a tutti,
il mio problema oggi è il seguente:

(provo a descriverlo ma ho allegato un file di esempio che credo sia mooolto più chiaro)

Ho una prima colonna con un elenco.
Ad ogni istanza di questa colonna sono associati altri dati in numerosità variabile.
per esempio la prima istanza ha associato 1 valore, la seconda 3 e la terza di nuovo 1, etc...
Questi valori associati sono disposti nelle celle adiacenti sulla destra, ogni valore ha una sua cella.

Ciò che vorrei è che i valori associati si impilino in un'unica colonna e che nella prima colonna compaiano le istanze associate ai valori così come nel file originale.

Grazie in anticipo,
Ric
Post: 2.411
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Veteran
2013
OFFLINE
22/12/2014 16:05

Sempre che siano posizionati dalla cella A4 in poi (scriverà il tutto in Sheet2, se Sheet2 non esiste crealo).
Ti posizioni sul Sheet1 premi ALT+F11 e incolli il codice nella parte destra.
Avvialo premendo la freccia verde in alto.

Sub Riscrivi()
Dim Ur As Long, X As Long, Y As Long, Rg As Long
Ur = Range("A" & Rows.Count).End(xlUp).Row
Rg = 4
    For X = 4 To Ur
    col = Cells(X, Columns.Count).End(xlToLeft).Column
        For Y = 1 To col - 1
            Sheets("sheet2").Cells(Rg, 1) = Cells(X, 1)
            Sheets("sheet2").Cells(Rg, 2) = Cells(X, Y + 1)
            Rg = Rg + 1
        Next Y
    Next X
    MsgBox "Fatto"
End Sub
Excel 2013
Post: 1.746
Registrato il: 27/09/2010
Città: FIRENZE
Età: 61
Utente Veteran
Excel 2010
OFFLINE
22/12/2014 16:10

da matrice a colonna



Ciao,

condivido una prima risposta parecchio migliorabile


In G4 da copiare in basso

=INDICE($A$4:$A$7;RESTO(INT((RIGHE(A$1:A1)-1)/RIGHE($A$4:$A$7));RIGHE($A$4:$A$7))+1)

in H4

=SE.ERRORE(INDICE($B$4:$E$7;CONFRONTA(K4;$A$4:$A$7;0);CONTA.SE($K$4:K4;K4))&"";"")

-----------------------------------

Per ottenere un risultato molto simile (ri)descrivo un trucco che fa un uso trasversale di una pivot

Se vuoi provare...

Da un punto qualsiasi del foglio premi Alt, D, B

Si apre la maschera di creazione guidata della pivot.

Metti la spunta su "più intervalli di consolidamento"

premi avanti due volte

come intervallo seleziona

sheet1!$a$3:$a$7

premi aggiungi

premi fine.

Ottieni una pivot inutile, ma se clicchi due volte sul totale complessivo in basso a destra ottieni l'elenco - appena da ripulire- che stai descrivendo.

Uso questa velocissima procedura continuamente al lavoro per rendere leggibili ad altre pivot dati che mi arrivano già intabellati.


In attesa di soluzioni migliori


-------------------

Edit: soluzione migliore già arrivata mentre scrivevo: ciao Raffaele


[Modificato da (Canapone) 22/12/2014 16:13]

Post: 2.847
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Veteran
2010
OFFLINE
22/12/2014 17:00

non potevo non partecipare ! altra soluzione, tutto sullo stesso foglio
Sub trasp99()
r = 4: LC = 2
Do While LC >= 2
  LC = Cells(r, Cells.Columns.Count).End(xlToLeft).Column
  If LC > 2 Then
    Rows(r + 1 & ":" & r + LC - 2).Insert
    Range("A" & r + 1 & ":A" & r + LC - 2).Value = Range("A" & r).Value
    Range(Cells(r, 3), Cells(r, LC)).Copy
    Range("B" & r + 1).PasteSpecial xlValues, Transpose:=True
    Range(Cells(r, 3), Cells(r, LC)).Value = ""
    r = r + LC - 1
  Else
    r = r + 1
  End If
Loop
Application.CutCopyMode = False

End Sub


----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 04:35. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com