Fórmula nativa para verificar se o intervalo de células não brancas é igual

2

Eu tenho três células, qualquer combinação das quais pode estar em branco. Quero verificar se todas as células não brancas são iguais. Se as células 1 e 2 tiverem um valor e a célula 3 estiver em branco, quero que a fórmula retorne TRUE se as células 1 e 2 forem iguais.

Se não houver nenhuma fórmula nativa para isso, escreverei apenas uma macro VBA.

Atualização : na verdade, foi mais rápido escrever apenas uma macro VBA. Eu sou um desenvolvedor .NET / c # e esqueci muito do meu VBA de volta no dia, então estou aberto para melhorias no meu código aqui (especialmente definindo o valor de retorno e saindo da função).

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
    
por oscilatingcretin 30.09.2015 / 15:43

4 respostas

3

Você já respondeu a si mesmo com uma macro, mas aqui está uma solução não VBA. É uma fórmula de matriz e deve ser confirmada com ctrl + shift + enter:

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

Essa fórmula conta o número de valores exclusivos em seu intervalo, ignorando as células em branco. Se o número de valores exclusivos for 1, todos os valores serão iguais e a fórmula retornará TRUE. A única coisa que não foi especificada na sua pergunta é o que fazer se cada célula estiver em branco. No momento, a fórmula retornará TRUE, mas seria fácil adicionar alguma lógica adicional para alterar isso.

    
por 30.09.2015 / 16:56
2

Verifique se cada par de colunas é exatamente igual (com distinção entre maiúsculas e minúsculas) ou se contém um espaço em branco.

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

Exemplo:

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 maiores, o número de colunas adjacentes aumentará muito: n! / 2

    
por 30.09.2015 / 15:49
0

Experimente este pequeno 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

NOTA:

As células não precisam ser contíguas e o UDF () funcionará tanto para células numéricas quanto para células de texto.

    
por 30.09.2015 / 16:16
0

Tente:

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

Basicamente, conte o número de células não vazias. Conte o número de células que correspondem à primeira célula. Se esses são os mesmos, então todos devem ser os mesmos. Realmente não importa quem você conta para o 2º COUNTIF ... já que provavelmente não será igual a COUNTA se eles não forem todos iguais;)

[editar] se a sua primeira célula pode ficar em branco .. tente isso:

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

ele tentará encontrar a primeira célula não vazia para fazer o check-in no COUNTIF.

    
por 30.09.2015 / 16:00