Fórmula nativa para verificar si el rango de celdas que no están en blanco es igual

Fórmula nativa para verificar si el rango de celdas que no están en blanco es igual

Tengo tres celdas, cualquier combinación de las cuales puede estar en blanco. Quiero comprobar si todas las celdas que no están en blanco son iguales. Si las celdas 1 y 2 tienen un valor y la celda 3 está en blanco, quiero que la fórmula devuelva VERDADERO si las celdas 1 y 2 son iguales.

Si no haynativofórmula para esto, entonces simplemente escribiré una macro VBA.

Actualizar: En realidad, fue más rápido escribir simplemente una macro VBA. Soy un desarrollador de .NET/c# y he olvidado gran parte de mi VBA de antaño, por lo que estoy abierto a mejoras en mi código aquí (especialmente configurar el valor de retorno y salir de la función).

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

Respuesta1

Ya te has respondido a ti mismo con una macro, pero aquí tienes una solución que no es VBA. Es una fórmula matricial y debe confirmarse con Ctrl+Mayús+Intro:

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

Esta fórmula cuenta la cantidad de valores únicos en su rango, ignorando las celdas en blanco. Si el número de valores únicos es 1, entonces todos los valores son iguales y la fórmula devuelve VERDADERO. Lo único que no se especificó en su pregunta es qué hacer si todas las celdas están en blanco. En este momento la fórmula devolverá VERDADERO, pero sería fácil agregar alguna lógica adicional para cambiar eso.

Respuesta2

Compruebe si cada par de columnas es exactamente igual (distingue entre mayúsculas y minúsculas) o contiene un espacio en blanco.

=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)

Ejemplo:

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

Nota: Para conjuntos más grandes, el número de columnas adyacentes aumentará considerablemente: n! / 2

Respuesta3

Prueba este pequeñoUDF():

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

ingrese la descripción de la imagen aquí

NOTA:

Las celdas no tienen que ser contiguas y elUDF()funcionará tanto para celdas numéricas como para celdas de texto.

Respuesta4

Intentar:

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

Básicamente, cuente el número de celdas que no están en blanco. Cuente el número de celdas que coinciden con la primera celda. Si son iguales, entonces todos deben ser iguales. Realmente no importa a quién cuentes para el segundo CONTAR.SI... ya que probablemente no será igual a CONTAR si no todos son iguales;)

[editar] si su primera celda podría estar en blanco... intente esto en su lugar:

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

Intentará encontrar la primera celda que no esté en blanco para verificar en CONTAR.SI.

información relacionada