jueves, 24 de junio de 2010

La función HALLAR en Excel.

Desarrollé hace algún tiempo, a petición de un usuario, un ejercicio con la función ENCONTRAR, en éste mencioné de pasada la función de la que voy a hablar hoy, la función HALLAR.

La sintaxis de la función es:
=HALLAR(texto buscado; dentro de; [comienza la búsqueda en la posición])
Las principales ventajas de esta función son que no distingue entre mayúsculas o minísculas, y permite el uso de los comodines estándar de Excel (? y * para un único caracter o una secuencia de ellos).


Veámoslo con un pequeño ejercicio en el que queremos contar cuántos elementos de una lista contienen un concepto:

La función HALLAR en Excel.


Aplicaré la siguiente función para HALLAR los productos que contengan el concepto 'HOJA'; observemos que este concepto lo encontramos escrito de diferentes maneras (Hoja, hojas, HOJA):
=HALLAR("hoja";A2;1)
obteniendo el siguiente resultado (llógicamente para aquellos productos que no encuentra nada la función nos devuelve un error #¡VALOR!):

La función HALLAR en Excel.


veámos la diferencia de resultados con la función ENCONTRAR:

La función HALLAR en Excel.


La función ENCONTRAR sólo devuelve un valor si la coincidencia es exacta en cuanto a mayúsculas y minísculas.


Sólo queda contar el número de productos que contienen el concepto buscado, para ello aplicamos la función anidada:
=ESERROR(HALLAR("hoja";A2;1))
y sobre el rango resultante, en la celda D9, haremos el conteo
=CONTAR.SI(D2:D8;"FALSO")

La función HALLAR en Excel.

32 comentarios:

  1. Interesante, MI APORTACIÓN. Se puede mejorar para que en lugar de visualizar #¡VALOR!, se muestre la celda vacía, sería así:

    =SI(ESERROR(HALLAR("hoja";A2;1));"";HALLAR("hoja";A2;1))

    ResponderEliminar
    Respuestas
    1. muchas gracias muy util

      Eliminar
  2. Gracias por el aporte Finart,
    efectivamente el método es válido para ocultar los errores, pero en este caso es precisamente el error lo que buscamos para poder contabilizar las coincidencias.
    Un saludo y muchas gracias por la aportación.

    ResponderEliminar
  3. Necesito un poco de ayuda como hago para que en una hoja busque jale los datos de otra hoja con solo buscar o poner un datos

    ResponderEliminar
  4. Hola,
    seguro que conoces la función BUSCARV, con ella podrás, en base a un valor buscado, traer los datos que necesites de cualquier otro lugar o de otra hoja.
    La sintáxis es:
    =BUSCARV(valor buscado; rango donde buscar; columna de datos a devolver; 0)
    Espero te sirva... poco más te puedo ayudar con los datos que aportas.
    Slds

    ResponderEliminar
  5. y con esa funcion de hallar/encontrar se puede hacer lo siguiente: en la columna A pongo la palabra "consig." en la B un valor correspondiente a esa palabra y en la C la funcion que evalue si dice "consig." sume una celda con otra y si no que no sume, es posible???

    ResponderEliminar
  6. Hola, buenos días.
    no sé a que celdas te refieres que sume con lo de 'una celda con otra'. Pero intuyo que necesitas algo así, en la celda C1:
    =SI(A1="consig.";B1+ ?;0)
    el interrognate es esa otra celda que quieres sumar.
    Un cordial saludo

    ResponderEliminar
  7. bueno voy a probar esa, pero entonces te lo explico completo,en la columna 'c' pongo los pagos que recibo ya sea en efectivo o consignaciones(a las consignaciones les coloco "CONSIG." y si es efectivo solo un codigo mz10-10...), en las columnas que van de la 'd' hasta la 'i' pongo el valor pagado, de la 'j' a la 'l' pongo los gastos que yo hago y en la 'm' tengo un total de los ingresos-egresos, pero yo quiero agregar otra en la 'n' que me muestre solo lo que tengo en efectivo, entonces era como: solo sumar lo que no tenga la palabra CONSIG.

    ResponderEliminar
  8. Hola,
    envíame el ejemplo a
    excelforo@gmail.com
    y le echo un vistazo
    Slds

    ResponderEliminar
  9. Hay mas ejemplos con hallar donde s eusa el +1 o -1 y el "

    ResponderEliminar
    Respuestas
    1. Hola,
      la función HALLAR plantéa una búsqueda sobre un texto a partir de la posición que indiques, en este caso 1; HALLAR empezando desde -1 te devolvería resultados anormales.
      Slds

      Eliminar
  10. quiero saber como encuentro un valor en una función si tengo lo siguiente 80=0.9*420*X(2-((420*X)/(2*30))) quiero encontrar el menor valor de x como lo hago en excel

    ResponderEliminar
    Respuestas
    1. Hola Francisco,
      para resolver ecuaciones en Excel disponemos de dos herramientas (primas hermanas) que son Buscar objetivo y Solver.

      Puedes ver un ejemplo muy similar al que planteas en:
      http://excelforo.blogspot.com.es/2010/03/raiz-de-una-ecuacion-con-buscar.html
      Slds

      Eliminar
  11. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  12. como utilizo hallar con dos criterios!!!!

    ResponderEliminar
    Respuestas
    1. Hola que tal?
      un gusto saludarte igualmente.

      HALLAR solo admite una cadena de búsqueda.. si necesitas más criterios a buscar (no se me ocurre en qué forma), deberías emplear los comodines de Excel: * y ?

      Un cordial saludo

      Eliminar
  13. hola, tengo el siguiente problema: tengo en la columna A los dineros pedidos, en la columna B si el dinero es "deposito", entregado por mano u otra observacion y en la columna C lo que queda en caja chica. La consulta es como hacer que si en la columna b dice "deposito anticipo sueldo" no descuente en la columna C. No se si me he explicado bien... espero me puedan ayudar

    ResponderEliminar
    Respuestas
    1. Hola Oscar,
      entiendo en la columna C tienes un saldo acumulado por cada movimiento (un saldo corrido), si es así y no quieres sumar aquellos registros con 'depósito', en C2 podrías escribir:
      =C1+si(B2="deposito";0;B2)

      Espero te sirva la idea.
      Slds

      Eliminar
  14. Hola tengo una celda con texto, quiero saber si tiene caracteres incluidos por ejemplo. o , (punto o coma), la funcion hallar solo la he utilizado para buscar un solo carácter o palabra como lo hago para hallar mas de una palabra aunque estén separadas??

    ResponderEliminar
    Respuestas
    1. Hola,
      no se si entiendo bien.
      ¿quieres saber si una celda contiene punto o coma?.
      Si es así, bastaría por ejemplo:
      =o(HALLAR(",";A1)>0;HALLAR(".";A1)>0)
      devolverá verdadero en caso afirmativo..

      Espero te oriente
      Saludos

      Eliminar
    2. Muchas Gracias por responder, eso es lo que necesito pero al copiar la formula solo me trae #¡Valor!, como puedo solucionarlo ya que lo probe en celdas que contenian los caracteres indicados(punto o coma)

      Eliminar
    3. Ismael si modifico la formula y coloco que los dos caracteres sean el mismo si me funciona, a que se deberá este error, por ejemplo la formula la modifique asi como sigue =o(HALLAR(",";A1)>0;HALLAR(",";A1)>0) coloque dos comas en lugar de . y coma y me funciona pero no me sirve as{i, favor tu ayuda

      Eliminar
    4. Hola, prueba con:
      =o(SI.ERROR(HALLAR(",";A1)>0;FALSO);SI.ERROR(HALLAR(".";A1)>0;FALSO))

      Saludos

      Eliminar
  15. Hola una consulta quiero usar la función HALLAR junto a la función SI como puedo hacer en mi caso tengo varias celdas y quiero hallar las palabras que deseo y a la vez que se reemplacen.

    Ejemplo.

    celda A1 - Platano - si(hallar("Platano",A1),"Amarillo")
    celda A2 - Manzana - Si(hallar("Platano",A1),"Amarillo",si(hallar("Manzana",A2),"Rojo",hasta acame me quedo por que me bota error))

    son varias celdas y siempre que informacion de otra hoja y las chanco encima por eso necesito usar la funcion Si

    ResponderEliminar
    Respuestas
    1. Hola Geanfranco,
      en realidad yo diría que la fórmula deberá referirse siempre a la misma celda:
      =Si(hallar("Platano",A1),"Amarillo",si(hallar("Manzana",A1),"Rojo"))
      y luego arrastrar, obtendrías de esta forma un check de si en cada celda aparece una de las palabras buscadas...

      Para reemplazar tendrás que emplear la herramienta Buscar/reemplazar o bien programación...

      Slds

      Eliminar
  16. Buenas tardes:
    Creo que mi problema es mas simple, pero no doy con la solución. Lo que quiero es que si dentro del valor de una celda encuentra un carácter me devuelva 1 o 0 en caso negativo (no que me indique el lugar como hace HALLAR).
    Te pongo un ejemplo: Si tengo el valor en un celda de 1X2D4 y quiero que me busque si contiene el valor X, como es verdad en este caso me devuelva el valor 1 (y no el valor 2 como haría la formula HALLAR); si quiero que me busque el valor Z, como es falso que me devuelva el valor 0.
    Gracias por tu gran trabajo.

    ResponderEliminar
    Respuestas
    1. Hola,
      puedes aplicar un condicional:
      =--SI.ERROR(HALLAR("X";celda)>0;0)

      Saludos

      Eliminar
    2. Gracias Ismael:
      Pero no es exactamente lo que quiero. Te explico exactamente lo que intento hacer.
      He creado una Excel para controlar los resultados de una quiniela de futbol. En ella controlo los partidos, los goles que marcan los equipos y automáticamente me da el resultado de la quiniela 1, X o 2.
      Esta celda con resultado es el que quiero comparar con mis apuestas (en el caso de apuesta sencilla de 1, X o 2 es fácil y lo tengo resuelto).
      El problema lo tengo si tengo apuesta múltiple de 1X, 12, X2 o 1X2. Aquí es donde te planteo el problema de que si el resultado del partido es 1, X o 2, lo busque en las celdas de mis apuestas con 1X, 12, X2 o 1X2, y si lo encuentra devuelva el valor 1 (para contabilizar un acierto) y si no lo encuentra el valor 0 (para contabilizar un fallo.
      Espero que te guste el futbol, de lo contrario será un "tostón" para ti.
      Graciasssss

      Eliminar
    3. Hola,
      correcto, así lo había entendido...
      copia la fórmula indicada para cada resultado/partido y obtendrás un 1 o un cero según indicabas:

      =--SI.ERROR(HALLAR(resultado;apuesta)>0;0)

      Saludos

      Eliminar
    4. Ahora siiiiii: PERFECTO
      No se que haría antes mal, ya que la formula que me indicas es la misma.
      Mil gracias por tu ayuda. Eres magnifico.
      Saludos,

      Eliminar
  17. Una cosa mas Ismael (aunque no quiero abusar de tus conocimientos): Una vez que ya tengo todo correcto y que me ha validado el acierto o el error del resultado del partido, quisiera dar un "formato condicional" en caso de acierto. Por ejemplo:
    Si el resultado del partido es un 2 y mi pronostico ha sido de X2, quisiera que solamente el 2 (del pronostico X2) resalte en verde y la X quede en rojo.
    Para pronósticos sencillos de un solo digito es sencillo y lo tengo resuelto, pero cuando es pronostico múltiple no logro conseguirlo, ya que me da el formato a la totalidad de la celda.
    Gracias de nuevo,

    ResponderEliminar
    Respuestas
    1. Hola,
      no es posible tal cosa con el estándar del formato condicional..
      habría que aplicar macros
      ;-)

      Slds

      Eliminar