Precedente :: Successivo |
Autore |
Messaggio |
sarago Mortale pio
Registrato: 01/12/05 12:56 Messaggi: 27
|
Inviato: 20 Feb 2010 13:31 Oggetto: Ordinare dei dati in excel |
|
|
Vorrei ordinare dei dati (numeri positivi e negativi) in maniera crescente o decrescente senza ricorrere al menu ordina. In pratica mi serve che 5 numeri in A1:A5 di un foglio e che derivano da calcoli precedenti dello stesso file, appaiano in ordine crescente man mano che vengono generati.
Ringrazio e saluto tutti. |
|
Top |
|
|
Taurex Moderatore Software e Sistemi Operativi
Registrato: 10/10/04 10:44 Messaggi: 1057 Residenza: Internet
|
Inviato: 20 Feb 2010 18:34 Oggetto: |
|
|
Fammi capire una cosa:
tu digiti un numero in A1, premi invio e passi ad A2.
Dopo aver inserito un nuovo numero digiti invio e passi ad A3 ma vorresti che in automatico ordinasse A1 e A2 in ordine crescente?
che versione di Office utilizzi? |
|
Top |
|
|
sarago Mortale pio
Registrato: 01/12/05 12:56 Messaggi: 27
|
Inviato: 20 Feb 2010 19:10 Oggetto: |
|
|
Nella colonna A di un foglio X arrivano i dati (numeri) di calcoli precedenti di altri fogli che vengono riportati nelle celle A1:A5. Vorrei che i suddetti dati mi apparissero anche nella colonna B del foglio X nelle celle B1:B5 ma in ordine crescente.
Ovvio sarebbe più facile usare il menu ordina ma siccome sono dati che variano spesso vorrei che si ordinassero in automatico tramite qualche formula senza ricorrere alle macro. Bisogna prevedere anche la possibilità che nelle celle A1:A5 compaiano alcuni dati uguali tra loro.
Spero di essere stato più chiaro.
Uso Office 2007.
Ti ringrazio e saluto. |
|
Top |
|
|
Taurex Moderatore Software e Sistemi Operativi
Registrato: 10/10/04 10:44 Messaggi: 1057 Residenza: Internet
|
Inviato: 20 Feb 2010 20:17 Oggetto: |
|
|
sarago ha scritto: | Nella colonna A di un foglio X arrivano i dati | da dove?
in che modo arrivano?
si può vedere il file? |
|
Top |
|
|
sarago Mortale pio
Registrato: 01/12/05 12:56 Messaggi: 27
|
Inviato: 22 Feb 2010 18:52 Oggetto: |
|
|
Sono un principiante di Excel e autodidatta per cui mi diverto a usarlo per alcune cose che mi interessano più che altro a scopo di apprendimento. Nel caso specifico del problema che ti ho posto, trattandosi di 5 dati, il risultato è visibile a occhio senza ricorrere a formule varie. La mia è pura curiosità per migliorare le mie capacità di uso del foglio di calcolo. In particolare per il quesito in oggetto sono riuscito a mettere in pratica una soluzione parziale (in quanto non va bene per valori uguali) e forse un po' astrusa.
Se mi dici come posso fare per allegare il file te lo invio così puoi darmi dei consigli su come è sviluppato.
Ti ringrazio per la pazienza. Ciao. |
|
Top |
|
|
Taurex Moderatore Software e Sistemi Operativi
Registrato: 10/10/04 10:44 Messaggi: 1057 Residenza: Internet
|
Inviato: 22 Feb 2010 19:54 Oggetto: |
|
|
sarago ha scritto: | Sono un principiante di Excel e autodidatta per cui mi diverto a usarlo per alcune cose che mi interessano più che altro a scopo di apprendimento. | Questo è quello che serve
vai su http://wikisend.com/ poi premi sfoglia (per cercare il tuo file) e poi upload.
alla fine ti restituisce un link che devi copiare ed incollare in forum |
|
Top |
|
|
sarago Mortale pio
Registrato: 01/12/05 12:56 Messaggi: 27
|
|
Top |
|
|
Taurex Moderatore Software e Sistemi Operativi
Registrato: 10/10/04 10:44 Messaggi: 1057 Residenza: Internet
|
Inviato: 23 Feb 2010 07:58 Oggetto: |
|
|
Prova a fare così:
dopo aver aperto il tuo file premi ALT+F11
nella parte sinistra di ciò che ti si apre troverai VBAProject (Quintino...)
con un sotto gruppo [Microsoft Excel Oggetti] all'interno del quale trovi una riga per ogni foglio che hai nel file.
Clicca 2 volte su Foglio3 (Dati 2) e nella parte destra incolla questo codice:
Codice: | Private Sub Worksheet_Activate()
'seleziona intervallo da A1 ad A5 e lo copia
Range("A1:A5").Select
Selection.Copy
'seleziona la cella B1 e copia i valori del range selezionato prima
Range("B1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'cancella la cache di excel
Application.CutCopyMode = False
'seleziona la cella B1 e ordina da B1 a B5 in modo crescente
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
|
Salva il file.
Ora, tutte le volte che apri il foglio Dati 2 dovrebbe eseguire il codice di cui sopra.
PS: ho messo anche dei campi note (quelli preceduti dall'apice) nel codice così capisci cosa fa |
|
Top |
|
|
sarago Mortale pio
Registrato: 01/12/05 12:56 Messaggi: 27
|
Inviato: 24 Feb 2010 11:43 Oggetto: |
|
|
Quindi bisogna ricorrere necessariamente alle macro. Il problema è risolto.
Per il resto il modo da me usato per ottenere i risultati delle varie parti del progetto è accettabile? Un consiglio?
Comunque grazie di tutto. Ciao. |
|
Top |
|
|
Taurex Moderatore Software e Sistemi Operativi
Registrato: 10/10/04 10:44 Messaggi: 1057 Residenza: Internet
|
Inviato: 24 Feb 2010 20:57 Oggetto: |
|
|
si, però è una macro automatica......
diciamo che non ho guardato molto il file, mi pare un pò "contorto"..... |
|
Top |
|
|
sarago Mortale pio
Registrato: 01/12/05 12:56 Messaggi: 27
|
Inviato: 25 Feb 2010 11:43 Oggetto: |
|
|
Cercherò di migliorare
Grazie ancora. |
|
Top |
|
|
Taurex Moderatore Software e Sistemi Operativi
Registrato: 10/10/04 10:44 Messaggi: 1057 Residenza: Internet
|
Inviato: 25 Feb 2010 15:11 Oggetto: |
|
|
se puoi vuoi riproporcelo..... |
|
Top |
|
|
sarago Mortale pio
Registrato: 01/12/05 12:56 Messaggi: 27
|
Inviato: 28 Feb 2010 10:48 Oggetto: |
|
|
Vista la disponibilità ti chiedo un altro favore.
Se volessi fare in modo che nella colonna accanto a quella dei dati numerici apparissero i nomi dei giocatori che, di volta in volta, dovrebbero assumere una posizione diversa a seconda del posto che occupano i relativi dati, come si dovrebbe fare?
Ti ringrazio.
Ho postato il file qui.
Quintino 2009-2010 prova.xlsm |
|
Top |
|
|
sarago Mortale pio
Registrato: 01/12/05 12:56 Messaggi: 27
|
Inviato: 08 Mar 2010 18:56 Oggetto: |
|
|
Ho aspettato invano una risposta al nuovo quesito che avevo posto. Forse ho approfittato troppo della tua pazienza? Se è così scusami.
Un saluto affettuoso. |
|
Top |
|
|
Taurex Moderatore Software e Sistemi Operativi
Registrato: 10/10/04 10:44 Messaggi: 1057 Residenza: Internet
|
Inviato: 09 Mar 2010 07:45 Oggetto: |
|
|
sarago ha scritto: | Ho aspettato invano una risposta al nuovo quesito che avevo posto. Forse ho approfittato troppo della tua pazienza? Se è così scusami.
Un saluto affettuoso. |
Scusa ma mi ero perso il messaggio.
Il link che hai postato non è più valido.
Puoi ripostarlo per favore? |
|
Top |
|
|
sarago Mortale pio
Registrato: 01/12/05 12:56 Messaggi: 27
|
|
Top |
|
|
Taurex Moderatore Software e Sistemi Operativi
Registrato: 10/10/04 10:44 Messaggi: 1057 Residenza: Internet
|
Inviato: 10 Mar 2010 08:46 Oggetto: |
|
|
Prova a fare così:
il codice che ti avevo fatto mettere qualche topic più indietro fallo diventare così:
Codice: |
Private Sub Worksheet_Activate()
'seleziona intervallo da A1 ad A5 e lo copia
Range("A1:A5").Select
Selection.Copy
'seleziona la cella B1 e copia i valori del range selezionato prima
Range("B1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'cancella la cache di excel
Application.CutCopyMode = False
'seleziona la cella B1 e ordina da B1 a B5 in modo crescente
Selection.Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A11").Select
ActiveCell.FormulaR1C1 = "='Dati 1'!R[27]C[5]"
Selection.AutoFill Destination:=Range("A11:A12"), Type:=xlFillDefault
Range("A11:A12").Select
Selection.AutoFill Destination:=Range("A11:E12"), Type:=xlFillDefault
Range("A11:E12").Select
Selection.Copy
Range("A14").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Range("A14:A18").Select
Application.CutCopyMode = False
Selection.Cut Destination:=Range("C14:C18")
Range("B14:C18").Select
Selection.Sort Key1:=Range("B14"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("C1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],R[13]C[-1]:R[17]C,2)"
Range("C2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],R[12]C[-1]:R[16]C,2)"
Range("C3").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],R[11]C[-1]:R[15]C,2)"
Range("C4").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],R[10]C[-1]:R[14]C,2)"
Range("C5").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],R[9]C[-1]:R[13]C,2)"
Range("C1:C5").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("10:19").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
End Sub
|
|
|
Top |
|
|
sarago Mortale pio
Registrato: 01/12/05 12:56 Messaggi: 27
|
Inviato: 12 Mar 2010 12:44 Oggetto: |
|
|
Problema risolto. Grazie
Sto cercando di capire la funzione di alcune parti dello script
ActiveCell.FormulaR1C1 = "='Dati 1'!R[27]C[5]"
R[27]C[5] a cosa si riferiscono nel foglio "Dati 1"?
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],R[13]C[-1]:R[17]C,2)"
questa riga cosa fa?
Un caro saluto. |
|
Top |
|
|
Taurex Moderatore Software e Sistemi Operativi
Registrato: 10/10/04 10:44 Messaggi: 1057 Residenza: Internet
|
Inviato: 12 Mar 2010 17:33 Oggetto: |
|
|
sarago ha scritto: |
ActiveCell.FormulaR1C1 = "='Dati 1'!R[27]C[5]"
R[27]C[5] a cosa si riferiscono nel foglio "Dati 1"? | Riga 27 colonna 5
sarago ha scritto: |
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],R[13]C[-1]:R[17]C,2)"
questa riga cosa fa?
| è il cerca.vert
sarago ha scritto: |
Un caro saluto. | a te |
|
Top |
|
|
romyr Mortale devoto
Registrato: 09/10/10 20:14 Messaggi: 5
|
Inviato: 09 Ott 2010 20:30 Oggetto: |
|
|
Taurex ha scritto: | si, però è una macro automatica......
diciamo che non ho guardato molto il file, mi pare un pò "contorto"..... |
Solo ora leggo questo post.
Non so se sono ancora in tempo, visto che sono passati mesi, ma ho trovato un sistema per ordinare automaticamente una matrice di numeri, senza far ricorso al menu "ordina" nè alle macro.
Se interessa ancora rispondimi |
|
Top |
|
|
|