Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[excel 07] mescola righe & back

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 07] mescola righe & back

Postdi federico_90 » 28/01/12 07:22

ciao ragazzi, ho righe numerate da 1 a n

1 a b c d
2 a b c d
3 a b c d
4 a b c d
5 a b c d

avrei bisogno di una macro per mescolarle in modo random ogni volta che lo desidero e una volta mescolate tornare alla posizione inziale (una sorta di tasto back).

E' possibile o fantascienza?


grazie anticipatamente :D
federico_90
Newbie
 
Post: 6
Iscritto il: 27/05/07 18:27

Sponsor
 

Re: [excel 07] mescola righe & back

Postdi Flash30005 » 28/01/12 11:31

Per Back intendi la posizione originale (quella ordinata con numero riga crescente)?
Se così...
Inserisci in un modulo queste due macro
Codice: Seleziona tutto
Sub Casuale()
Dim Ws1, Ws2 As Worksheet
Set Ws1 = Worksheets("Foglio1")
Set Ws2 = Worksheets("Foglio2")
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
Passo = 0
For RR1 = 1 To UR1
Ricom:
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
Riga = Int(Rnd() * UR1) + 1
If Ws1.Range("A" & Riga).Value = "" Then GoTo Ricom
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
If Passo = 0 Then
Ws1.Rows(Riga & ":" & Riga).Cut Destination:=Ws2.Rows("1:1")
Passo = 1
Else
Ws1.Rows(Riga & ":" & Riga).Cut Destination:=Ws2.Rows(UR2 & ":" & UR2)
End If
Next RR1
    Sheets("Foglio2").Cells.Cut
    Sheets("Foglio1").Cells.Select
    ActiveSheet.Paste
    Range("A1").Select
End Sub
Sub Ordina()
    Cells.Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("A1").Select
End Sub

Nel foglio1 dove hai le righe da rendere casuali inserisci due pulsanti che chiamerai ad esempio "Casuali" e "Ordina"
Assegna ad ogni pulsante la rispettiva macro
Aziona il pulsante che desideri

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel 07] mescola righe & back

Postdi federico_90 » 28/01/12 13:43

Flash30005 ha scritto:Per Back intendi la posizione originale (quella ordinata con numero riga crescente)?
Se così...
Inserisci in un modulo queste due macro
Codice: Seleziona tutto
Sub Casuale()
Dim Ws1, Ws2 As Worksheet
Set Ws1 = Worksheets("Foglio1")
Set Ws2 = Worksheets("Foglio2")
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
Passo = 0
For RR1 = 1 To UR1
Ricom:
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
Riga = Int(Rnd() * UR1) + 1
If Ws1.Range("A" & Riga).Value = "" Then GoTo Ricom
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
If Passo = 0 Then
Ws1.Rows(Riga & ":" & Riga).Cut Destination:=Ws2.Rows("1:1")
Passo = 1
Else
Ws1.Rows(Riga & ":" & Riga).Cut Destination:=Ws2.Rows(UR2 & ":" & UR2)
End If
Next RR1
    Sheets("Foglio2").Cells.Cut
    Sheets("Foglio1").Cells.Select
    ActiveSheet.Paste
    Range("A1").Select
End Sub
Sub Ordina()
    Cells.Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("A1").Select
End Sub

Nel foglio1 dove hai le righe da rendere casuali inserisci due pulsanti che chiamerai ad esempio "Casuali" e "Ordina"
Assegna ad ogni pulsante la rispettiva macro
Aziona il pulsante che desideri

Ciao



la macro va in errore su Set Ws1 = Worksheets("Foglio1")
.. forse perchè non ho precisato che ho più fogli da 1 a 18... sempre con righe da mescolare..probabilmente mi sto perdendo in un bicchiere d'acqua cosa devo modificare ?


grazie anticipatamente :)
federico_90
Newbie
 
Post: 6
Iscritto il: 27/05/07 18:27

Re: [excel 07] mescola righe & back

Postdi Flash30005 » 28/01/12 13:54

Puoi avere anche mille fogli senza problemi
credo che tu non abbia alcun foglio con nome Foglio1
e avrai assegnato ai fogli un nome ad esempio "Pippo"
non devi far altro che sostituire nella macro Foglio1 con Pippo (o nome del foglio con i dati origine)
inoltre crea un foglio appoggio vuoto che chiamerai, come nella macro "Foglio2" (o altro nome e.: "Appoggio" che cambierai anche nella macro)

e stai tranquillo che funzionerà tutto
altrimenti posta amcora

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel 07] mescola righe & back

Postdi Anthony47 » 28/01/12 15:28

Io avrei proposto:
-in una colonna adiacente libera scrivi la formula =SE(A2<>"";CASUALE();"") Copiala verso il basso fino alla fine (anche oltre) del tuo elenco.
-poi registri una macro1 mente diligentemente:
--selezioni tutte le colonne della tua tabella (da quella che contiene la numerazione crescente a quella con la formula aggiunta)
--esegui un ordiamento crescente sul valore della colonna con la formula
--interrompi la registrazione macro
--selezioni A1
-registri quindi una macro2 come sopra, salvo che l' ordinamento e' sulla colonna con numerazione crescente

-crei i due pulsanti (trovi questa forma nella barra degli strumenti Moduli) e assegni a ognuno una macro (ti verra' fatta una domanda specifica nel ciclo di creazione del pulsante di quale macro assegnare).
In questo modo col primo pulsante ordini (e riordini) in modo casuale, e col secondo ripristini la sequanza originale.

Se invece vuoi usare queste macro su piu' fogli, allora:
-su ogni foglio inserisci (nella stessa colonna) la formula "Casuale"
-alla prima macro assegni il tasto breve "S" (Alt-F8, selezioni la prima macro dall' elenco che ti propone, premi Opzioni, scrivi "S" nel box Tasto d scelta rapida, Ok, chiudi con la X
-alla seconda assegni il tasto breve "R"
In questo modo con Alt-maiusc-s (cioe' Alt-S) fai lo "shuffle" delle combinazioni, e con Alt-Maiusc-r (cioe Alt-R) fai il ripristino SUL FOGLIO CORRENTE.

Ciao a tutti
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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[excel 07] mescola righe & back":


Chi c’è in linea

Visitano il forum: raimea e 13 ospiti