LibreOffice Calc SEARCH y FIND funciones

4

Estoy tratando de procesar algunos datos en Calc. Uno de los pasos consiste en encontrar si una cadena determinada forma parte de una columna. Intenté usar las funciones FIND y SEARCH. Ambos se comportan de la misma manera y no estoy obteniendo resultados correctos.

P.ej. Digamos que tengo las siguientes cadenas en la columna A

NY
SF
LON
CAN
US

y estoy tratando de poner la siguiente fórmula en la columna C

=SEARCH("NY",A2)

El resultado es: la celda C2 tendrá 1 (lo que es correcto) pero si se copia la misma fórmula a otras celdas en la columna C - me da "#VALUE!" error y soy incapaz de averiguar por qué?

¿Alguien tiene alguna idea?

TTT
fuente

Respuestas:

5

El resultado #VALUE! es el resultado predeterminado si la búsqueda falla (ver el Documentación de OpenOffice.org Calc sobre la función de BÚSQUEDA ). Como todas las demás cadenas no contienen "NY", ese es el resultado correcto para esas celdas.

Supongo que confundió el resultado "1" con un resultado "booleano", mientras que una búsqueda fallida daría como resultado "0". Pero este no es el caso. los documentación mencionada tiene algunos ejemplos que involucran ES NÚMERO y Iserror Para evaluar el resultado de la función de BÚSQUEDA.

tohuwawohu
fuente
2

En primer lugar, si desea buscar un texto en varias filas / columnas, debe proporcionar un rango de celdas, no solo una celda: A2:A6, o mejor $A$2:$A$6.

En segundo lugar, cuando copia, pega o traduce una fórmula de celda a otra, $ cuenta como una coordenada constante. Digamos que pones la fórmula en C2. Ese copiado a C3 le dará =SEARCH("NY",A3). Si copia eso a D2, el valor sería =SEARCH("NY",B2).

Por lo que leí en la ayuda de Libre Office, las funciones FIND y SEARCH buscan un texto dentro de otro texto, y supongo que coincide con el valor en la primera línea del rango que das. Así que estas funciones no hacen lo que esperabas.

Hice algunas investigaciones (probando diferentes cosas), y parece que lo mejor es usar MATCH función para comprobar si existe un valor en un rango de celdas y OFFSET para obtener el valor impreso y no el índice en el rango.

=OFFSET($A$2; MATCH("SF";$A$2:$A$6; 0) - 1; 0)
tony gil
fuente