LibreOffice Calc funções SEARCH e FIND

4

Estou tentando processar alguns dados no Calc. Um dos passos envolve descobrir se uma determinada string faz parte de uma das colunas. Eu tentei usar as funções FIND e SEARCH. Ambos se comportam da mesma maneira e eu não estou obtendo resultados corretos.

Por exemplo Digamos que eu tenha sequências de caracteres na coluna A

NY
SF
LON
CAN
US

e estou tentando colocar a seguinte fórmula na coluna C

=SEARCH("NY",A2)

O resultado é - a célula C2 terá 1 (o que é correto), mas se a mesma fórmula for copiada para outras células na coluna C - isso me dá "#VALUE!" erro e eu sou incapaz de descobrir o porquê?

Alguém tem alguma ideia?

    
por TTT 20.06.2012 / 14:00

2 respostas

5

O resultado #VALUE! é o resultado padrão se a pesquisa falhar (consulte a OpenOffice.org Documentação do Calc na função SEARCH . Como todas as outras strings não contêm "NY", esse é o resultado correto para essas células.

Suponho que você tenha considerado o resultado "1" como um resultado "booleano", enquanto uma pesquisa com falha resultaria em "0". Mas esse não é o caso. A documentação mencionada tem alguns exemplos envolvendo ISNUMBER e ISERROR para avaliar o resultado da função SEARCH.

    
por 20.06.2012 / 16:51
2

Primeiramente, se você quiser pesquisar um texto em várias linhas / colunas, precisará fornecer um intervalo de células, não apenas uma única célula: A2:A6 ou melhor $A$2:$A$6 .

Em segundo lugar, quando você copia ou traduz uma fórmula de célula para outra, a $ conta como uma coordenada constante. Digamos que você coloque a fórmula em C2. Isso copiado para o C3 dará =SEARCH("NY",A3) . Se você copiou isso para D2, o valor seria =SEARCH("NY",B2) .

Pelo que li na ajuda do Libre Office, as funções FIND e SEARCH pesquisam um texto dentro de outro texto, e acho que ele corresponde ao valor na primeira linha do intervalo que você fornece. Então essas funções não fazem o que você esperava.

Eu fiz algumas pesquisas (tentando coisas diferentes), e parece que sua melhor aposta é usar a função MATCH para verificar se existe um valor em um intervalo de células e OFFSET para obter o valor impresso e não o índice em o intervalo.

=OFFSET($A$2; MATCH("SF";$A$2:$A$6; 0) - 1; 0)
    
por 01.04.2013 / 21:06