Ich habe drei Zellen, die in jeder beliebigen Kombination leer sein können. Ich möchte prüfen, ob alle nicht leeren Zellen gleich sind. Wenn die Zellen 1 und 2 einen Wert haben und Zelle 3 leer ist, soll die Formel WAHR zurückgeben, wenn die Zellen 1 und 2 gleich sind.
Wenn keineeinheimischFormel dafür, dann werde ich einfach ein VBA-Makro schreiben.
Aktualisieren: Es ging tatsächlich schneller, einfach ein VBA-Makro zu schreiben. Ich bin ein .NET/C#-Entwickler und habe viel von meinem VBA von damals vergessen, daher bin ich offen für Verbesserungen an meinem Code hier (insbesondere das Festlegen des Rückgabewerts und das Beenden der Funktion).
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
Antwort1
Sie haben sich die Frage bereits selbst mit einem Makro beantwortet, aber hier ist eine Nicht-VBA-Lösung. Es handelt sich um eine Array-Formel, die mit Strg+Umschalt+Eingabe bestätigt werden muss:
=(SUM(IFERROR(1/COUNTIF(A1:A3,A1:A3),0))=1)
Diese Formel zählt die Anzahl der eindeutigen Werte in Ihrem Bereich und ignoriert dabei leere Zellen. Wenn die Anzahl der eindeutigen Werte 1 ist, ist jeder Wert gleich und die Formel gibt WAHR zurück. Das Einzige, was in Ihrer Frage nicht angegeben wurde, ist, was zu tun ist, wenn alle Zellen leer sind. Im Moment gibt die Formel WAHR zurück, aber es wäre einfach, eine zusätzliche Logik hinzuzufügen, um das zu ändern.
Antwort2
Überprüfen Sie, ob alle Spaltenpaare exakt gleich sind (Groß-/Kleinschreibung beachten) oder ein Leerzeichen enthalten.
=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)
Beispiel:
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
Hinweis: Bei größeren Mengen erhöht sich die Anzahl der benachbarten Spalten erheblich: n! / 2
Antwort3
Versuchen Sie dieses kleineUDF():
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
NOTIZ:
Die Zellen müssen nicht aneinandergrenzen und dieUDF()funktioniert sowohl für numerische als auch für Textzellen.
Antwort4
Versuchen:
=COUNTA(A:A)=COUNTIF(A:A,A1)
Zählen Sie grundsätzlich die Anzahl der nicht leeren Zellen. Zählen Sie die Anzahl der Zellen, die mit der ersten Zelle übereinstimmen. Wenn diese gleich sind, müssen sie alle gleich sein. Es ist nicht wirklich wichtig, wen Sie für das zweite ZÄHLENWENN zählen ... da es wahrscheinlich nicht gleich ZÄHLENA sein wird, wenn sie nicht alle gleich sind ;)
[Bearbeiten] Wenn Ihre erste Zelle leer sein könnte, versuchen Sie stattdessen Folgendes:
=COUNTA(A:A)=COUNTIF(A:A,VLOOKUP("*",A:A,1,FALSE))
Es wird versucht, die erste nicht leere Zelle zu finden, um sie im ZÄHLENWENN-Befehl zu überprüfen.