Condividi:        

filtrare squadre da un elenco

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

filtrare squadre da un elenco

Postdi raimea » 01/10/11 14:47

ciao a tutti
avrei la necessita di creare un elenco dei nomi delle squadre che scrivo in
un foglio (5-squadre), e riportalre in fgl 6 (6squdre-alfabeto),
in modo di non avere doppioni,
cioe' se la squadre e' gia stata scritta non la deve riportare.
ho provato con una macro che fa gia' questo, su un altro file e funziona correttamente,
ma qui non riesco a capire che succede.

questa la macro.
Codice: Seleziona tutto
Public Nazione As String, Riga As Integer
Sub CompilaElenco()

UserForm2.Show vbModeless
DoEvents
Inizio = Timer

Application.ScreenUpdating = False
Application.Calculation = xlManual

    Worksheets("6-Squadre.Alfabeto").Unprotect
    UR5 = Worksheets("5-Squadre").Cells(Rows.Count, 6).End(xlUp).Row
    UR6 = Worksheets("6-Squadre.Alfabeto").Cells(Rows.Count, 3).End(xlUp).Row
    For R5 = 9 To UR5
        For C5 = 6 To 8 Step 2
            SQ5 = UCase(Worksheets("5-Squadre").Cells(R5, C5).Value)
            For R6 = 8 To UR6
                SQ6 = UCase(Worksheets("6-Squadre.Alfabeto").Cells(R6, 3).Value)
                If SQ5 = SQ6 Then GoTo salta
            Next R6
            Uri = Worksheets("6-Squadre.Alfabeto").Cells(Rows.Count, 3).End(xlUp).Row + 1
            Worksheets("6-Squadre.Alfabeto").Cells(Uri, 3).Value = SQ5
salta:
        Next C5
    Next R5
   
    Worksheets("6-Squadre.Alfabeto").Protect
   
    Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

Unload UserForm2
 Fine = Timer
MsgBox ("Tempo impiegato " & Int((Fine - Inizio) / 60) & " min " & (Fine - Inizio) Mod 60 & " Sec")
   
   Call ordina3
   
End Sub


qui il file che fa i capricci... :D
deve compilare il fgl6 partendo da cella C8 in giu'.

http://www.megaupload.com/?d=S8W94L08
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: filtrare squadre da un elenco

Postdi Flash30005 » 01/10/11 16:49

La macro (che mi è molto familiare) funziona bene ma
devi cancellare l'elenco nel foglio 6
quindi aggiungere questa riga tra le due esistenti (dove indicato)

Codice: Seleziona tutto
   
UR6 = Worksheets("6-Squadre.Alfabeto").Cells(Rows.Count, 3).End(xlUp).Row   '<<<< esistente
Worksheets("6-Squadre.Alfabeto").Range("C8:C" & UR6).ClearContents         '<<<<< aggiungere
For R5 = 9 To UR5                 '<<<< esistente
...



Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: filtrare squadre da un elenco

Postdi raimea » 01/10/11 18:02

:-?
ho cancellato i nomi in fgl 6 col C,
ho messa la nuova riga , ma mi scrive ancora 2 volte
il nome della stessa squadra, in foglio 6 col C

si' in un altro file la macro funziona correttamente , ma qui come dicevo prima "fa i capricci".

:) ti credo che -ti e' familiare-,
la macro sopro l'ha fatta flash..
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: filtrare squadre da un elenco

Postdi Flash30005 » 01/10/11 18:49

Ti invio il file elaborato con quella macro e non si riscontrano doppioni

Download

Ciao


P.s. se trovi doppioni controlla che nel nome squadre non ce ne sia una normale e l'altra con uno spazio (all'inizio o alla fine)
in quel caso devi usare la funzione "Trim" nella definizione squadre (SQ5, SQ6)


EDIT: confermo c'è la squadra con lo spazio iniziale e la stessa squadra senza spazi "ISTRES FC"

Quindi o correggi le squadre e fai attenzione a non digitare spazi
oppure sostituisci la macro con questa
Codice: Seleziona tutto
Sub CompilaElenco()

UserForm2.Show vbModeless
DoEvents
Inizio = Timer

Application.ScreenUpdating = False
Application.Calculation = xlManual

    Worksheets("6-Squadre.Alfabeto").Unprotect
    UR5 = Worksheets("5-Squadre").Cells(Rows.Count, 6).End(xlUp).Row
    UR6 = Worksheets("6-Squadre.Alfabeto").Cells(Rows.Count, 3).End(xlUp).Row
    Worksheets("6-Squadre.Alfabeto").Range("C8:C" & UR6).ClearContents
    For R5 = 9 To UR5
        For C5 = 6 To 8 Step 2
            SQ5 = UCase(Worksheets("5-Squadre").Cells(R5, C5).Value)
            SQ5 = Trim(SQ5)
            For R6 = 8 To UR6
                SQ6 = UCase(Worksheets("6-Squadre.Alfabeto").Cells(R6, 3).Text)
                SQ6 = Trim(SQ6)
                If SQ5 = SQ6 Then GoTo salta
            Next R6
            Uri = Worksheets("6-Squadre.Alfabeto").Cells(Rows.Count, 3).End(xlUp).Row + 1
            Worksheets("6-Squadre.Alfabeto").Cells(Uri, 3).Value = SQ5
