sourcetip

셀의 값이 다른 열의 값과 같으면 조건부로 셀 형식 지정

fileupload 2023. 7. 17. 21:21
반응형

셀의 값이 다른 열의 값과 같으면 조건부로 셀 형식 지정

데이터가 있습니다.A그리고.B B열의 데이터는 대부분 다음과 같습니다.A항상 그런 것은 아닙니다.예:

A
Budapest
Prague
Paris
Bukarest
Moscow
Rome
New York

B
Budapest
Prague
Los Angeles
Bukarest

검색해야 합니다.A의 값을 나타내는 열B행이 일치하는 경우 행의 배경색을 변경해야 합니다.A빨간색이나 뭐 그런 거.

공식은 다음과 같습니다.

수식을 기반으로 조건부 형식으로 새 규칙을 만듭니다.다음 공식을 사용하여 $A에 적용합니다.A달러

=NOT(ISERROR(MATCH(A1,$B$1:$B$1000,0)))


enter image description here

문제가 발생할 경우 다운로드할 예제 시트입니다.


갱신하다
여기 완벽하게 작동하는 @pnuts의 제안이 있습니다.

=MATCH(A1,B:B,0)>0


수식이 필요하지 않습니다.이 방법은 필요한 만큼의 열에 적용되지만 동일한 워크시트의 열만 비교합니다.

참고: 먼저 개별 열에서 중복 항목을 제거합니다!

  1. 비교할 열 선택
  2. 조건부 서식 클릭
  3. 셀 규칙 강조 클릭
  4. 중복 값을 클릭합니다(기본값은 OK).
  5. 중복 항목이 이제 빨간색으로 강조 표시됩니다.

    • 추가 팁: 각 행을 색상별로 필터링하여 열에 고유한 값을 남기거나 중복된 값만 남길 수 있습니다.

enter image description here enter image description here

또 다른 간단한 해결책은 조건부 형식(A열에 적용)에서 다음 공식을 사용하는 것입니다.

=COUNTIF(B:B,A1)

잘 부탁드립니다!

이를 위해 필요한 것은 간단한 루프입니다.
이것은 소문자, 대문자 불일치에 대한 테스트를 처리하지 않습니다.이것이 정확히 당신이 찾고 있는 것이 아니라면 댓글을 달아주시면 제가 수정할 수 있습니다.

만약 당신이 VBA를 배울 계획이라면.이것은 훌륭한 시작입니다.

테스트됨:

Sub MatchAndColor()

Dim lastRow As Long
Dim sheetName As String

    sheetName = "Sheet1"            'Insert your sheet name here
    lastRow = Sheets(sheetName).Range("A" & Rows.Count).End(xlUp).Row

    For lRow = 2 To lastRow         'Loop through all rows

        If Sheets(sheetName).Cells(lRow, "A") = Sheets(sheetName).Cells(lRow, "B") Then
            Sheets(sheetName).Cells(lRow, "A").Interior.ColorIndex = 3  'Set Color to RED
        End If

    Next lRow

End Sub

EXAMPLE

저는 이것을 조사하고 있었고 포 루프를 사용하는 피게의 접근법이 너무 좋았습니다! (현재 VBA를 배우고 있기 때문에)

그러나 다른 열의 "임의" 값을 일치시키려고 한다면 다음과 같은 중첩 루프를 사용하는 것이 어떻습니까?

Sub MatchAndColor()

Dim lastRow As Long
Dim sheetName As String


sheetName = "Sheet1"            'Insert your sheet name here
lastRow = Sheets(sheetName).Range("A" & Rows.Count).End(xlUp).Row

For lRowA = 1 To lastRow         'Loop through all rows
    For lRowB = 1 To lastRow
        If Sheets(sheetName).Cells(lRowA, "A") = Sheets(sheetName).Cells(lRowB, "B") Then

        Sheets(sheetName).Cells(lRowA, "A").Interior.ColorIndex = 3  'Set Color to RED
    End If

Next lRowB
Next lRowA

End Sub

상위 답변에 대해 언급할 수 없지만, Excel은 실제로 추악한 조건부 논리를 추가하지 않고도 이 작업을 수행할 수 있습니다.

조건부 형식은 오류가 아닌 모든 입력에 자동으로 적용되므로 다음과 같은 효과를 얻을 수 있습니다.

=NOT(ISERROR(MATCH(A1,$B$1:$B$1000,0)))

사용:

= MATCH(A1,$B$1:$B$1000,0)))

위의 내용이 데이터에 적용되는 경우 $B$1의 셀과 일치하는 경우 A1이 포맷됩니다.일치하지 않는 항목은 오류를 반환하므로 $B$1000입니다.

언급URL : https://stackoverflow.com/questions/27345379/conditionally-formatting-cells-if-their-value-equals-any-value-of-another-column

반응형