Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[EXCEL] Ordinare dati e relativi valori su diversi fogli

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] Ordinare dati e relativi valori su diversi fogli

Postdi anug_un_rama » 02/01/09 13:25

Ciao!
iniziamo col dire BUON 2009 a tutta questa community ;)
ho un problema:
devo gestire una sorta di database con excel, in pratica ho un foglio dove ad esempio ci sono i vari nomi:
foglio1
bianchi
rossi
verdi

ke viene usato come origine per altri fogli su cui vengono fatti o inserimenti di valori o operazioni matematiche ad es
foglio2
col A col B
bianchi 23
rossi 45
verdi 33

ora il problema nasce quando devo fare un altro inserimento di nomi nell'origine e voglio ke i nomi siano ordinati alfabeticamente; cioè se cambio l'ordine ho risultati sballati nel foglio 2! purtroppo non posso usare l'ordinamento automatico per ogni foglio per la presenza di celle unite, e per il simpatico fatto ke la colonna dei nomi viene preceduta da una in cui ci sono dei numeri nn progressivi ( non kiedete a me ma a quella mente eccelsa ke ha creato sto mostro)che ovviamente nn posso spostare e se faccio l'ordinamento mi prende quello dei numeri.
poichè la mole di dati è grande, avrei bisogno di averli ordinati alfabeticamente per poter fare gli inserimenti nei fogli successivi senza dover stare a cercare volta per volta i vari nomi.
avevo pensato di creare una sorta di foglio d'appoggio in cui tramite "indice" e "confronta" riesco ad ordinare e recuperare i giusti "abbinamenti", però non so come gestire l'aggiornamento, ossia ad es se scrivo nel foglio ordinato:
A1: rossi B1:33+24
e poi mi arriva un bianchi e quindi rossi va in A2, perdo cmq l'abbinamento.
è un rompicapo e spero di essere stato chiaro nell'esposizione del problema
grazie a tutti quelli ke si vorranno cimentare
;)
anug_un_rama
Utente Junior
 
Post: 46
Iscritto il: 02/01/09 12:47

Sponsor
 

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi Anthony47 » 02/01/09 18:37

