Come posso rendere trasparente il carattere di una cella?


16

Sto creando una heatmap usando la formattazione condizionale di Excel. Non voglio che i valori della cella vengano visualizzati sullo sfondo del colore. C'è un modo per rendere la formattazione del font trasparente, simile a quella che si trova nella formattazione del riempimento della cella?

Poiché si tratta di una mappa di calore, non è possibile utilizzare un singolo colore (ad esempio bianco) e preferirei non dover formattare singolarmente la proprietà del carattere di ogni cella sul colore appropriato.

MODIFICARE: Per aiutare a chiarire, la mappa termica viene colorata usando Formattazione condizionale & gt; Scala colori & gt; Rosso-Bianco-Blu (dove il bianco è stato modificato in grigio chiaro), quindi il valore di riempimento cella non viene impostato direttamente, ma è un valore calcolato su sfumatura di colore

Heatmap

Risposte:


27

Ho trovato un work-around che non cambia il colore del carattere, ma rimuove efficacemente il testo dalle celle. Regola il formato del numero di celle su Personalizzato, con un valore di ;;;.


1
Questa è la soluzione corretta, non quella contrassegnata come accettata (sebbene entrambe funzionino, questa è molto più veloce ed efficiente e utilizza funzioni integrate).
jony

Ottimo funziona come niente
Dev_Man

3

Mentre non sono a conoscenza di alcuna funzionalità del foglio di lavoro per abbinare il colore del carattere di una cella al suo colore di riempimento (diverso da quello manuale), è molto facile da fare con una macro. La prima macro in basso cambia i colori dei caratteri nelle celle di un intervallo selezionato in modo che corrispondano ai loro colori di riempimento. Il secondo restituisce i colori dei caratteri al nero predefinito.

Sub HideFont()
    Dim cell As Variant
    For Each cell In Selection
        cell.Font.Color = cell.Interior.Color
    Next cell
End Sub

Sub UnhideFont()
    Dim cell As Variant
    For Each cell In Selection
        cell.Font.Color = 0
    Next cell
End Sub

Per installare le macro, selezionare Developer / Visual Basic dal nastro principale e quindi scegliere Insert / Module dal menu. Incolla il codice nel riquadro di modifica che si apre. Le macro appariranno nell'elenco delle macro accessibile scegliendo Developer / Macros dal nastro principale. Basta selezionare con il mouse l'intervallo che si desidera modificare e scegliere la macro che si desidera eseguire.


Approccio molto interessante L'ho provato e funziona in una cella riempita in forma noramlly (cioè dove il formato della cella è selezionato direttamente). Sfortunatamente, non funziona dove il colore della cella è un formato condizionale su una sfumatura, quindi cambia semplicemente in bianco. qualche idea?
dav

È troppo male. Risposte in questo post StackOverflow suggerire un approccio. Verificherò più tardi oggi.
chuff

Grazie, per ora sto usando il mio imbroglio del formato numerico, ma ho intenzione di elaborare il VBA referenziato nel tuo link per ottenere una migliore soluzione a lungo termine.
dav

Mi scuso per aver cambiato la risposta accettata, ma con la disparità di voti mi sembrava appropriato. Inoltre, corrisponde al metodo che uso regolarmente ora.
dav

1

Ok, quindi questa è la prima volta che ho inviato il codice, quindi ecco qui. Ho pensato che la via macro sarebbe stata la strada da percorrere, ma dato che non puoi impostare il carattere per essere uguale al colore della cella usando la formattazione condizionale, l'unico modo sarebbe cambiare entrambi con una macro che funzioni in modo simile a effetto del formato condizionale, vedi sotto:

Sub change()

    Dim Rstart, Rmid, Rend, Gstart, Gmid, Gend, Bstart, Bmid, Bend, Rsd, Rdd,_
    Gsd, Gdd, Bsd, Bdd, Rcell, Gcell, Bcell As Integer
    Dim maxsel, minsel, halfsel, halfval, v As Double



    Rstart = 0
    Rmid = 230
    Rend = 255
    Gstart = 0 
    Gmid = 230
    Gend = 0
    Bstart = 255
    Bmid = 230
    Bend = 0

    Rsd = Rmid - Rstart
    Rdd = Rend - Rmid

    Gsd = Gmid - Gstart
    Gdd = Gend - Gmid

    Bsd = Bmid - Bstart
    Bdd = Bend - Bmid

    maxsel = Application.WorksheetFunction.Max(Selection)
    minsel = Application.WorksheetFunction.Min(Selection)
    halfsel = (maxsel - minsel) / 2
    halfval = minsel + halfsel
    If halfval = 0 Then Exit Sub

    Dim cell As Variant
    For Each cell In Selection
        v = cell.Value
        If v >= minsel And v < halfsel Then
            Rcell = Round((Rstart + ((halfval - v) / halfsel) * Rsd), 0)
            Gcell = Round((Gstart + ((halfval - v) / halfsel) * Gsd), 0)
            Bcell = Round((Bstart + ((halfval - v) / halfsel) * Bsd), 0)
        Else
            Rcell = Round((Rmid + ((v - halfval) / halfsel) * Rdd), 0)
            Gcell = Round((Gmid + ((v - halfval) / halfsel) * Gdd), 0)
            Bcell = Round((Bmid + ((v - halfval) / halfsel) * Bdd), 0)
        End If

    cell.Font.Color = RGB(Rcell, Gcell, Bcell)
    cell.Interior.Color = RGB(Rcell, Gcell, Bcell)

    Next cell

    End Sub

Spero che questo aiuti qualcuno, anche se sono tre anni in ritardo rispetto alla domanda originale.


1

Questo è come lo faccio.

.Cells (RowTo, ColHcpDiP) .Font.Color = .Cells (RowTo, ColHcpDiP) .Interior.Color 'Imposta colore invisibile

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.