Wie kann ich die Schrift einer Zelle transparent machen?

18

Ich erstelle eine Heatmap mit der bedingten Formatierung von Excel. Ich möchte nicht, dass die Werte der Zelle vor dem farbigen Hintergrund angezeigt werden. Gibt es eine Möglichkeit, die Formatierung der Schrift transparent zu machen, ähnlich wie in der Füllformatierung der Zelle?

Da es sich um eine Heatmap handelt, kann ich keine einzelne Farbe (z. B. Weiß) verwenden, und ich würde es vorziehen, die Schrifteigenschaften jeder Zelle nicht einzeln auf die entsprechende Farbe zu formatieren.

BEARBEITEN: Zur Verdeutlichung wird die Heatmap mit Bedingtes Formatieren> Farbskala> Rot-Weiß-Blau (wobei Weiß in Hellgrau geändert wurde) eingefärbt, sodass der Zellenfüllwert nicht direkt festgelegt wird, sondern ein berechneter Wert ist auf einem Farbverlauf.

Heatmap

dav
quelle

Antworten:

29

Ich habe eine Problemumgehung gefunden, bei der die Schriftfarbe nicht geändert wird, der Text jedoch effektiv aus den Zellen entfernt wird. Passen Sie das Zellennummernformat auf Benutzerdefiniert mit einem Wert von an ;;;.

dav
quelle
Großartig, das funktioniert wie alles
Dev_Man
3

Obwohl mir keine Arbeitsblattfunktionalität bekannt ist, mit der die Schriftfarbe einer Zelle an die Füllfarbe angepasst werden kann (außer manuell), ist die Verwendung eines Makros sehr einfach. Das erste Makro darunter ändert die Schriftfarbe (n) in den Zellen eines ausgewählten Bereichs entsprechend ihrer Füllfarben. Die zweite Option setzt die Schriftfarben auf das Standardschwarz zurück.

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

Um die Makros zu installieren, wählen Sie Developer/ Visual Basicin der Hauptleiste und dann Insert/ Moduleim Menü. Fügen Sie den Code in das sich öffnende Bearbeitungsfenster ein. Die Makros werden in der Makroliste angezeigt, auf die Sie zugreifen können, indem Sie Developer/ Macrosin der Hauptleiste wählen . Wählen Sie einfach mit der Maus den Bereich aus, den Sie ändern möchten, und wählen Sie das Makro aus, das Sie ausführen möchten.

chuff
quelle
Sehr interessanter Ansatz. Ich habe es versucht und es funktioniert in einer normal formatierten gefüllten Zelle (dh wo das Zellenformat direkt ausgewählt ist). Leider funktioniert es nicht, wenn die Zellenfarbe ein bedingtes Format für einen Farbverlauf ist - dann ändert es sich einfach in Weiß. Irgendwelche Gedanken?
Dav
Das ist sehr schade. Die Antworten in diesem StackOverflow-Beitrag schlagen einen Ansatz vor. Werde heute später auschecken.
Chuff
Vielen Dank, im Moment benutze ich meinen Zahlenformat-Cheat, aber ich werde das in Ihrem Link angegebene VBA aufarbeiten, um eine bessere langfristige Lösung zu erhalten.
Dav
Tut mir leid, dass ich die akzeptierte Antwort geändert habe, aber mit dem Abstimmungsunterschied schien es angebracht. Außerdem entspricht es der Methode, die ich jetzt regelmäßig verwende.
Dav
1

Okay, es ist das erste Mal, dass ich Code einreiche. Ich dachte, die Makroroute wäre der richtige Weg, aber da Sie die Schriftart nicht so einstellen können, dass sie der Zellenfarbe entspricht, indem Sie eine bedingte Formatierung verwenden, besteht die einzige andere Möglichkeit darin, beide mit einem Makro zu ändern, das ähnlich wie das funktioniert Auswirkung des bedingten Formats, siehe unten:

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

Hoffe, das hilft jemandem, obwohl es für die ursprüngliche Frage drei Jahre zu spät ist.

Timbosides
quelle
1

So mache ich es.

.Cells (RowTo, ColHcpDiP) .Font.Color = .Cells (RowTo, ColHcpDiP) .Interior.Color 'Setzt die Farbe auf unsichtbar

user685761
quelle