如何使单元格的字体透明?


18

我正在使用Excel的条件格式创建热图。我不希望单元格的值在彩色背景下显示。有没有办法使字体的格式透明,类似于单元格的填充格式中的字体?

由于它是热图,因此我不能使用单一颜色(例如白色),并且我希望不必将每个单元格的font属性分别格式化为适当的颜色。

编辑: 为帮助澄清,使用条件格式>色阶>红-白-蓝(将白色修改为浅灰色)对热图进行着色,因此未直接设置单元格填充值,而是一个计算值在颜色渐变上。

热图

Answers:


29

我发现了一种解决方法,它不会更改字体颜色,但是可以有效地从单元格中删除文本。将单元格编号格式调整为“自定义”,其值为;;;


太棒了,它像任何东西一样起作用
Dev_Man

3

虽然我不知道有任何工作表功能可以将单元格的字体颜色与其填充颜色(手动除外)相匹配,但是使用宏非常容易。下面的第一个宏会更改选定范围的单元格中的字体颜色,以匹配其填充颜色。第二个将字体颜色恢复为默认的黑色。

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

要安装宏,选择Developer/ Visual Basic从主功能区,然后选择Insert/ Module从菜单中。将代码粘贴到打开的编辑窗格中。通过在主功能区中选择Developer/ Macros,可将宏显示在可访问的宏列表中。只需使用鼠标选择要修改的范围,然后选择要运行的宏即可。


非常有趣的方法。我尝试过,它可以在格式正常的填充单元格中工作(即直接选择单元格格式的地方)。不幸的是,如果单元格颜色是渐变的条件格式,则无法使用,然后仅变为白色。有什么想法吗?
dav

这太糟糕了。此StackOverflow帖子中的回复提出了一种方法。将于今天晚些时候退房。
chuff

谢谢,到目前为止,我正在使用数字格式作弊功能,但是我将处理您的链接中引用的VBA,以获得更好的长期解决方案。
dav

很抱歉更改已接受的答案,但由于票数不均,似乎很适当。而且,它与我现在经常使用的方法匹配。
dav

1

好的,这是我第一次提交代码,所以去吧。我以为可以使用宏路由,但是由于无法使用条件格式将字体设置为与单元格颜色相同,因此,唯一的其他方法是使用与条件格式的效果,请参见下文:

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

希望这对某人有帮助,即使对于原始问题来说已经太迟了三年。


1

这就是我的方法。

.Cells(RowTo,ColHcpDiP).Font.Color = .Cells(RowTo,ColHcpDiP).Interior.Color'设置颜色不可见

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.