Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

valori negativi e formule complesse, come modificarli?

Ultimo Aggiornamento: 28/02/2019 14:29
Post: 1
Registrato il: 10/02/2019
Utente Junior
office 365 pro plus
OFFLINE
25/02/2019 17:05

Buongiorno a tutti. Negli ultimi giorni ho creato un file in cui, una volta immessi due codici RGB nelle prime due righe, in quelle sotto mi mostra il codice RGB derivato da ogni metodo di fusione di due pixel con i colori iniziali.
Ogni riga è quindi composta da:

nome fusione | codice R | codice G | codice B | colore risultante

i codici sono ottenuti attraverso complesse operazioni matematiche che comprendono spesso funzioni tipo =SE e =MAX.

Nella casella "colore risultante" attraverso una macro compare il colore indicato dal codice RGB, e qui arriva il problema:
un codice RGB è composto da 3 numeri che indicano la luminosità rispettivamente del rosso, del verde e del blu. per ogni colore il codice è compreso tra 0 e 255.
Applicando un metodo di fusione però può succedere che il codice di uno dei colori superi il 255 o vada sotto lo zero. nel primo caso si parla di clipping, e il valore dev'essere trasformato in 255, e son riuscito a farlo con una formattazione condizionale.
Vorrei invece capire come fare una formattazione che, quando un risultato è inferiore a 0, trasformi il risultato in 0.

Qualcuno riesce ad aiutarmi?
grazie mille dell'attenzione
Post: 2.158
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
25/02/2019 17:18

ciao

come hai fatto a fare una formattazione condizionale che mette 255 alle celle con valore > di 255 ???

saluti

edit: comunque a mio avviso dovresti intervenire nei calcoli delle 3 condizioni, per esempio:

se(TuoCalcolo>255;255;se(TuoCalcolo;<0;0;TuoCalcolo))



[Modificato da dodo47 25/02/2019 17:26]
Domenico
Win 10 - Excel 2016
Post: 664
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
25/02/2019 19:49

Ciao
C'è qualcosa che mi sfugge nel tuo ragionamento.
Tu dici
nome fusione | codice R | codice G | codice B | colore risultante

Il colore risultante come è ottenuto? E' la concatenazione dei codici singoli?

Se così fosse metti la condizione che se il singolo codice è < 0 allora ponilo = 0

Es.: -021 | 125 | 125 = concatena(se(cod.R<0;cod.R=0;cod.R);se(cod.G<0;cod.G=0;cod.G);se(cod.B<0;cod.B=0;cod.B))

Ciao,
Mario
Post: 1
Registrato il: 10/02/2019
Utente Junior
office 365 pro plus
OFFLINE
25/02/2019 21:45

dodo47:
grazie dell'intervento.
per la formattazione condizionale ho posto una condizione per cui tutte le caselle con valori maggiori di 255 sono formattate 255, ovvero nella parte di formattazione dedicata al tipo di cella ho scelto 'personalizzata' ed ho inserito il valore 255. con lo zero non si può fare lo stesso, perchè in quella sezione il valore zero indica un qualsiasi numero, e viene usato per determinare se i risultati sono decimali e quante cifre decimali si desiderano.
quello che dici sui SE è corretto, ma le formule che utilizzo spesso contengono gia più di due se concatenati, volevo evitare di complicare troppo le formule, e tra l'altro dovrei modificare a mano un bel po' di formule, cosa di cui mi priverei volentieri ;)

marius40:
grazie della risposta, il colore lo ottengo con una macro la cui struttura è la seguente:

Sub colora()
R = Range("D2").Value
G = Range("E2").Value
B = Range("F2").Value
Range("G2").Interior.Color = RGB(R, G, B)
end sub

questa macro è ripetuta una quindicina di volte con righe diverse, così che al variare dei parametri dei due colori di base schiacciando un pulsante 'colora' di fianco ad ogni codice RGB compare il colore che esso forma. forse potrei modificare questa macro per dirgli che quando il valore è inferiore a zero deve prenderlo come zero, ma non sono pratico del linguaggio, non saprei come dirglielo.
Post: 2.159
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
25/02/2019 22:00

Ciao faccio un esempio stringato:

.....
R = Range("D2").Value

if R < 0 then
R =0
elseif R > 255 then
R=255
end if

.... Scusa ma sono da cellulare


[Modificato da dodo47 26/02/2019 10:53]
Domenico
Win 10 - Excel 2016
Post: 2
Registrato il: 10/02/2019
Utente Junior
office 365 pro plus
OFFLINE
28/02/2019 14:29

dodo47: grazie!

avrei preferito per questioni di brevità una ormattazione, ma mi sembra di aver capito che non c'è modo senza plug in esterni, quindi ho adottato il tuo codice per quanto riguarda i calcoli dei colori e ha funzionato perfettamente, ed una formattazione per quanto riguarda la sola visualizzazione del contenuto della cella.
Ringrazio tutti coloro che hanno risposto per la cortesia e per l'aiuto. se qualcuno fosse interessato ad avere il file una volta finito mi scriva pure, sarò felice di condividere il mio lavoro!

___POST CHIUSO___
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]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 21:41. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com