Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Funzione Colorazione celle

Ultimo Aggiornamento: 20/02/2017 14:48
Post: 1
Registrato il: 10/02/2017
Città: MILANO
Età: 45
Utente Junior
Excel 2007
OFFLINE
10/02/2017 09:30

Ciao a tutti,

innanzitutto mi presento in quanto mi sono appena iscritto al forum.
Mi chiamo Piero e sono un appassionato di Excel che uso frequentemente per lavoro.
Avrei la necessità di creare una funzione (possibilmente non una macro) per colorare una determinata cella mediante i valori RGP impostati su altre 3 celle.
Grazie
Ciao
p
Post: 2.728
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
ONLINE
10/02/2017 09:48

Ciao Piero

Le funzioni non compiono azioni (e il colorare è un'azione) ma restituiscono risultati.

Per fare quello che chiedi occorre quindi una macro; allega un piccolo file di esempio spiegando quello che vuoi fare/ottenere

Alfredo
Post: 2.730
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
ONLINE
10/02/2017 10:52

Comunque giusto per fare un esempio da B1 a B3 metti i valori RGB e lancia questa macro che colorerà la cella A1

vb
Sub Colora()
Dim r As Integer
Dim g As Integer
Dim b As Integer
r = Range("B1").Value
g = Range("B2").Value
b = Range("B3").Value
Worksheets("Foglio1").Range("A1").Interior.Color = RGB(r, g, b)
End Sub

Alfredo
Post: 1
Registrato il: 10/02/2017
Città: MILANO
Età: 45
Utente Junior
Excel 2007
OFFLINE
10/02/2017 12:47

Ciao Alfredo,

è proprio il tipo di risultato che mi serve, mi sarebbe piaciuto poterlo inserire come funzione ma pace. Piu' che altro avrei bisogno che venga fatto a cascata su tutte le celle.

ho dovuto cambiarlo come segue per esigenze di formato ma non so come farglielo fare in cascata (per intenderci per le celle da S,T,U6 a S,T,Un e colorare la cella Vn).


Sub Colora()
Dim r As Integer
Dim g As Integer
Dim b As Integer
r = Range("S6").Value
g = Range("T6").Value
b = Range("U6").Value
Worksheets("Cartella colori - CLIENTI").Range("V6").Interior.Color = RGB(r, g, b)
End Sub

Post: 2
Registrato il: 10/02/2017
Città: MILANO
Età: 45
Utente Junior
Excel 2007
OFFLINE
10/02/2017 12:47

Comunque grazie davvero!
ciao
p
Post: 3
Registrato il: 10/02/2017
Città: MILANO
Età: 45
Utente Junior
Excel 2007
OFFLINE
10/02/2017 12:58

Un'ultima cosa. la routine dovrebbe essere dinamica, nel senso che se modifico le celle (aggiungo sposto o tolgo) anche la macro si modifichi di conseguenza o per lo meno sappia che deve partire sempre da una determinata cella in base al contenuto di altre celle.

Allego il file che sto cercando di creare per dare piu' informazioni.

Grazie
ciao
p
Post: 2.733
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
ONLINE
10/02/2017 14:31

Ciao Piero

Dal file che hai allegato non ho capito nulla.

Nella macro che vi è inserita

vb
Sub Colora2()
 Dim r As Integer
Dim g As Integer
 Dim b As Integer
 r = Range("S6").Value
 g = Range("T6").Value
 b = Range("U6").Value
 Worksheets("Cartella colori - CLIENTI").Range("V6").Interior.Color = RGB(r, g, b)
 End Sub


Il foglio "Cartella colori - CLIENTI" non esiste nel file.

Inoltre nelle celle S6, T6 e U6 ci sono dei valori decimali che non credo vadano bene per la funzione RGB.

Puoi essere più chiaro?
[Modificato da alfrimpa 10/02/2017 14:32]

Alfredo
Post: 4
Registrato il: 10/02/2017
Città: MILANO
Età: 45
Utente Junior
Excel 2007
OFFLINE
10/02/2017 15:07

corretto... il file che ho allegato è un estratto di quello che sto utilizzando ma mi sa che mi sono dimenticato di cambiare i nomi.

nel file allegato i parametri RGB si trovano nelle colonne S T ed U.
Io vorrei che le celle della colonna V siano colorate in automatico sulla base appunto dei valori RGB delle colonne S T U. per evitare di dover fare una SUB per ogni riga, vorrei che la funzione partisse in automatico dalla riga 6 fino alla riga n. Inoltre vorrei che, nel momento in cui sposto le celle RGB la macro funzioni allo stesso modo. Penso sia piuttosto semplice indicizzando sia la lettura dei valori RGB che la colorazione delle celle ma sinceramente non so come farla.

Grazie
ciao
p
Post: 4
Registrato il: 10/02/2017
Città: MILANO
Età: 45
Utente Junior
Excel 2007
OFFLINE
10/02/2017 15:10

la riallego corretta
Post: 2.734
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
ONLINE
10/02/2017 15:13

Piero il file che hai allegato è vuoto.

Alfredo
Post: 5
Registrato il: 10/02/2017
Città: MILANO
Età: 45
Utente Junior
Excel 2007
OFFLINE
10/02/2017 15:26

E' strano... se io lo scarico è tutto a posto...
Occhio che è pieno dalla colonna O in poi. le colonne precedenti le ho cancellate perché non hanno alcun valore per questa richiesta.

Puoi riverificare
p
Post: 2.737
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
ONLINE
10/02/2017 15:28

Oh scusami non avevo visto.

Piuttosto sei sicuro che i valori RGB presenti nelle colonne S, T ed U siano corretti?

Io non ho mai visto valori RGB con le virgole ed inoltre ci sono valori negativi sicuramente non ammessi dalla funzione RGB.
[Modificato da alfrimpa 10/02/2017 15:44]

Alfredo
Post: 2.738
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
ONLINE
10/02/2017 15:44

Comunque prova questa

vb
Sub colora()
Dim r As Double
Dim g As Double
Dim b As Double
Dim ur As Long
Dim rng As Range
Dim cel As Range
On Error Resume Next
ur = Cells(Rows.Count, "s").End(xlUp).Row
Set rng = Range("V5:V" & ur)
For Each cel In rng
    r = cel.Offset(0, -3).Value
    g = cel.Offset(0, -2).Value
    b = cel.Offset(0, -1).Value
    cel.Interior.Color = RGB(r, g, b)
Next cel
End Sub

Alfredo
Post: 6
Registrato il: 10/02/2017
Città: MILANO
Età: 45
Utente Junior
Excel 2007
OFFLINE
10/02/2017 15:44

In effetti i valori sono ricavati da formule che possono restituire anche numeri non interi. Ho visto che comunque alla macro non da particolarmente fastidio la cosa, probabilmente nel momento in cui si inserisce un valore non intero non considera i valori decimali... potrei semplicemente prendere solo la parte intera della formula ma in questo momento è davvero il meno.

Ciao

p
Post: 7
Registrato il: 10/02/2017
Città: MILANO
Età: 45
Utente Junior
Excel 2007
OFFLINE
10/02/2017 15:53

Grazie Alfredo E' quello di cui ho bisogno!!!

Dovrei ripagarti con le ore di lavoro che mi hai fatto risparmiare non dovendo piu' inserire a manina i valori di RGB per 3500 colori!

Adesso trovo come rendere dinamico il pezzo di codice seguente e poi sono a cavallo (bardato a festa).

ur = Cells(Rows.Count, "s").End(xlUp).Row
Set rng = Range("V5:V" & ur)

Grazie ancora
ciao
p
Post: 2.740
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
ONLINE
10/02/2017 16:01

No Piero tu non devi fare nulla.

Con l'istruzione

On Error Resume Next


Ho detto alla macro di "saltare" eventuali errori di esecuzione però non sono sicuro che poi la funzione restituisca gli esatti colori RGB.

Con le istruzioni

vb
ur = Cells(Rows.Count, "s").End(xlUp).Row
Set rng = Range("V5:V" & ur)


Ho reso "dinamico il range che va da V5 sino alla riga dell'ultima cella piena della colonna S.

Spero di essere stato chiaro.
[Modificato da alfrimpa 10/02/2017 16:26]

Alfredo
Post: 8
Registrato il: 10/02/2017
Città: MILANO
Età: 45
Utente Junior
Excel 2007
OFFLINE
10/02/2017 16:29

Perfetto se aggiungo o tolgo valori mantenendo fissi il primo valore sulla riga 5 e le colonne S T U e V, ma se aggiungo colonne o righe prima della 5 non funziona piu'.
p
Post: 2.742
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
ONLINE
10/02/2017 17:26

E questo è normale.

Per rendere dinamica la colonna ci devo pensare un po'.

Alfredo
Post: 10
Registrato il: 10/02/2017
Città: MILANO
Età: 45
Utente Junior
Excel 2007
OFFLINE
20/02/2017 14:43

E' una sfida interessante o lunga e noiosa?
Grazie
Ciao
p
Post: 2.784
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
ONLINE
20/02/2017 14:48

Re:
piddu04, 20/02/2017 14.43:

E' una sfida interessante o lunga e noiosa?
Grazie
Ciao
p



Nè l'uno nè l'altro; il problema è che mi sono completamente dimenticato di questa discussione.

Ora cerco di riprendere le fila.
[Modificato da alfrimpa 20/02/2017 14:49]

Alfredo
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
[RISOLTO] Funzione moda (63 messaggi, agg.: 17/03/2024 11:34)
FUNZIONE VLOOKUP O INDEX - MATCH? (2 messaggi, agg.: 14/09/2018 18:34)
Funzione MODA (18 messaggi, agg.: 12/02/2024 14:19)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 11:40. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com