Condividi:        

Excel 2003 - spostare valori riga in base a riga precedente

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel 2003 - spostare valori riga in base a riga precedente

Postdi fabrias12 » 19/08/15 18:22

ciao a tutti,

da questa situazione iniziale
riga 1_____1___2___3___4___5__6__7__8__9__10__11__12__13__14__15__16__17__18__19__20_______(valori fissi)
riga 2_____7___3__15__12__18_______________________________________________________________(valori incollati)

vorrei avere questa situazione finale
riga 1_____1___2___3___4___5___6___7___8___9__10__11__12__13__14__15__16__17__18__19__20
riga 2_____________3_______________7__________________12__________15__________18

praticamente vorrei ordinare e spostare i valori di riga 2 in modo da allinearli con i corrispondenti valori di riga 1.
Qualcuno riuscirebbe a darmi qualche dritta ?

grazie.
fabrias12
Newbie
 
Post: 3
Iscritto il: 17/08/15 15:49

Sponsor
 

Re: Excel 2003 - spostare valori riga in base a riga precede

Postdi wallace&gromit » 19/08/15 20:39

Ciao Fabrias,
benvenuto nel forum
se i tuoi dati corrispondono esattamente a quanto hai scritto (quindi la tua tabella parte da A1 con i numeri fissi fino a T1),
potresti incollare i tuoi valori nuovi sempre nella colonna U, e in tutte le celle da A2 fino a Tx inserire questa formula:
Codice: Seleziona tutto
=SE(CONTA.SE($U2:$AN2;A$1)>0;A$1;"")
se invece non puoi usare le colonne da U via, mi sa che bisogna ripiegare su una macro.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Excel 2003 - spostare valori riga in base a riga precede

Postdi Anthony47 » 19/08/15 23:28

Non so se risolvi con la soluzione proposta da W&G (vedi sopra).
Se No, allora...
da questa situazione iniziale
[. . . ]
vorrei avere questa situazione finale
[. . . ]
praticamente vorrei ordinare e spostare i valori di riga 2 in modo da allinearli con i corrispondenti valori di riga 1.

E serve a qualcosa, questo?
Nell'ipotesi che "Si, serve proprio" prova a usare questa macro:
Codice: Seleziona tutto
Sub myFab()
Dim WArr, LC2 As Long, I As Long, myMatch
'
LC2 = Cells(2, Columns.Count).End(xlToLeft).Column
WArr = Range("A2").Resize(1, LC2).Value
Range("A2").Resize(1, LC2).ClearContents
For I = LBound(WArr, 2) To UBound(WArr, 2)
    myMatch = Application.Match(WArr(1, I), Range("1:1"), 0)
    If Not IsError(myMatch) Then
        Cells(2, myMatch) = WArr(1, I)
    End If
Next I
'
End Sub
Mettila in un "modulo standard" del vba:
Da excel: Alt-F11 per aprire l' editor delle macro; Menu /Inserisci /Modulo; copia il codice e incollalo nel frame di dx.
Poi quando ti serve esegui la Sub myFab:
Da excel, avendo attivo il foglio su cui si lavora, premi alt-F8, scegli myFab dall' elenco di macro che ti propone, premi Esegui. Eventualmente inserisci un controllo Pulsante sul tuo foglio e assegnagli la macro myFab.

Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel 2003 - spostare valori riga in base a riga precede

Postdi fabrias12 » 20/08/15 16:32

si, va benissimo grazie, funziona con entrambi i metodi descritti nelle risposte sopra

la risposta alla tua domanda Anthony è 'servirebbe proprio', nel senso che lo scopo sarebbe di fare strane statistiche con i numeri del lotto..
se l'operazione si può fare con la sola riga 2 sarebbe possibile eseguirla per un certo numero di righe, ad esempio dalla 2 alla 500 ?
fabrias12
Newbie
 
Post: 3
Iscritto il: 17/08/15 15:49

Re: Excel 2003 - spostare valori riga in base a riga precede

Postdi Anthony47 » 20/08/15 22:00

Per fare il lavoro su piu' righe dovrebbe andare bene questa variante
Codice: Seleziona tutto
Sub myFab2()
Dim WArr, LC2 As Long, I As Long, myMatch, R As Long
'
For R = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    LC2 = Cells(R, Columns.Count).End(xlToLeft).Column
    WArr = Range("A" & R).Resize(1, LC2).Value
    Range("A" & R).Resize(1, LC2).ClearContents
    For I = LBound(WArr, 2) To UBound(WArr, 2)
        myMatch = Application.Match(WArr(1, I), Range("1:1"), 0)
        If Not IsError(myMatch) Then
            Cells(R, myMatch) = WArr(1, I)
        End If
    Next I
Next R
'
End Sub

L' ultima riga da "lavorare" e' calcolata guardando l'ultima che contiene un valore in colonna A

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel 2003 - spostare valori riga in base a riga precede

Postdi fabrias12 » 21/08/15 18:02

l'ho provata con 220 righe ed ha funzionato egregiamente..

posso senz'altro dire di aver risolto
grazie, senza di voi non so proprio come avrei fatto :P

a presto.
fabrias12
Newbie
 
Post: 3
Iscritto il: 17/08/15 15:49


Torna a Applicazioni Office Windows


Topic correlati a "Excel 2003 - spostare valori riga in base a riga precedente":


Chi c’è in linea

Visitano il forum: Nessuno e 139 ospiti