Eu tenho três células, qualquer combinação das quais pode ficar em branco. Quero verificar se todas as células não vazias 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 hánativofórmula para isso, escreverei apenas uma macro VBA.
Atualizar: Na verdade, foi mais rápido apenas escrever uma macro VBA. Sou um desenvolvedor .NET/c# e esqueci muito do meu VBA de antigamente, então estou aberto para melhorias em meu código aqui (especialmente configurando 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
Responder1
Você já respondeu com uma macro, mas aqui está uma solução não VBA. É uma fórmula de array e deve ser confirmada com ctrl+shift+enter:
=(SUM(IFERROR(1/COUNTIF(A1:A3,A1:A3),0))=1)
Esta 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á VERDADEIRO. A única coisa que não foi especificada na sua pergunta é o que fazer se todas as células estiverem em branco. No momento, a fórmula retornará TRUE, mas seria fácil adicionar alguma lógica adicional para mudar isso.
Responder2
Verifique se cada par de colunas é exatamente igual (diferencia maiúsculas de minúsculas) ou 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á bastante: n! / 2
Responder3
Experimente este pequenoUDF():
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
OBSERVAÇÃO:
As células não precisam ser contíguas e oUDF()funcionará tanto para células numéricas quanto para células de texto.
Responder4
Tentar:
=COUNTA(A:A)=COUNTIF(A:A,A1)
Basicamente conte o número de células que não estão em branco. Conte o número de células que correspondem à primeira célula. Se forem iguais, então devem ser todos iguais. Realmente não importa quem você conta para o segundo CONT.SE... já que provavelmente não será igual a CONT.SE se não forem todos iguais;)
[editar] se sua primeira célula puder estar em branco. Tente isto:
=COUNTA(A:A)=COUNTIF(A:A,VLOOKUP("*",A:A,1,FALSE))
ele tentará encontrar a primeira célula não vazia para verificar no COUNTIF.