Ciao anug_un_rama e buon anno anche a te.
Secondo me non devi ordinare nel primo foglio, ma solo nei successivi (nomi piu' dati), facendo sempre attenzione a selezionare l' intera tabella prima dell' ordinamento (colonna nomi, colonne dati).
Potresti valutare se l' ordinamento e' conveniente farlo all' attivazione dei singoli fogli con una macro di tipo Worksheet_Activate.
I nuovi nomi vanno aggiunti in coda ai preesistenti, salvo una loro diversa collocazione dopo l' ordinamento sui fogli con i dati.
I dettagli purtroppo sono condizionati dalle modalita' d' uso del file (un utente/Tanti utenti; un foglio dati/piu' fogli dati; frequenza di aggiunta nomi; tipi di ordinamento)

Vedi se questi spunti ti portano da qualche parte, e fatti sentire.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi anug_un_rama » 02/01/09 18:52

Anthony47 ha scritto:Ciao anug_un_rama e buon anno anche a te.
Secondo me non devi ordinare nel primo foglio, ma solo nei successivi (nomi piu' dati), facendo sempre attenzione a selezionare l' intera tabella prima dell' ordinamento (colonna nomi, colonne dati).
Potresti valutare se l' ordinamento e' conveniente farlo all' attivazione dei singoli fogli con una macro di tipo Worksheet_Activate.
I nuovi nomi vanno aggiunti in coda ai preesistenti, salvo una loro diversa collocazione dopo l' ordinamento sui fogli con i dati.
I dettagli purtroppo sono condizionati dalle modalita' d' uso del file (un utente/Tanti utenti; un foglio dati/piu' fogli dati; frequenza di aggiunta nomi; tipi di ordinamento)

Vedi se questi spunti ti portano da qualche parte, e fatti sentire.

ciao e grazie per la risposta!
purtroppo non sono molto pratico di macro... come andrebbe fatto l'ordinamento via macro?
mentre sto scrivendo questo post, sto pensando a qualcosa basato sullo scarto ..se questo mi da anche valori negativi forse ne vengo a capo...
a presto
anug_un_rama
Utente Junior
 
Post: 46
Iscritto il: 02/01/09 12:47

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi anug_un_rama » 02/01/09 22:39

scusa il doppio post ma nn so come si editano i post precedenti su questa board XD
cmq sono quasi uscito dal tunnel
allora ho fatto una macro ke me li ordina
questo è il codice:
Codice: Seleziona tutto
 Sub ordina(ByVal Target As Range)

With Range("A5:w200")   'Area che comprende tutti i dati
.Sort Key1:=Range("c5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
end sub

perchè in pratica così ordino in base alla posizione dove ho i nomi (c5) e l'ho associata ad un bottone
il problema però è ke me mette le righe vuote all'inizio dell'elenco!!
da cosa può dipendere?
forse dal fatto ke i nomi ke prende sono quelli ke li passo dal foglio di origine?
come si può risolvere? questa è la mia prima macro^^
grazie
anug_un_rama
Utente Junior
 
Post: 46
Iscritto il: 02/01/09 12:47

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi Anthony47 » 03/01/09 19:23

Una macro come quella che hai scritto la puoi "registrare": avvii il registratore di macro (Menu /Strumenti /Macro /Registra nuova macro), esegui diligentemente le operazioni che ti servono, fermi la registrazione (col pulsante "stop" se e' comparso, o con Menu /Strumenti /Macro /Interrompi registrazione); poi puoi fare modifiche al codice.

Per quello che segnali: probabilmente in col C hai una formula del tipo =SE(Foglio1!A1="";"";Foglio1!A1), che ti lascia le celle non vuote ma compilate con una stringa "nulla", che purtroppo non e' "il nulla".
Questo ti costringe a rivedere le modalita' con cui copi le informazioni dal foglio "master" agli altri fogli. Ad esempio, e' accettabile che sul master i nomi siano in sequenza disordinata (come vengono aggiunti)? E su quanti fogli devi replicarli? Oppure ricorri (come da altra tua domanda) a una selezione dinamica al momento dell' ordinamento...

Ciao, fai sapere come evolve.

PS: usa pure "che" invece di ke, e simili.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi anug_un_rama » 03/01/09 20:22

credo di essere alla fine del tunnel..
e credo di aver intrapreso la strada della selezione dinamica.
nel foglio master i nomi vengono inseriti in fondo alla lista, che ovviamente non è ordinata e in quel foglio ho messo una cella in cui viene riportato il numero degli inserimenti (con conta.valore)
ora l'ordinamento lo faccio su altri fogli... 5
e nel codice vba come indico che il valore da predere è nel foglio xxx e nn in quello corrente?
va bene se dichiaro una variabile xyz di tipo int che va a prendere il valore in quel worksheet e poi nel range faccio
range ("a1:w"&xyz)?
grazie
anug_un_rama
Utente Junior
 
Post: 46
Iscritto il: 02/01/09 12:47

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi anug_un_rama » 03/01/09 22:53

ok ho risolto ma ho perso la coerenza dei dati ....
facciamo un esempio ho 3 fogli
foglio1: ha tutti in nomi nn ordinati
foglio 2: colonna con i nomi, colonne miste con operazioni (riferimenti a valori di altri fogli), inserimenti di valori numerici
foglio3: colonna nomi, colonne con riferimenti ai risultati dei fogli precedenti

il problema è che se ordino i risultati vengono errati perchè è come un domino, pensavo ke una volta ordinati tutti, le cose si sistemassero, invece non torna
io penso che il problema sia appunto la mistura tra i dati

problema irrisolvibile?
anug_un_rama
Utente Junior
 
Post: 46
Iscritto il: 02/01/09 12:47

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi Anthony47 » 03/01/09 23:58

Non mi ' chiaro quello che succede; diciamo che se in A2 di Foglio1 c' e' scritto =Foglio2!A2, se sposto A2 in A5 la formula rimane sempre legata a Foglio2!A2; se sposti invece Foglio2!A2 in Foglio2!A5 la formula cambia (mantenendo il link al dato originale) o no (perdendo la coerenza dei dati) a seconda di come vengono spostati i dati.
Non sapendo molto del lavoro che devi fare non saprei che suggerimento dare, se non l' ovvio: "la base dati deve essere solida".

E' proprio necessario suddividere tra piu' fogli i dati? o non puo' essere sufficiente avere tutti i dati su un unico foglio e poi eventualmente creare delle repliche di dati parziali ad uso consultazione?

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi anug_un_rama » 04/01/09 17:40

Anthony47 ha scritto:Non mi ' chiaro quello che succede; diciamo che se in A2 di Foglio1 c' e' scritto =Foglio2!A2, se sposto A2 in A5 la formula rimane sempre legata a Foglio2!A2; se sposti invece Foglio2!A2 in Foglio2!A5 la formula cambia (mantenendo il link al dato originale) o no (perdendo la coerenza dei dati) a seconda di come vengono spostati i dati.
Non sapendo molto del lavoro che devi fare non saprei che suggerimento dare, se non l' ovvio: "la base dati deve essere solida".

E' proprio necessario suddividere tra piu' fogli i dati? o non puo' essere sufficiente avere tutti i dati su un unico foglio e poi eventualmente creare delle repliche di dati parziali ad uso consultazione?

Ciao.


allora: purtroppo non posso mettere tutto insieme -.-
facciamo un esempio:
una riga tipo del foglio 1:
x y cognome num foglio2!h1 foglio3!f1 etc

foglio 2
x y cognome foglio1!w1 num etc etc
dove num è un numero che viene inserito a mano e cognome e x y vengono dal foglio origine dei dati
quindi in una situazione del genere se sposto le righe le formule riferite ai vari fogli non si spostano di conseguenza.

io ho pensato (dopo la nottata di ieri e la giusta dose di alcol in corpo^^) a fare una cosa del genere:
invece di riferimenti per così dire statici (ad es foglio2!h1) di mettere una sano cerca che prende il cognome, lo va a cercare nel foglio che specifico e prende il valore della colonna desiderata.
dopo tutto questo ordino per intervalli ad es da a1: c20; poi da d1: f20 eliminando dall'ordine le colonne che contengono le formule precedentemente modificate.
Che ne pensi?
e soprattutto è fattibile ordinare per intervalli?
e la sintassi da usare in Range per indicare un intervallo?
grazie ancora
anug_un_rama
Utente Junior
 
Post: 46
Iscritto il: 02/01/09 12:47

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi anug_un_rama » 04/01/09 17:53

uff non riesco a trovare l'edit del post

un'altra curiosità
nei fogli che prendono l'origine dei dati invece di stare scritto originedati! è scritto 'origine dati'! ossia vi sono gli apici..
che differenza c'è tra questi due tipi di scrittura?
grazie ancora
anug_un_rama
Utente Junior
 
Post: 46
Iscritto il: 02/01/09 12:47

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi Anthony47 » 04/01/09 19:24

L' edit del post non esiste, o forse e' limitato ai post degli ultimi 15 minuti.

Si, credo che invece di usare la formula tipo =Foglio2!A2 il Cerca.vert sia la tua salvezza; l' importante e' che non ci siano duplicati nella chiave che userai.

Gli "apici" servono per delimitare le stringhe; ad esempio e' buona =Foglio2!A1 ma invece servira' ="Foglio Anagrafe"!A2 per la presenza dello spazio nel nome.

Per quanto riguarda l' ordinamento e' necessario ordinare sempre tutte le colonne della tabella; se A1:C20 e D1:F20 fanno parte della stessa tabella vanno ordinate con un unico comando che riguardera' A1:F20.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi anug_un_rama » 04/01/09 21:33

si ma il problema resta se ordino tutte le righe

es semplificando di mooooolto
a1= mario b1= cerca(a1 in foglio2)
se ordino tutto, mi viene spostata tutta la riga giusto?
quindi verrebbe ad es
a3= mario b3= cerca (a1 in foglio 2)

e cosi ho sempre il problema degli errori perchè la formula corretta dovrebbe essere
b3=cerca (a3 in foglio 2) in quanto mario ora è in posizione a3

se invece lasciassi inalterata la colonna dall'ordinamento, avrei i giusti valori in quanto cercherebbe sempre i valori corrispondenti
è come se dovessi ordinare la stessa tabella divisa in sottotabelle delimitate dalle colonne delle formule.. domani ci provo e ti farò sapere...
e ovviamente resto in aperto ad altre soluzioni^^
ciao
anug_un_rama
Utente Junior
 
Post: 46
Iscritto il: 02/01/09 12:47

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi anug_un_rama » 05/01/09 13:07

allora per ordinare io uso questa procedura
Codice: Seleziona tutto
With Range("A1:c3")
.Sort Key1:=Range("a1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With


se voglio selezionare il range da A1:C3 e poi da E1:f3, escludendo quindi D, se faccio

Codice: Seleziona tutto
With Range("A1:c3", "e1:f3")
.Sort Key1:=Range("a1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With

mi ordina anche la colonna D

mentre se faccio:
Codice: Seleziona tutto
With Range("A1:c3")
.Sort Key1:=Range("a1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
With Range("e1:f3")
.Sort Key1:=Range("e1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With

la colonna D nn la tocca, unico problema è che come argomento del sort devo sempre metterci un valore che appartiene al range, ossia se nel secondo step ci metto sort.A1 invece che sort.e1 la funzione di mice errore!

c'è modo di raggirare questo fatto?
grazie
anug_un_rama
Utente Junior
 
Post: 46
Iscritto il: 02/01/09 12:47

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi Anthony47 » 06/01/09 19:45

Per far riferimento a range discontinui dovresti usare questa sintassi
Codice: Seleziona tutto
With Range("A1:c3, e1:f3")
Pero' il comando Ordina NON lavora su selezioni multiple, quindi quello che chiedi e' impossibile.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Ordinare dati e relativi valori su diversi fogli

Postdi anug_un_rama » 06/01/09 21:10

alla fine ce l'ho fatta anche grazie ad alcuni preziosi consigli (quelli di anthony in primis)
ricapitolando se quindi volessimo ordinare un intervallo di celle ad es da A:F escludendo delle colonne esC ed E ecco il codice
Codice: Seleziona tutto
Sub prova()

    Range("C2:C4").Select  '     ---pezzo da ripetere per ogni colonna che nn si vuole ordinare
    Selection.Cut              '      l
    Sheets("temp1").Select '    l
    Range("A1").Select     '      l
    ActiveSheet.Paste      '       ------fine pezzo da ripetere
    Sheets("Foglio3").Select
    Range("E2:E4").Select
    Selection.Cut
    Sheets("temp1").Select
    Range("B1").Select
    ActiveSheet.Paste
    Sheets("Foglio3").Select
    Range("A2:F4").Select
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Sheets("temp1").Select
    Range("A1:A3").Select
    Selection.Cut
    Sheets("Foglio3").Select
    Range("C2").Select
    ActiveSheet.Paste
    Sheets("temp1").Select
    Range("B1:B3").Select
    Selection.Cut
    Sheets("Foglio3").Select
    Range("E2").Select
    ActiveSheet.Paste
End Sub


il tutto usando un altro foglio di appoggio
l'unico problema è che si deve ripetere lo stesso pezzo per ogni colonna che non si deve ordinare
ora provo, invece che a dare un range statico, es b1:b3 oppure che a selezionare tutta la colonna, ad usare una variabile che mi tiene conto del numero di righe effettivamente usate

certo ci sarà una soluzione più elegante dal punto di vista della programmazione, e sono veramente curioso per proposte alternative
anug_un_rama
Utente Junior
 
Post: 46
Iscritto il: 02/01/09 12:47


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Ordinare dati e relativi valori su diversi fogli":


Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti