PDA

Visualizza versione completa : Riorganizzazione righe excel


omancino
24-12-2014, 10.55.20
Rompicapo natalizio. Ho un foglio nel quale ci sono una serie di utenti con codici associati (foglio 1 nell'allegato). Ho necessità di creare un foglio strutturato come il foglio 2 dell'allegato, con l'eliminazione degli utenti duplicati e l'aggiunta, in un'unica riga, di tutti i codici ad essi associati con creazione di nuove colonne (nell'esempio Verdi Mario e Neri Paolo).
Mi rendo conto di passare in secondo piano rispetto a panettone e spumante, però....:rolleyes:

Alexsandra
24-12-2014, 17.06.20
guardo il file ....

omancino
13-01-2015, 11.57.43
Non c'è speranza?:crying:

Alexsandra
13-01-2015, 21.52.10
Non c'è speranza?:crying:

a dire il vero .... mi sono dimenticata :fiufiu:
lo guardo adesso :) promesso

omancino
14-01-2015, 10.03.59
Scherzi? Non è mica un obbligo! :Oh-yea:

Alexsandra
15-01-2015, 21.35.07
Prova con il file allegato e vedi se fa quello che ti serve.

Link errato

NB: ho rinominato i fogli.
Il foglio Riepilogo è quello che riceve i dati e il Foglio1 è quello da cui vengono ricavati i dati.

omancino
16-01-2015, 11.28.00
Cara Alexsandra, non vorrei avere malinteso le tue indicazioni, ma se provo ad utilizzare il primo bottone (rettangolare) su Foglio1, ricevo un messaggio di errore di compilazione sulla routine Test di "Next senza For".
Dove sbaglio?
Grazie

Alexsandra
16-01-2015, 18.25.06
Cara Alexsandra, non vorrei avere malinteso le tue indicazioni, ma se provo ad utilizzare il primo bottone (rettangolare) su Foglio1, ricevo un messaggio di errore di compilazione sulla routine Test di "Next senza For".
Dove sbaglio?
Grazie

ho sbagliato io ..... ho messo il link del file delle prove.
stasera metto quello giusto.

scusami :)

Alexsandra
16-01-2015, 22.18.10
ecco il file giusto ;)

provalo

https://www.dropbox.com/s/gip2fjttw4kmn7b/doppio.xlsm?dl=0

omancino
19-01-2015, 11.14.28
Cara Alexsandra c'è ancora qualcosa che non va'..
come potrai vedere nel file che ti allego, mentre per il primo utente (rossi francesco) è tutto ok, per il secondo (neri paolo) sono stati riportati gli ultimi 3 valori di rossi francesco (15-278-55) che si sono sovrapposti a quelli presenti (10-20-30).
Grazie per la pazienza.:Oh-yea:

Alexsandra
19-01-2015, 18.12.21
non è come dici tu. ricontrolla, ma prima cancella i valori nelle colonne gialle del foglio Riepilogo.

omancino
20-01-2015, 10.24.13
Sono sicuro che c'è qualcosa che mi sfugge ma, ad ogni modo, ti allego delle immagini con la sequenza di quello che vedo. In particolare, ci sono dei valori iniziali non congrui nella cartella Riepilogo rispetto a Foglio1: devo cancellare anche quelli prima di eseguire la macro?
Saluti:)

Alexsandra
21-01-2015, 20.20.43
i dati di Rossi sono uguali, per quello vengono ripetuti nel foglio riepilogo

omancino
22-01-2015, 09.58.00
Bene. Per evitare equivoci, ho cambiato i valori duplicati di Rossi (nuovo foglio1) ed ho eseguito la macro "doppio": in "nuovo foglio1 dopo esecuzione doppio" e "nuovo riepilogo dopo esecuzione doppio" i risultati.
Grazie.

Alexsandra
22-01-2015, 21.48.31
Provo a spiegarmi meglio su come ho interpretato il tuo problema e come ho usato il codice per risolverlo.

Se guardi nel Foglio 1 ci sono i seguenti doppioni

Riga 3 = Neri con valori = 1-2-3
Riga 4 = Neri con valori = 10-20-30

Riga 5 = Rossi con valori = 40-50-60
Riga 6 = Rossi con valori = 70-80-90
Riga 7 = Rossi con valori = 100-200-300

Tu hai chiesto di riportare i valori dei doppioni nel Foglio Riepilogo adiacenti alle colonne verdi e nei rispettivi nominativi, e di cancellare le righe contenenti i doppioni nel Foglio 1. Cioè si devono copiare i valori doppi di Neri Paolo e Rossi Francesco e riportare tali valori nelle celle consecutive a quelle verdi dello stesso nominativo.

