ฉันจะทำให้แบบอักษรของเซลล์โปร่งใสได้อย่างไร


18

ฉันกำลังสร้าง heatmap โดยใช้การจัดรูปแบบตามเงื่อนไขของ Excel ฉันไม่ต้องการให้ค่าของเซลล์แสดงกับพื้นหลังสี มีวิธีในการทำให้การจัดรูปแบบของแบบอักษรโปร่งใสเหมือนกับสิ่งที่พบในการจัดรูปแบบการเติมของเซลล์หรือไม่

เนื่องจากเป็นแผนที่ความร้อนฉันไม่สามารถใช้สีเดียว (เช่นสีขาว) และฉันไม่ต้องการให้จัดรูปแบบคุณสมบัติแบบอักษรของแต่ละเซลล์เป็นสีที่เหมาะสม

แก้ไข: เพื่อช่วยให้ชัดเจนแผนที่ความร้อนเป็นสีโดยใช้การจัดรูปแบบตามเงื่อนไข> สเกลสี> แดง - ขาว - น้ำเงิน (โดยที่สีขาวถูกดัดแปลงเป็นสีเทาอ่อน) ดังนั้นค่าการเติมเซลล์ไม่ได้ถูกตั้งค่าโดยตรง แต่เป็นค่าที่คำนวณ บนการไล่ระดับสี

Heatmap

คำตอบ:


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จากริบบิ้นหลัก เพียงเลือกเมาส์ในช่วงที่คุณต้องการแก้ไขและเลือกแมโครที่คุณต้องการเรียกใช้


วิธีการที่น่าสนใจมาก ฉันลองและใช้งานได้ในเซลล์ที่มีการจัดรูปแบบ noramlly (เช่นที่รูปแบบเซลล์ถูกเลือกโดยตรง) น่าเสียดายที่มันไม่ทำงานเมื่อสีของเซลล์เป็นรูปแบบที่มีเงื่อนไขบนการไล่ระดับสีจากนั้นจะเปลี่ยนเป็นสีขาว ความคิดใด ๆ
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 'ตั้งค่าสีที่มองไม่เห็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.