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

행을 삽입하고 삭제해도 조건부 서식이 조각화되지 않습니다.

원인은 표준 복사 / 붙여 넣기를 사용하여 셀 또는 행 사이의 복사 / 붙여 넣기입니다. 수정은 항상 붙여 넣기 값 또는 붙여 넣기 수식을 사용하는 것입니다. 대상을 마우스 오른쪽 버튼으로 클릭하면 붙여 넣기 옵션 섹션에 123 (값) 및 f (수식)가 제공됩니다. 복사 / 붙여 넣기 형식을 지정하면 조건이 복사 / 붙여 넣기되고 때때로 조각화 될 수 있습니다.

표준 복사 / 붙여 넣기를 수행하면 셀의 조건부 수식도 복사됩니다. :하자 당신이 두 가지 규칙이 있다고 가정
1) (1) $ A $합니다 : $ A $ 30 빨간색
$ B $ (30) 파란색 : 2) $ B는 1 $ 확인
지금 A10를 선택 : B10를 복사 / 붙여 넣기 그 A20에 : B20. Excel에서 수행하는 작업은 해당 셀에 적용된 규칙에서 A20 : B20의 조건부 서식을 삭제하고 A20 : B20의 서식이있는 새 규칙을 추가하는 것입니다. 네 가지 규칙으로 끝납니다.
1) Make = $ A $ 20 red
2) Make = $ B $ 20 blue
3) Make = $ A $ 1 : $ A $ 19, $ A $ 21 : $ A $ 30 red
4) Make = $ B $ 1 : $ B $ 19, $ B $ 21 : $ B $ 30 파랑
A10에서 A20으로 복사 / 붙여 넣기 만하면 Excel은 소스와 대상 모두에 동일한 규칙이 적용되고 규칙을 조각화하지 않습니다. Excel은 복사 / 붙여 넣기가 둘 이상의 조건부 형식에 영향을 줄 때 조각화를 피하는 방법을 알아낼만큼 똑똑하지 않습니다.

Excel에서 행을 삽입하거나 삭제 한 영역을 포함하는 조건 규칙을 단순히 확장하거나 축소하기 때문에 행을 삽입하고 삭제해도 조각화가 발생하지 않습니다.

누군가 $ Q $ 1 : $ Q $ 30 대신 $ Q : $ Q를 사용하도록 제안했습니다. 그것은 도움이되지 않으며 위에서 언급 한대로 셀 서식을 복사 / 붙여 넣을 때 여전히 조각화가 발생합니다.


잘라 내기 <kbd> ctrl-x <kbd>는 셀 잘라 내기에서 조건부 서식을 삭제하고 (현재 셀에는 서식이 없음) 서식을 새 셀에 붙여 넣습니다. 누군가 가 이것을 막는 방법을 알고 있다고 확신 합니다.
— user5389726598465

@ user135711 그것은 당신이하려는 일에 달려 있습니다. 기본적으로 복사 및 잘라내 기는 모두 잘라내기를 사용하여 소스 셀의 수식, 서식 및 링크를 선택하여 소스 셀에서 동일한 것을 제거합니다. 소스에서 수식 / 값을 제거하고 서식을 유지하려는 의도라면 물건을 대상에 복사 / 붙여 넣은 다음 소스를 삭제합니다. 삭제 (Del 키)는 수식이나 값만 지 웁니다. 서식과 링크는 그대로 둡니다.
— user3347790

1
INDIRECT () 함수는이 질문의 다른 버전에서 답변으로 상향 조정 된 기능은 작동하지 않습니다. 수동으로 셀을 입력 한 것처럼 적용 대상 필드에서 사용될 때 셀로 평가되기 때문입니다.
— user5389726598465

copy / pase를 사용하는 경우 superuser.com/a/1113566/79488 에서 조각난 규칙을 정리하는 좋은 해결 방법이 있습니다
— 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.