salta:
        Next C5
    Next R5
   
    Worksheets("6-Squadre.Alfabeto").Protect
   
    Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

Unload UserForm2
 Fine = Timer
MsgBox ("Tempo impiegato " & Int((Fine - Inizio) / 60) & " min " & (Fine - Inizio) Mod 60 & " Sec")
   
   Call ordina3
   
End Sub
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

filtrare squadre da un elenco

Postdi raimea » 01/10/11 20:53

:oops:
ho tolto eventuali spazi inizio fine di ogni squadra,
ho inserito la "nuova" macro con funz trim,
ma mi mette sempre 2 volte la stessa squadra in fgl6.....

non riesco a scaricare il file...
ma come funziona sto -uploading- ???? :?:
(ci si deve xforza registrare ?)

premo dunload gratuito lento, attendo 45s.....
arriva a zero..... poi rimane li' ... non succede piu nulla....
ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: filtrare squadre da un elenco

Postdi Flash30005 » 01/10/11 21:00

Il file non serve
sostituisci la macro con l'ultima inviata
e deve funzionare
altrimenti invia di nuovo il file con "problemi" e dopo aver processato le squadre con la nuova macro
per farmi capire dove è il problema

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: filtrare squadre da un elenco

Postdi raimea » 01/10/11 21:28

purtroppo ti devo ri.inviare il file.
questo contiene la -nuova - macro
ma oltre a esserci ancora 2 volte la stessa squadra in fgl 6
ora
inizia a scriverle in cella C5 anzicche da C8

http://www.megaupload.com/?d=I8GMA34C
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: filtrare squadre da un elenco

Postdi Flash30005 » 02/10/11 00:56

Sostituisci l'intera macro
Codice: Seleziona tutto
Sub CompilaElenco()

UserForm2.Show vbModeless
DoEvents
Inizio = Timer

Application.ScreenUpdating = False
Application.Calculation = xlManual

    Worksheets("6-Squadre.Alfabeto").Unprotect
    UR5 = Worksheets("5-Squadre").Cells(Rows.Count, 6).End(xlUp).Row
    UR6 = Worksheets("6-Squadre.Alfabeto").Cells(Rows.Count, 3).End(xlUp).Row
    If UR6 < 8 Then UR6 = 8
    Worksheets("6-Squadre.Alfabeto").Range("C8:C" & UR6).ClearContents '<<<< perché hai messo C10 ?
    For R5 = 9 To UR5
    If Worksheets("5-Squadre").Cells(R5, 6).Text = "" Then
    UR5 = R5 - 1
    GoTo Salta0
    End If
    Next R5
Salta0:
    For R5 = 9 To UR5
        For C5 = 6 To 8 Step 2
            SQ5 = UCase(Worksheets("5-Squadre").Cells(R5, C5).Text)
            SQ5 = Trim(SQ5)
            UR6 = Worksheets("6-Squadre.Alfabeto").Cells(Rows.Count, 3).End(xlUp).Row
            For R6 = 8 To UR6
                SQ6 = UCase(Worksheets("6-Squadre.Alfabeto").Cells(R6, 3).Text)
                SQ6 = Trim(SQ6)
                If SQ5 = SQ6 Then GoTo salta
            Next R6
            Uri = Worksheets("6-Squadre.Alfabeto").Cells(Rows.Count, 3).End(xlUp).Row + 1
            Worksheets("6-Squadre.Alfabeto").Cells(Uri, 3).Value = SQ5
salta:
        Next C5
    Next R5
   
    Worksheets("6-Squadre.Alfabeto").Protect
   
    Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

Unload UserForm2
Fine = Timer
MsgBox ("Tempo impiegato " & Int((Fine - Inizio) / 60) & " min " & (Fine - Inizio) Mod 60 & " Sec")
   
   Call ordina3
   
End Sub


E cerca di non modificare le macro e rispedirle modificate perché perdiamo il doppio del tempo

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

filtrare squadre da un elenco

Postdi raimea » 02/10/11 06:19

;)
tutto ok ora funge tutto

:-? :-? :-?
Worksheets("6-Squadre.Alfabeto").Range("C8:C" & UR6).ClearContents '<<<< perché hai messo C10 ?


sinceramente non so' per quale motivo avevo provato a modificarla cosi'...
a 1.000 ragioni a dirmi di non inviarti macro modificate.... :oops:
si perde tempo x niente.

grazie per avermi risolto il problema.
ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: filtrare squadre da un elenco

Postdi raimea » 08/08/12 17:23

