비어 있지 않은 셀의 범위가 동일한지 확인하는 기본 수식

비어 있지 않은 셀의 범위가 동일한지 확인하는 기본 수식

세 개의 셀이 있는데 어떤 조합이라도 비워둘 수 있습니다. 비어 있지 않은 모든 셀이 동일한지 확인하고 싶습니다. 셀 1과 2에 값이 있고 셀 3이 비어 있는 경우 셀 1과 2가 같으면 수식이 TRUE를 반환하도록 하고 싶습니다.

없는 경우토종의이에 대한 공식을 작성하고 나면 VBA 매크로를 작성하겠습니다.

업데이트: 실제로 VBA 매크로를 작성하는 것이 더 빨랐습니다. 저는 .NET/C# 개발자이고 예전의 VBA를 많이 잊어버렸기 때문에 여기에서 코드를 개선할 수 있는 기회가 있습니다(특히 반환 값 설정 및 함수 종료).

Public Function NonblankValuesAreEqual(cells As Range) As Boolean

Dim lastval As String

lastval = cells(1).Value

For i = 2 To cells.Count
    If lastval <> "" Then
        If cells(i).Value <> "" Then
            If cells(i).Value <> lastval Then
                NonblankValuesAreEqual = False
                Exit Function
            End If
        End If
    End If
    lastval = cells(i).Value
Next

NonblankValuesAreEqual = True

End Function

답변1

이미 매크로를 사용하여 스스로 답했지만 여기에는 VBA가 아닌 솔루션이 있습니다. 이는 배열 수식이므로 ctrl+shift+enter로 확인해야 합니다.

=(SUM(IFERROR(1/COUNTIF(A1:A3,A1:A3),0))=1)

이 수식은 빈 셀을 무시하면서 범위에 있는 고유 값의 수를 계산합니다. 고유 값의 수가 1이면 모든 값이 동일하며 수식은 TRUE를 반환합니다. 귀하의 질문에 지정되지 않은 유일한 것은 모든 셀이 비어 있는 경우 수행할 작업입니다. 현재 수식은 TRUE를 반환하지만 이를 변경하기 위해 몇 가지 추가 논리를 추가하는 것은 쉽습니다.

답변2

각 열 쌍이 정확히 동일한지(대소문자 구분) 또는 공백이 포함되어 있는지 확인하세요.

=OR(EXACT(A2,B2),ISBLANK(A2),ISBLANK(B2))
=OR(EXACT(A2,C2),ISBLANK(A2),ISBLANK(C2))
=OR(EXACT(B2,C2),ISBLANK(B2),ISBLANK(C2))

=AND(D2:F2)

예:

A   B   C   AB      AC      BC      AND
1   1   1   TRUE    TRUE    TRUE    TRUE
1   1       TRUE    TRUE    TRUE    TRUE
A           TRUE    TRUE    TRUE    TRUE
    A       TRUE    TRUE    TRUE    TRUE
        A   TRUE    TRUE    TRUE    TRUE
a   A   a   FALSE   TRUE    FALSE   FALSE
a   a       TRUE    TRUE    TRUE    TRUE
a       2   TRUE    FALSE   TRUE    FALSE
    A   A   TRUE    TRUE    TRUE    TRUE
A       A   TRUE    TRUE    TRUE    TRUE
    A   B   TRUE    TRUE    FALSE   FALSE
A   B   C   FALSE   FALSE   FALSE   FALSE

참고: 더 큰 세트의 경우 인접한 열의 수가 크게 늘어납니다. n! / 2

답변3

이것을 작게 시도해 보세요UDF():

Public Function EqualTest(r1 As Range, r2 As Range, r3 As Range) As Variant
   Dim BlankCount As Long, v1 As Variant, v2 As Variant, v3 As Variant
   v1 = r1.Value
   v2 = r2.Value
   v3 = r3.Value
   BlankCount = 0
   If v1 = "" Then BlankCount = BlankCount + 1
   If v2 = "" Then BlankCount = BlankCount + 1
   If v3 = "" Then BlankCount = BlankCount + 1

   If BlankCount > 1 Then
      EqualTest = True
      Exit Function
   End If

   If BlankCount = 0 Then
      If v1 = v2 And v1 = v3 And v2 = v3 Then
         EqualTest = True
         Exit Function
      Else
         EqualTest = False
         Exit Function
      End If
   End If

   If v1 = v2 Or v1 = v3 Or v2 = v3 Then
      EqualTest = True
   Else
      EqualTest = False
   End If
End Function

여기에 이미지 설명을 입력하세요

메모:

셀은 연속적일 필요는 없으며UDF()숫자 셀과 텍스트 셀 모두에서 작동합니다.

답변4

노력하다:

=COUNTA(A:A)=COUNTIF(A:A,A1)

기본적으로 비어 있지 않은 셀의 수를 계산합니다. 첫 번째 셀과 일치하는 셀 수를 계산합니다. 그것이 동일하다면 모두 동일해야 합니다. 두 번째 COUNTIF에 누구를 포함하는지는 중요하지 않습니다. 모두 동일하지 않으면 COUNTA와 동일하지 않을 가능성이 높기 때문입니다.)

[편집] 첫 번째 셀이 비어 있을 수 있는 경우 .. 대신 다음을 시도해 보십시오.

=COUNTA(A:A)=COUNTIF(A:A,VLOOKUP("*",A:A,1,FALSE))

COUNTIF에서 확인할 비어 있지 않은 첫 번째 셀을 찾으려고 시도합니다.

관련 정보