비 공백 셀 범위가 동일한 지 확인하는 기본 수식 대한 기본 수식 이 없으면 VBA 매크로

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



답변

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

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

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


답변

각 열 쌍이 정확히 대소 문자를 구분하는지 또는 공백을 포함하는지 확인하십시오.

=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


답변

이 작은 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 () 는 숫자 셀과 텍스트 셀 모두에서 작동합니다.


답변

시험:

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

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

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

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

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


답변