การกระจายตัวของการจัดรูปแบบตามเงื่อนไขของ Excel


22

บ่อยครั้งที่ฉันสร้างแผ่นงานที่มีการจัดรูปแบบตามเงื่อนไขและกำหนดช่วงเซลล์เพื่อให้กฎการจัดรูปแบบตามเงื่อนไขถูกนำไปใช้เพียงครั้งเดียวกับช่วงของเซลล์เช่น

Make $A$1:$A$30 red and
Make $B$1:$B$30 blue.

หลังจากการแทรก / ลบจำนวนแถวและ / หรือคอลัมน์ชุดกฎการจัดรูปแบบตามเงื่อนไขจะมีการแยกส่วนอย่างมากโดยมีกฎเดียวกันซ้ำสำหรับช่วงที่แตกต่างกัน เช่น

Make $A$1:$A$2 red 
Make $A$3:$A$4 red 
Make $A$5:$A$9 red
Make $A$10:$A$20 red 
Make $A$21:$A$30 red
...
Make $B$1:$B$2 blue 
Make $B$3:$B$4 blue
Make $B$5:$B$9 blue
Make $B$10:$B$20 blue 
Make $B$21:$B$30 blue
....

มีวิธีปฏิบัติที่ดีในการป้องกันหรือไม่หรือฉันถึงวาระที่จะต้องทำความสะอาดกฎด้วยตนเองเมื่อมันยุ่งเกินไป?

คำตอบ:


13

การแทรกและลบแถวไม่ทำให้การจัดรูปแบบตามเงื่อนไขมีการแยกส่วน

สาเหตุคือการคัดลอก / วางระหว่างเซลล์หรือแถวโดยใช้การคัดลอก / วางมาตรฐาน การแก้ไขคือใช้ paste-value หรือ paste-formula เสมอ บนปลายทางคลิกขวาและส่วนตัวเลือกการวางจะเสนอ 123 (ค่า) และ f (สูตร) อย่าคัดลอก / วางการจัดรูปแบบเนื่องจากจะทำให้เกิดเงื่อนไขในการคัดลอก / วางและบางครั้งอาจมีการแยกส่วน

เมื่อคุณคัดลอก / วางมาตรฐานมันจะคัดลอกสูตรตามเงื่อนไขของเซลล์ด้วย สมมติว่าคุณมีกฎสองข้อ:
1) สร้าง $ A $ 1: $ A $ 30 สีแดง
2) ทำ $ B $ 1: $ B $ 30 สีน้ำเงิน
ตอนนี้เลือก A10: B10 และคัดลอก / วางที่ A20: B20 สิ่งที่ Excel จะทำคือการลบการจัดรูปแบบตามเงื่อนไขสำหรับ A20: B20 จากกฎที่ใช้กับเซลล์เหล่านั้นและเพิ่มกฎใหม่ที่มีการจัดรูปแบบสำหรับ A20: B20 คุณจบด้วยกฎสี่ข้อ
1) Make = $ A $ 20 สีแดง
2) Make = $ B $ 20 สีน้ำเงิน
3) Make = $ A $ 1: $ A $ 19, $ A $ 21: $ A $ 30 สีแดง
4) ยี่ห้อ = $ B $ 1: $ B $ 19, $ B $ 21: $ B $ 30 สีน้ำเงิน
หากคุณคัดลอก / วางเพียง A10 ถึง A20 Excel จะสังเกตเห็นกฎเดียวกันที่ใช้กับทั้งต้นทางและปลายทางและไม่แยกส่วนกฎ Excel ไม่ฉลาดพอที่จะหาวิธีหลีกเลี่ยงการแตกแฟรกเมนต์เมื่อการคัดลอก / วางของคุณส่งผลต่อรูปแบบที่มีเงื่อนไขสองรูปแบบขึ้นไป

การแทรกและลบแถวไม่ทำให้เกิดการแตกแฟรกเมนต์เนื่องจาก Excel ขยายหรือย่อกฏเงื่อนไขที่ครอบคลุมพื้นที่ที่คุณแทรกหรือลบแถว

มีคนแนะนำให้ใช้ $ Q: $ Q มากกว่า $ Q $ 1: $ Q $ 30 ที่ไม่ได้ช่วยและคุณจะยังคงได้รับการกระจายตัวเมื่อคุณคัดลอก / วางการจัดรูปแบบเซลล์ตามที่ระบุไว้ข้างต้น


โปรดทราบว่าการตัด <kbd> ctrl-x <kbd> จะลบการจัดรูปแบบตามเงื่อนไขจากการตัดเซลล์ (ตอนนี้เซลล์ไม่มีการจัดรูปแบบ) และวางการจัดรูปแบบลงในเซลล์ใหม่ ฉันจะพนันคนที่รู้วิธีป้องกัน?
user5389726598465

@ user135711 ขึ้นอยู่กับสิ่งที่คุณพยายามทำ ตามค่าเริ่มต้นให้คัดลอกและตัดทั้งหยิบสูตรการจัดรูปแบบและลิงก์ของเซลล์ต้นทางด้วยการตัดนอกจากนี้การลบเดียวกันจากเซลล์ต้นทาง หากความตั้งใจคือการลบสูตร / ค่าจากแหล่งที่มา แต่เพื่อให้การจัดรูปแบบฉันจะคัดลอก / วางเนื้อหาไปยังปลายทางแล้วลบแหล่งที่มา ลบ (ปุ่ม Del) ล้างสูตรหรือค่าเท่านั้น มันออกจากการจัดรูปแบบและลิงค์ในสถานที่
user3347790