Ora prima di lanciare la macro nel Foglio 1 ci sono i doppioni evidenziati che vedi in figura allegata e una volta lanciata la macro vengono copiati i valori dei doppioni e incollati nella cella successiva alle colonne verdi del Foglio Riepilogo. Se guardi i valori noterai che ho preso il 1° valore doppio, riportato nel foglio riepilogo e cancellata la riga di tale valore nel foglio1.

se questo non è quello che ti aspettativi prova a spiegarti meglio.
Ovvio che se non cancelli i valori nelle colonne gialle del foglio riepilogo tutti i valori verrano scritti nell'ultima cella
libera della riga scelta.

omancino
23-01-2015, 10.02.41
Ok, mi sono spiegato male.
Nel foglio Riepilogo dovrebbero apparire (per i nominativi duplicati) i seguenti valori:
Neri Paolo: 1 2 3(riga 3 del foglio origine) 10 20 30 (riga 4 )
Rossi Francesco: 40 50 60 (riga 5) 70 80 90 (riga 6) 100 200 300 (riga7)

Sostanzialmente mettere in sequenza su un'unica riga quanto (a parità di nominativo) è presente su più righe nel foglio originale.

La cancellazione sarebbe un "di cui" per non avere più di un Neri o Rossi nel foglio Riepilogo: il foglio origine deve rimanere così come è.

Mi scuso per la mancanza di chiarezza.
Spero ora sia tutto ok.
Grazie

Alexsandra
24-01-2015, 00.18.43
Leggo ancora un'incongruenza, mi spiego meglio.

Come logica, se parliamo di doppioni, si tolgono tutti i doppioni e si lascia 1 nominativo unico, tu invece vuoi prelevare i dati di tutti i doppioni dal foglio origine e incollarli nel foglio riepilogo.

Poi però dici


La cancellazione sarebbe un "di cui" per non avere più di un Neri o Rossi nel foglio Riepilogo: il foglio origine deve rimanere così come è.

Ok per il foglio riepilogo, ma se non vengono tolti dal foglio origine la prossima volta che esegui la macro te li ricopia.

A livello programmazione si può fare così:

* si lavora sul foglio Riepilogo, partendo dalla cella A2 e si scorrono tutte le righe fino alla fine
* si cerca nel foglio 1 il valore della cella attiva del foglio Riepilogo e se è presente si copiano i dati delle 3 colonne del foglio 1 nel foglio riepilogo.
* si cancellano i dati che sono stati copiati nel foglio Riepilogo dal foglio origine (?? da confermare)

sarebbe interessante sapere come ricavi questi dati, a volte è meglio prevenire che curare e magari ottimizzando le operazioni precedenti si può semplificare notevolmente il processo.

comunque conferma o modifica la sequenza delle operazioni con l'asterisco iniziale che vediamo di sistemare il codice

Alexsandra
25-01-2015, 00.58.35
prova con questo

https://www.dropbox.com/s/h7vnmejwdwlduwo/doppio.rar?dl=0

