Native Formel zum Überprüfen, ob der Bereich nicht leerer Zellen gleich ist

Native Formel zum Überprüfen, ob der Bereich nicht leerer Zellen gleich ist

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

Bildbeschreibung hier eingeben

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.

verwandte Informationen