Làm thế nào tôi có thể làm cho phông chữ của một tế bào trong suốt?


18

Tôi đang tạo một bản đồ nhiệt bằng định dạng có điều kiện của Excel. Tôi không muốn các giá trị của ô hiển thị trên nền màu. Có cách nào để làm cho định dạng của phông chữ trong suốt, tương tự như những gì được tìm thấy trong định dạng điền của ô không?

Vì là bản đồ nhiệt, tôi không thể sử dụng một màu duy nhất (ví dụ: màu trắng) và tôi không muốn phải định dạng riêng từng thuộc tính phông chữ của ô thành màu thích hợp.

EDIT: Để giúp làm rõ, bản đồ nhiệt được tô màu bằng Định dạng có điều kiện> Thang màu> Đỏ-Trắng-Xanh (trong đó màu trắng được sửa thành màu xám nhạt), do đó, giá trị điền vào ô không được đặt trực tiếp, thay vào đó là giá trị được tính trên một dải màu.

Sơ đồ nhiệt

Câu trả lời:


29

Tôi đã tìm thấy một cách giải quyết không thay đổi màu phông chữ, nhưng loại bỏ văn bản khỏi các ô một cách hiệu quả. Điều chỉnh định dạng số ô thành Tùy chỉnh, với giá trị là ;;;.


Tuyệt vời, công việc này giống như mọi thứ
Dev_Man

3

Mặc dù tôi không biết bất kỳ chức năng trang tính nào để khớp màu phông chữ của ô với màu tô của nó (trừ thủ công), nhưng rất dễ thực hiện với macro. Macro đầu tiên bên dưới thay đổi (các) màu phông chữ trong các ô của phạm vi đã chọn để khớp với màu tô của chúng. Cái thứ hai trả lại màu phông chữ trở về màu đen mặc định.

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

Để cài đặt các macro, chọn Developer/ Visual Basictừ ruy-băng chính rồi chọn Insert/ Moduletừ menu. Dán mã vào khung chỉnh sửa mở ra. Các macro sẽ xuất hiện trong danh sách macro có thể truy cập bằng cách chọn Developer/ Macrostừ dải băng chính. Chỉ cần chọn bằng chuột phạm vi bạn muốn sửa đổi và chọn macro bạn muốn chạy.


Cách tiếp cận rất thú vị. Tôi đã thử nó và nó hoạt động trong một ô chứa đầy định dạng noramlly (nghĩa là nơi định dạng ô được chọn trực tiếp). Thật không may, nó không hoạt động khi màu ô là định dạng có điều kiện trên một gradient - sau đó nó chỉ chuyển sang màu trắng. Có suy nghĩ gì không?
dav

Điều đó thật tệ. Phản hồi trong bài viết StackOverflow này đề xuất một cách tiếp cận. Sẽ kiểm tra sau hôm nay.
chuff

Cảm ơn, hiện tại tôi đang sử dụng cheat định dạng số của mình, nhưng tôi sẽ làm việc với VBA được tham chiếu trong liên kết của bạn để có được giải pháp lâu dài tốt hơn.
dav

Xin lỗi về việc thay đổi câu trả lời được chấp nhận, nhưng với sự chênh lệch phiếu bầu có vẻ phù hợp. Ngoài ra, nó phù hợp với phương pháp tôi thường xuyên sử dụng bây giờ.
dav

1

Được rồi, đây là lần đầu tiên tôi gửi mã, vì vậy hãy đến đây. Tôi nghĩ rằng tuyến macro sẽ là con đường để đi, nhưng vì bạn không thể đặt phông chữ giống với màu của ô bằng cách sử dụng định dạng có điều kiện, nên cách khác là thay đổi cả hai với macro hoạt động tương tự như ảnh hưởng của định dạng có điều kiện, xem bên dưới:

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

Hy vọng điều này sẽ giúp được ai đó, mặc dù đã quá ba năm cho câu hỏi ban đầu.


1

Đây là cách tôi làm điều đó.

.Cells (RowTo, ColHcpDiP) .ontont.Color = .Cells (RowTo, ColHcpDiP) .Interior.Color 'Đặt màu vô hình

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.