ciao a tutti
per una questione "estetica" , vorrei ordinare un foglio tramite macro,
mentre ora si compila tramite formule.

si tratta del foglio --> 7-squadr.compet
vorrei ordinare il range che va da E2:AZ300 in modo che il nome delle squadre
venga scritto , per tutte le nazioni, da riga 2 in giu'.

si devono confrontare le nazioni scritte in col A e riportare la relativa squadra scritta in Col B
in modo di compilare appunto il range che ora si compila con formule.
quindi, vorrei che le squadre si scrivano sotto ogni nazione partendo da riga 2 per tutte le nazioni.

vi allego il file.

http://dl.dropbox.com/u/96374724/gol.rar
ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: filtrare squadre da un elenco

Postdi Flash30005 » 08/08/12 17:52

Con questa macro sostituisci le formule

Codice: Seleziona tutto
Sub Compila7Sq()
Worksheets("7-squadr.compet").Select
Application.ScreenUpdating = False
Application.Calculation = xlManual
Range("E2:IV1000").ClearContents
UR = Range("A" & Rows.Count).End(xlUp).Row
UC = Cells(1, Columns.Count).End(xlToLeft).Column
For CC = 5 To UC
Naz = UCase(Cells(1, CC).Value)
    For RR = 2 To UR
    If UCase(Range("A" & RR).Value) = Naz Then
    Cells(RR, CC).Value = UCase(Range("B" & RR).Value)
    End If
    Next RR
Next CC
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub


Ti consiglio di eliminare il foglio
aggiungere un foglio nuovo e formattarlo (copiando solo la formattazione)
Excel "memorizza" (non so perché) dati, oggetti etc, precedenti e diviene sempre più "pesante"
così facendo elimini questi fantasmi e il file si riduce di dimensione
(questa operazione andrebbe fatta su tutti i fogli dove non hai più formule ma macro)

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: filtrare squadre da un elenco

Postdi raimea » 08/08/12 18:32

azz.. :oops:
ho eliminato , ricreato un nuovo foglio stesso nome,
ma la macro mi riporta si', i nomi delle squadre, ma ancora a ---> "scalare",
cioe' non partendo dalla riga 2 in giu' per ogni nazione,
quindi "esteticamente " e' come prima, quando c'erano le formule,
mentre vorrei che ogni nazione abbia le relative squadre partendo dalla riga 2 in giu.
ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: filtrare squadre da un elenco

Postdi Flash30005 » 09/08/12 00:10

Ops
Comunque non è molto diversa...
La modifica, con un minimo impegno, l'avresti potuta realizzare da solo 8)

Codice: Seleziona tutto
Sub Compila7Sq()
Worksheets("7-squadr.compet").Select
Application.ScreenUpdating = False
Application.Calculation = xlManual
Range("E2:IV1000").ClearContents
UR = Range("A" & Rows.Count).End(xlUp).Row
UC = Cells(1, Columns.Count).End(xlToLeft).Column
For CC = 5 To UC
Naz = UCase(Cells(1, CC).Value)
    For RR = 2 To UR
    If UCase(Range("A" & RR).Value) = Naz Then
    'URN = Cells(Rows.Count, CC).End(xlUp).Row + 1   '<<<<<<<<<<< Calcola le righe della colonna Nazione in esame
    'Cells(URN, CC).Value = UCase(Range("B" & RR).Value)  '<<<<< cambiata la destinazione del dato (su prima riga libera colonna in esame)
    Cells(Rows.Count, CC).End(xlUp).Offset(1, 0).Value = UCase(Range("B" & RR).Value)  '<<< questa riga sostituisce le due righe precedenti (commentate)
End If
    Next RR
Next CC
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub


Ciao

P.s. non ti adagiare troppo sugli allori...
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: filtrare squadre da un elenco

Postdi raimea » 09/08/12 05:41

tutto ok ;) (come sempre..)

P.s. non ti adagiare troppo sugli allori...

ai ragione , si potrebbe avere questa senzazione,
io ci ho provato a "leggere " il cod precedente, e in realta lo avevo anche letto correttamente.
ma e' il come risolvere che non sono in grado, a questa non ci sarei mai arrivato.
Codice: Seleziona tutto
Cells(Rows.Count, CC).End(xlUp).Offset(1, 0).Value = UCase(Range("B" & RR).Value)  '<<< questa riga sostituisce le due righe precedenti (commentate)

da voi ho imparato moltissimo, e ora lavoro bene con il taglia /cuci.... :D
con questo risolvo da solo circa il 50% dei casi, ma quando si tratta di scrivere un codice nuovo
aia.... :cry: , per me son dolori....
se non ci fosse PC-FACILE..... non avrei nessuna macro....
quindi grazie 1000 flash e al resto degli utenti del forum.

ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago


Torna a Applicazioni Office Windows


Topic correlati a "filtrare squadre da un elenco":


Chi c’è in linea

Visitano il forum: Ricky0185 e 49 ospiti