세 개의 셀이 있는데 어떤 조합이라도 비워둘 수 있습니다. 비어 있지 않은 모든 셀이 동일한지 확인하고 싶습니다. 셀 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에서 확인할 비어 있지 않은 첫 번째 셀을 찾으려고 시도합니다.