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.