1
ฟังก์ชัน INDIRECT () upvoted เป็นคำตอบในเวอร์ชันอื่นของคำถามนี้ไม่ทำงานเนื่องจากมีการประเมินเซลล์เมื่อใช้ในฟิลด์นำไปใช้กับราวกับว่าคุณป้อนเซลล์ด้วยตนเอง
user5389726598465

superuser.com/a/1113566/79488มีวิธีแก้ไขปัญหาที่ดีสำหรับการทำความสะอาดกฎการแยกส่วนถ้าคุณใช้ copy / pase
Fabian Schmied

5

มีปัญหาเดียวกันเมื่อใช้รูปแบบที่มีเงื่อนไขกับคอลัมน์ของตาราง เมื่อเพิ่มแถวฉันพบว่าทำงานได้ดีที่สุดในการใช้กฎกับทั้งคอลัมน์โดยใช้$A:$Aหรือคอลัมน์ใด

ป้อนคำอธิบายรูปภาพที่นี่


จากประสบการณ์ของฉันเมื่อแผ่นงานใหญ่ขึ้นการทำเช่นนี้จะทำให้รูปแบบที่มีเงื่อนไขกลายเป็นป่องและการคำนวณจะลดลงเป็นการรวบรวมข้อมูล
rohrl77

3

(นี่เป็นวิธีแก้ปัญหาดังนั้นฉันจะใส่ความคิดเห็น แต่ฉันไม่มีชื่อเสียงเพียงพอ)

โชคไม่ดีที่ดูเหมือนว่าคุณจะถูกกำหนดให้ล้างกฎเมื่อพวกเขายุ่งเหยิง

วิธีง่ายๆในการทำเช่นนี้คือการสร้างแผ่นงานที่มีการจัดรูปแบบที่คุณต้องการ แต่ไม่มีข้อมูล ซึ่งอาจอยู่ในสมุดงานเดียวกับแผ่นงานต้นฉบับของคุณหรือในสมุดงานอื่นที่คุณเก็บไว้เป็นแม่แบบ

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


2

การคัดลอก / วาง / ตัด / แทรกเซลล์ด้วยตนเองทำให้เกิดปัญหาและยากที่จะหลีกเลี่ยงได้

แก้ไขปัญหาผ่านแมโคร VBA

แทนที่จะคัดลอก / วาง / ตัด / แทรกเซลล์ด้วยตนเองฉันทำผ่านแมโคร Excel ซึ่งเก็บรักษาช่วงเซลล์ (เปิดใช้งานผ่านปุ่ม)

Sub addAndBtnClick()
    Set Button = ActiveSheet.Buttons(Application.Caller)
    With Button.TopLeftCell
        ColumnIndex = .Column
        RowIndex = Button.TopLeftCell.Row
    End With
    currentRowIndex = RowIndex
    Set Table = ActiveSheet.ListObjects("Table name")
    Table.ListRows.Add (currentRowIndex)
    Set currentCell = Table.DataBodyRange.Cells(currentRowIndex, Table.ListColumns("Column name").Index)
    currentCell.Value = "Cell value"
    Call setCreateButtons
End Sub

Sub removeAndBtnClick()
    Set Button = ActiveSheet.Buttons(Application.Caller)
    With Button.TopLeftCell
        ColumnIndex = .Column
        RowIndex = Button.TopLeftCell.Row
    End With
    currentRowIndex = RowIndex
    Set Table = ActiveSheet.ListObjects("Table name")
    Table.ListRows(currentRowIndex - 1).Delete
End Sub

Sub setCreateButtons()
    Set Table = ActiveSheet.ListObjects("Table name")
    ActiveSheet.Buttons.Delete
    For x = 1 To Table.Range.Rows.Count
        For y = 1 To Table.Range.Columns.Count

            If y = Table.ListColumns("Column name").Index Then
                Set cell = Table.Range.Cells(x, y)
                If cell.Text = "Some condition" Then
                    Set btn = ActiveSheet.Buttons.Add(cell.Left + cell.Width - 2 * cell.Height, cell.Top, cell.Height, cell.Height)
                    btn.Text = "-"
                    btn.OnAction = "removeAndBtnClick"
                    Set btn = ActiveSheet.Buttons.Add(cell.Left + cell.Width - cell.Height, cell.Top, cell.Height, cell.Height)
                    btn.Text = "+"
                    btn.OnAction = "addAndBtnClick"
                End If
            End If
        Next
    Next
End Sub

ในการรีเซ็ตการจัดรูปแบบ (ไม่จำเป็นจริงๆ):

Sub setCondFormat()
    Set Table = ActiveSheet.ListObjects("Table name")
    Table.Range.FormatConditions.Delete
    With Table.ListColumns("Column name").DataBodyRange.FormatConditions _
        .Add(xlExpression, xlEqual, "=ISTLEER(A2)") 'Rule goes here
        With .Interior
            .ColorIndex = 3 'Formatting goes here
        End With
    End With
    ...
End Sub

3
กรุณาอย่าโพสต์คำตอบเดียวกันกับหลายคำถาม หากข้อมูลเดิมตอบทั้งสองคำถามจริง ๆ แล้วคำถามหนึ่ง (โดยปกติจะเป็นคำถามที่ใหม่กว่า) ควรปิดเหมือนกันกับคำถามอื่น คุณสามารถระบุสิ่งนี้ได้โดยการโหวตเพื่อปิดเป็นซ้ำหรือหากคุณไม่มีชื่อเสียงเพียงพอให้ยกธงขึ้นเพื่อระบุว่าซ้ำกัน มิฉะนั้นปรับคำตอบสำหรับคำถามนี้และไม่เพียงแค่วางคำตอบเดียวกันในหลาย ๆ ที่
DavidPostill
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.