omancino
26-01-2015, 10.03.17
Ok, adesso (a parte l'ordine di concatenazione delle righe nel foglio Riepilogo che dovrebbe rispettare quello originale) il codice funziona.
Un dubbio: da dove provengono i valori inizialmente presenti nel foglio Riepilogo? Vorrei partire da un foglio bianco ma, se cancello tutti valori presenti, all'esecuzione della macro vengono riportati solo i valori relativi ai duplicati. Forse non ho ben spiegato che, nel foglio Riepilogo, dovrebbero apparire "anche" gli elementi con valori non duplicati nel Foglio1.
Quanto alla cancellazione, mi è utile mantenere la struttura del Foglio 1 dopo l'esecuzione della macro, per poter effettuare dei riscontri "manuali".
Non rieseguirei la macro di nuovo sul foglio1, se non, eventualmente, dopo avere ripulito il foglio Riepilogo.
Grazie per le spiegazioni e i consigli.
:Oh-yea:

Alexsandra
26-01-2015, 11.35.25
Ok, adesso (a parte l'ordine di concatenazione delle righe nel foglio Riepilogo che dovrebbe rispettare quello originale) il codice funziona.

non è possibile, se vuoi trovare i doppioni

Un dubbio: da dove provengono i valori inizialmente presenti nel foglio Riepilogo?

erano nel file che mi hai dato tu, era chiaro che dovevano rimanere e incollare nelle righe successive quelli estratti dal foglio1

Vorrei partire da un foglio bianco ma, se cancello tutti valori presenti, all'esecuzione della macro vengono riportati solo i valori relativi ai duplicati. Forse non ho ben spiegato che, nel foglio Riepilogo, dovrebbero apparire "anche" gli elementi con valori non duplicati nel Foglio1.
Quanto alla cancellazione, mi è utile mantenere la struttura del Foglio 1 dopo l'esecuzione della macro, per poter effettuare dei riscontri "manuali".
Non rieseguirei la macro di nuovo sul foglio1, se non, eventualmente, dopo avere ripulito il foglio Riepilogo.

In pratica si deve rifare tutto. :jump:
appena ho tempo vedrò cosa si può fare, intanto pensa se quello che hai scritto è quello che vuoi, non sarebbe simpatico rifare tutto e poi che salti fuori un'altro problema

omancino
26-01-2015, 15.34.12
Spiacente, si vede che il mio italiano non è abbastanza chiaro. I valori di partenza sono quelli ora presenti nel Foglio 1(2).
(N.B valori come Bianchi Mauro 369 323 158 non capisco da dove provengano...)
Il foglio Riepilogo deve contenere tutti i nominativi (e relativi valori) presenti nel foglio origine e mettere in sequenza ordinata le righe che riguardano nominativi duplicati.
Non mi sembrava di avere mai parlato, sin dall'inizio, di doppioni da trovare o righe da cancellare, ma di righe da riorganizzare e concatenazioni.
Mi sembrava che questo concetto (senza ricorrere a Quota successivi...) fosse chiaro ma evidentemente sbagliavo.
Scusa se ti ho fatto perdere tempo.

Alexsandra
26-01-2015, 16.26.05
questo lo hai scritto tu nel tuo primo post

Rompicapo natalizio. Ho un foglio nel quale ci sono una serie di utenti con codici associati (foglio 1 nell'allegato). Ho necessità di creare un foglio strutturato come il foglio 2 dell'allegato, con l'eliminazione degli utenti duplicati e l'aggiunta, in un'unica riga, di tutti i codici ad essi associati con creazione di nuove colonne (nell'esempio Verdi Mario e Neri Paolo).
Mi rendo conto di passare in secondo piano rispetto a panettone e spumante, però...

.....
Non mi sembrava di avere mai parlato, sin dall'inizio, di doppioni da trovare o righe da cancellare, ma di righe da riorganizzare e concatenazioni.

in pratica io ho sviluppato qualcosa in base alle tue richieste, ma se poi dopo 20 post cambia qualcosa non so proprio cosa farci. Il termine "doppione" (che rappresenta un nominativo già esistente) richiede una particolare procedura per essere identificato ed estrapolare i dati ad esso associati, altrimenti come faccio a sapere che esiste già?

comunque il tag Quote è molto utile in un forum, serve solo a evidenziare e/o focalizzare un concetto, Pertanto rileggiti il tutto ed esponi quello che ti serve in maniera chiara

omancino
26-01-2015, 16.57.28
Per "eliminazione degli utenti duplicati" intendevo l'eliminazione della righe con nominativi identici, da sostituire con un'unica riga con nominativo unico e sequenza di celle. Capisco il malinteso, ma quanto richiesto in tutti i post successivi pensavo avesse man mano chiarito le esigenze (forse un po' prima del 20°...).
Ad ogni modo, come ho scritto nell'ultimo post, quello di cui avrei bisogno (e ti pregherei di considerare il condizionale..) è:
Il foglio Riepilogo deve contenere tutti i nominativi (e relativi valori) presenti nel foglio origine e mettere in sequenza ordinata le righe che riguardano nominativi duplicati.
Di nuovo, spiacente per il malinteso e la perdita di tempo.
I tuoi consigli sono sempre stati utili e mi farebbe piacere continuare a riceverne.

Alexsandra
26-01-2015, 20.40.12
Per "eliminazione degli utenti duplicati" intendevo l'eliminazione della righe con nominativi identici, da sostituire con un'unica riga con nominativo unico e sequenza di celle.

Con questo intendi dire che se hai 3 Neri Paolo te ne rimane 1 solo nel foglio1, mentre nel foglio riepilogo vengono copiati tutti e 3 ???

Il foglio Riepilogo deve contenere tutti i nominativi (e relativi valori) presenti nel foglio origine e mettere in sequenza ordinata le righe che riguardano nominativi duplicati.

tornando all'esempio di prima, ci sarà 1 solo Neri Paolo e i valori degli altri 2 verranno copiati nelle celle adiacenti.
hai anche detto che il foglio riepilogo è vuoto quando si esegue la macro, confermi?

omancino
27-01-2015, 09.48.48
Provo a spiegarmi meglio. Se nel foglio origine ci sono:
Neri Paolo 1 2 3
Neri Paolo 4 5 6
Verdi Gino 10 20 30
In quello di riepilogo mi aspetterei:
Neri Paolo 1 2 3 4 5 6
Verdi Gino 10 20 30
In tutto questo, il foglio origine deve restare immutato.
Confermo che il foglio riepilogo è vuoto in partenza e consterà di tante colonne quante necessarie per la concatenazione delle righe relative a nominativi ripetuti nel foglio origine.
Grazie

Alexsandra
30-01-2015, 10.28.02
prova con questo

omancino
30-01-2015, 13.09.55
Perfetto! Ancora una volta la soluzione.
Grazie:act::Oh-yea:

omancino
05-08-2015, 13.44.05
Buongiorno Alexsandra! Non so se sia molto corretto riattivare un thread così vetusto ma, sto' riapplicando la tua soluzione ad un contesto diverso e mi sono accorto che la concatenazione non avviene secondo l'ordine di righe ma, dopo avere copiato la prima, si passa all'ultima e si risale. Ad esempio:

Neri Paolo 1 2 3
Neri Paolo 3 4 5
Neri Paolo 6 7 8

diventa
Neri Paolo 1 2 3 6 7 8 3 4 5

Il problema è risolvibile senza stravolgere la logica dello script?
Grazie

Alexsandra
05-08-2015, 22.58.05
dovresti allegare il file, io non l'ho conservato

omancino
06-08-2015, 11.19.30
Eccolo!
Grazie.

Alexsandra
09-08-2015, 19.06.27
prova con questo modificato

omancino
11-08-2015, 10.01.34
Perfettamente funzionante. Grazie :Oh-yea:

Alexsandra
11-08-2015, 15.46.57
prego :)

omancino
12-08-2015, 11.47.06
Alexsandra, mi scuso anticipatamente per l'approccio "work in progress", ma sto' cercando di applicare la tua soluzione a realtà diverse e questo fa sorgere problemi non evidenti in fase di progettazione iniziale..
Dunque mi sono accorto che, se una delle celle da concatenare è vuota, l'intera sequenza sulla riga viene saltata.
Hai una soluzione anche per questo?
Grazie

Alexsandra
12-08-2015, 23.47.41
Intendi che 1 doppione (o più doppioni) nel foglio 1 non hanno 3 valori da riportare nel foglio riepilogo, ma ne possono avere di meno?

per risolvere mi devi dare dei punti di riferimento fissi nel foglio 1, uno potrebbe essere che prelevo i valori da 3 celle.
ma la cella vuota deve essere rimossa o può restare nel foglio riepilogo?

omancino
13-08-2015, 10.16.58
Nel caso reale la cella, anche se vuota nel foglio di origine, "deve" essere presente (vuota) nel foglio riepilogo.
Ti allego il file con un esempio del caso in esame.
Grazie

Alexsandra
13-08-2015, 11.19.15
le celle da ricopiare nel foglio riepilogo sono sempre 4??

omancino
13-08-2015, 12.22.49
in realtà potrebbero cambiare di numero. Generalizzare o parametrizzare l'algoritmo sarebbe un problema?

Alexsandra
13-08-2015, 22.07.44
Per non complicarsi la vita si potrebbe sostituire le celle vuote con uno 0 (zero)
se questo può andar bene prova il file allegato

omancino
14-08-2015, 10.21.23
In effetti, Alexsandra, era un workaround cui avevo (molto modestamente, ma sto' migliorando..:timid:) pensato anch'io. Il problema è che devo successivamente utilizzare il foglio per la stampa unione, quindi sarebbe necessario rimettere le celle vuote al posto degli "0".
Suppongo sia fattibile: hai qualche suggerimento?
Grazie

Alexsandra
14-08-2015, 16.12.35
andare a rimettere le mani allo zero crea dei problemi, in quanto andremo a sostituire anche gli zeri delle altre celle.
possiamo usare un altro carattere al posto dello zero (@ # ?) e poi prima della stampa unione andare a sostituirlo con uno spazio. basta solo una riga di codice

omancino
14-08-2015, 16.59.17
Può essere una soluzione ma, a livello di stampa unione credo che una cella con uno spazio non equivalga a una cella vuota. Vado a verificare, ma penso che lo spazio comporti la stampa del campo mentre la cella vuota viene saltata del tutto e viene stampato il campo successivo.
E' possibile una sostituzione tipo "?" <->""? Equivarrebbe a creare una cella vuota?
Grazie

Alexsandra
14-08-2015, 18.55.54
prova questo

omancino
17-08-2015, 12.27.43
Va benissimo. Mi sono permesso alcuni adeguamenti per fare in modo che la copia funzioni anche se nel foglio riepilogo ci sono già un certo numero di intestazioni colonne predefinite e la macro riguardi solo la riorganizzazione dei dati del foglio origine.
E' macchinoso? Che ne pensi?
:Oh-yea:

Alexsandra
17-08-2015, 12.41.45
va bene :)