Condividi:        

Convertire una macro in una funzione 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

Re: Convertire una macro in una funzione per Excel

Postdi Anthony47 » 14/02/09 03:02

Biancocandido: hai fatto di tutto per non farti aiutare, ma all' ultimo momento hai recuperato!

Allora, sulla base delle informazioni carpite via mp do' la mia traduzione di quanto richiesto (ad uso di tutto il forum) e la mia risposta.
Problema:
-avendo un archivio di circa 50*6000 di numeri da 1 a 90, voglio vedere visivamente la posizione di 6 numeri impostati dall' utente, tramite una colorazione.

-richiesta ulteriore: vorrei vedere ogni numero colorato con un suo colore diverso, calcolato sulla base del valore del numero.

Risposta alla seconda richiesta:
-se hai da identificare 6 numeri nel tabellone, non servono 90 colori, ma ne servono 6.
-e comunque excel fino alla versione 2003 gestisce una palette di 56 diversi colori, a 90 non ci arrivera' mai. Nella versione 2007 ne gestisce "qualche milione"; ma lo schermo quante tonalita' e' capace di rendere e l' occhio quante e' capace di coglierne? Molto meno di 90.
-insomma, a colorare ogni cella con un colore calcolato sulla base del numero che si vuole evidenziare le chances di discriminare i numeri diminuiscono drasticamente. Quindi non si aggiunge nulla al risultato, anzi si toglie validita' al risultato.

Cio' detto, e quindi lavorando su 6 colori, la soluzione potrebbe essere questa:

-si inseriscono i 6 numeri cercati nelle celle C3:H3 (ovviamente alcuni possono anche essere lasciati vuoti)
-si inserisce in C4 la formula =SE($B$4=C3;1;0) che poi si copia fino ad H4 modificando pero' il valore "se vero" da 1 (nella formula data) in 2, 3, 4, 5 e 6.
-si mette in B3 la formula =SOMMA(C4:H4)+2

-si usa poi la seguente macro:
Codice: Seleziona tutto
Sub paint()
[T1] = Timer
For I = 1 To 6
Range("B4").Offset(0, I).Interior.ColorIndex = I + 2
Next I
Range("C6:BE5000").Interior.ColorIndex = xlNone
Application.ScreenUpdating = False
For Each cell In Range("C6:BE5000")
Range("B4").Value = cell.Value
If Range("B3").Value > 2 Then cell.Interior.ColorIndex = Range("B3").Value
Next cell
Application.ScreenUpdating = True
[T2] = Timer
End Sub


Gli indirizzi dati (C3:H3 per i numeri cercati, C6:BE5000 per il tabellone dati, C4:H4, B3, B4, T1, T2 per le celle di servizio) sono coerenti col foglio di biancocandido.

La macro completa il ciclo in circa 30 secondi, su un pc non di ultima generazione.
Per curiosita': sarebbe stato possibile eseguire in vba i calcoli fatti sul foglio (vedi le formule date), ma il tempo di esecuzione peggiora di un fattore di oltre 20; questo vi dovrebbe convincere che quando suggerisco "fate sul foglio excel tutti i calcoli che potete, fate in vba solo quello che rimane" un qualche motivo ci sara' stato.
Come pure: ho aggiunto quasi per curiosita' l' IF Range("B3").Value > 2 Then, che ha dimezzato (da 60 a 30 sec) il ciclo della macro; questo significa che e' moolto piu' veloce eseguire un if che non applicare direttamente il colore a una cella (l' indice calcolato, con la formula in B3 in combinazione con C3:H3, in assenza di corrispondenza con i numeri in ricerca corrisponde al "bianco")

Per chi ha excel 2007, dovrebbe essere piu' facile e piu' rapido usare la formattazione condizionale, come scrissi qui: viewtopic.php?f=26&t=78213#p444667

Spero che qualcuno, compreso biancocandido :D , possa trarre qualche utile spunto da quanto descritto.

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

Sponsor
 

Re: Convertire una macro in una funzione per Excel

Postdi biancocandido55 » 26/02/09 18:26

Ciao Anthony47,
chiedo venia se rispondo solo adesso (prob. familiari, fortunatamente risolti.),
ho provato la macro e va alla grandissima, ti ringrazio di tutto, alla prossima.
ciao
Biancocandido
biancocandido55
Utente Senior
 
Post: 305
Iscritto il: 03/03/06 10:15

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Convertire una macro in una funzione per Excel":


Chi c’è in linea

Visitano il forum: Nessuno e 51 ospiti

cron