비 공백 셀 범위가 동일한 지 확인하는 기본 수식


2

세 개의 셀이 있는데 그 조합은 비어 있습니다. 공백이 아닌 모든 셀이 같은지 확인하고 싶습니다. 셀 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

@Steven TRUE는 수식의 역학이 수식 자체와 동일하다는 것을 나타 내기 때문에 좋습니다.
oscilatingcretin

@Kyle Googling. 다음 단계는 VBA 매크로를 작성하는 것입니다.
oscilatingcretin

답변:


3

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

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

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


이 솔루션은 대소 문자를 구분하지 않습니다 (예 : a = A).
Steven

인상적! 작동합니다. 배열 함수 주위에 머리를 감싸려고했지만 아무 소용이 없습니다. 복사 / 붙여 넣기 / 수정할 수는 있지만 쓸 수는 없습니다. 언젠가는. 내 특정 요구에는 대 / 소문자 구분이 필요하지 않지만 다른 사람이 할 수 있다고 생각합니다. 대답으로 표시하기 전에이 부분을 조금 돌리도록하겠습니다.
oscilatingcretin

@oscilatingcretin 당신이 그것을 기쁘게 생각합니다. 배열 수식은 동일한 크기의 범위 또는 배열 중 하나 이상을 취하고 배열 / 범위의 요소 수만큼 수식을 계산하고 동일한 크기의 배열을 반환한다는 것이 빠르고 더럽습니다. 그렇기 때문에 일반적으로 SUM ()과 같이 배열을 자연스럽게 처리하는 무언가에 결과를 제공해야하는 이유입니다.
Kyle

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


이것은 숫자 유형에만 적용됩니다. a, b, a를 시도하십시오. 이 수식은 문자열에서도 작동하지만 숫자 형식에 대해서는 창의적인 방법입니다.
oscilatingcretin

@oscilatingcretin 문자열과 숫자에 대한 VBA가 아닌 솔루션에 대한 업데이트 된 답변을 참조하십시오.
Steven

0

이 작은 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 개의 셀로 구성된 경우 어떻게됩니까? 내 대답에 VBA 솔루션을 게시 한 것처럼 이것을 게시 했으므로 살펴보십시오.
oscilatingcretin

2
@oscilatingcretin 내 코드는 3 개의 셀을 지정하는 원래 Post를 충족시킵니다 .
게리의 학생

문자 그대로 접근하는 것이 아니라 항상 역동적으로 생각해야합니다. 또한 더 많은 코드로 구성되어 있으며 확장 할 수없는 것도보십시오.
oscilatingcretin

@oscilatingcretin 나는 당신의 코드도 좋아합니다.
게리의 학생

0

시험:

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

기본적으로 비 공백 셀 수를 계산합니다. 첫 번째 셀과 일치하는 셀 수를 계산하십시오. 그것들이 동일하면 모두 동일해야합니다. 두 번째 COUNTIF에 대해 누가 계산하는지는 중요하지 않습니다 ... 모두 동일하지 않으면 COUNTA와 같지 않을 것이므로;)

[편집] 첫 번째 셀이 비어 있으면 .. 대신 다음을 시도하십시오.

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

COUNTIF에서 체크인 할 첫 번째 공백이 아닌 셀을 찾으려고 시도합니다.


1
그러나 A1이 비어 있으면 어떻게됩니까?
oscilatingcretin

흠, 귀여워 .. 일반적으로 빈 셀은 나중에 첫 번째 셀이 아니라 나중에 .. 네, 첫 번째 비 블랭크 셀을 찾아야합니다.
Ditto
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.