Condividi:        

Macro per Excel

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

Macro per Excel

Postdi Lucio Peruggini » 21/04/14 19:39

Macro per Excel

Buona serata
Per favore chiedo ancora una cortesia.

Nel foglio allegato colonna “C” vorrei colorare in giallo tre celle consecutive che hanno la caratteristica che spiego:

In colonna “B” ho una medesima ruota ripetuta dieci volte (range 10 per ogni ruota); se questa ruota è presente nella colonna “C” nelle ultime tre posizioni (range C10:C12), queste tre celle consecutive vanno colorate.

Nel range successivo C:13:C22, vi è un analogo risultato nel quale la ruota della colonna “B” è presente nel ultime tre celle; range C20:C22.

Quindi se la ruota della colonna “B” non è presente in queste ultime tre celle della colonna “C”, si passa oltre.

In questo foglio ci sono mille righe ma il contenuto supera le 400.000.

https://dl.dropboxusercontent.com/u/182 ... celle.xlsx

Molte grazie
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Sponsor
 

Re: Macro per Excel

Postdi Anthony47 » 23/04/14 00:48

Potrebbe andare bene questa:
Codice: Seleziona tutto
Sub Macrolor()
Dim myArr(), I As Long, myB, myY As Long, LastB As Long
'
myY = RGB(255, 255, 0)
'
LastB = Cells(Rows.Count, 2).End(xlUp).Row
Range("C3").Resize(LastB, 1).Interior.ColorIndex = xlColorIndexNone
'
ReDim myArr(1 To 3, 1 To LastB)
myArr = Range("A1:C1").Resize(LastB, 3).Value
For I = 10 To LastB Step 10
    myB = myArr(I, 2)
    If myArr(I, 3) = myB Or myArr(I + 1, 3) = myB Or myArr(I + 2, 3) = myB Then
        Cells(I, 3).Resize(3, 1).Interior.Color = myY
    End If
Next I
End Sub

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per Excel

Postdi Lucio Peruggini » 23/04/14 06:11

Anthony sei un GRANDE e altrettanto generoso!!!

Va benissimo! Dieci secondi per oltre 400.000 righe.

Grazie molte e buona giornata
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: Macro per Excel

Postdi Lucio Peruggini » 23/04/14 07:37

https://dl.dropboxusercontent.com/u/182 ... due.SE.PNG

Ciao Anthony, ho provato ma senza riuscire.

Vorrei colorare solamente le ultime due celle del range ove sia presente la ruota della colonna "B"; come da immagine allegata.

Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: Macro per Excel

Postdi Anthony47 » 23/04/14 15:01

Hummmm... L' immagine allegata ha tre celle evidenziate (righe 30-31-32) e non capisco perche' invece non sono evidenziate anche le righe 20-21-22.
Non ho quindi afferrato la domanda....
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per Excel

Postdi Lucio Peruggini » 23/04/14 17:38

Hai ragione, stamane dormivo in piedi!
Andavano colorate anche le altre due. In pratica le due celle colorate devono contenere la ruota della colonna "B".
Ciao

https://dl.dropboxusercontent.com/u/182 ... le%202.PNG
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: Macro per Excel

Postdi Anthony47 » 24/04/14 01:05

Allora dovresti modificare il loop della macro in
Codice: Seleziona tutto
For I = 11 To LastB Step 10
    myB = myArr(I, 2)
    If myArr(I, 3) = myB Or myArr(I + 1, 3) = myB Then
        Cells(I, 3).Resize(2, 1).Interior.Color = myY
    End If
Next I

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per Excel

Postdi Lucio Peruggini » 24/04/14 06:57

Molte grazie Anthony, è perfetto!
Ciao e buona giornata.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23


Torna a Applicazioni Office Windows


Topic correlati a "Macro per Excel":


Chi c’è in linea

Visitano il forum: Ricky0185 e 35 ospiti