martes, 18 de mayo de 2010

Comparar Cadenas de Texto


"A menudo tengo que comparar más de 500 entradas de texto (listados de nombres y apellidos). Es importante que las columnas que comparo sean idénticas (mayúsculas, tildes, etc...) ¿Es inevitable utilizar condicionales? ¿Hay alguna fórmula sencilla que lo solucione?"

En respuesta a las dos preguntas: No es necesario utilizar condicionales; y sí hay una fórmula muy sencilla que solucione el problema descrito. Empecemos como siempre poniendo un ejemplo:


Para comparar los nombres existentes en la lista 1 y en la lista 2 vamos a utilizar dos métodos distintos. Con el primero vamos a comparar si el texto introducido en, por ejemplo, la celda B4 es el mismo que el introducido en la celda C4, independientemente de si se han escrito con mayúsculas o no. Para ello nos situamos en la celda E4 y escribimos la siguiente fórmula:

=B4=C4

Los resultados posibles ante este tipo de fórmulas son VERDADERO o FALSO. En nuestro caso la solución será VERDADERO ya que el texto de B4 es el mismo que el de C4. Pero si lo que nos interesa es comprobar que si además de contener el mismo texto está escrito exactamente de la misma manera entonces tendremos que utilizar la función IGUAL. Para ello nos situamos en la celda F4 y escribimos:

=IGUAL (B4;C4)

La función IGUAL compara dos cadenas de texto y devuelve VERDADERO si son exactamente iguales y FALSO si no lo son. Esta función diferencia mayúsculas y minúsculas, pero pasa por alto las diferencias de formato. En la siguiente tabla puede ver distintos ejemplos de cadenas de texto y el resultado de aplicar el primer y el segundo método:


Diferenciar entre mayúsculas y minúsculas es una tarea bastante sencilla (aunque, evidentemente, es mejor automatizarla, especialmente si el número de entradas es muy elevado) pero no lo es tanto diferenciar cadenas de texto aparentemente iguales pero que contienen espacios antes o después de dicha cadena (localizar espacios en el medio de una cadena de texto también resulta bastante sencillo, en principio). Para evitar este problema puede utilizar la función ESPACIOS. Esta función elimina los espacios del texto, excepto el espacio normal que se deja entre palabras. Fíjese que las celdas B6 y C6 son aparentemente idénticas. Pero B6 contiene un espacio después del nombre. Para "limpiar" dicho espacio aplique la fórmula ESPACIOS (B6).

15 comentarios:

  1. No sé si es esta la sección indicada, pero quería hacer una pregunta aunque no está relacionado con este post: es el tema de los filtros; imagna que tengo un listado y le aplico a la columna un filtro, entonces, alguna filas que no cumplen la condición en la que se basa el filtro aparecerán ocultas; el problema es que en la columna de al lado o en otra paralela quería insertar otro listado que copie de otra hoja...y el caso es que al haber filas ocultas algunas de las celdas no aparecen...sé que está explicado algo lioso pero, ¿habría alguna forma de que al copiar otro rango apareciera todo seguido y no se viera influenciado por als filas ocultas?.

    Un Saludo

    ResponderEliminar
  2. Hola Miguel. Como bien indicas, el sistema de filtrado que utiliza excel es el de ocultar o mostrar filas. El problema es que al ocultar filas lo hace para todas las columnas de la hoja, por lo que al copiar datos en la columna de al lado o paralela los datos se pegarán pero se mantendrán ocultos hasta que anulemos el filtro.

    ResponderEliminar
  3. bueno mi hermano, la formula es muy sencilla y desde hace meses estoy tratando de hacer lo que explicaste, trate con la funcion "SI" y nada, pero con esto... juela muchas gracias!!!!!!

    ResponderEliminar
  4. me gustaría preguntarte sobre la opción inversa a IGUAL, es decir, comprovar si dos celdas son diferentes. ¿Cómo hacerlo? Gracias

    ResponderEliminar
  5. No existe una función "inversa" a IGUAL. La solución sencilla, que ya te imaginarás, es anidar la función IGUAL dentro de un condicional: =SI(IGUAL(B4;C4)=FALSO;"Valor Diferente";"Valor Idéntico") por ejemplo.

    ResponderEliminar
  6. Hice lo indicado con la función IGUAL, y resulta cuando los textos de las celdas son ingresadas desde el teclado; pero cuando una es ingresada desde el teclado y la otra es una búsqueda (por ejemplo con BUSCARV) entonces sale falso, por más que la pantalla se muestre lo mismo.

    ResponderEliminar
    Respuestas
    1. Lo siento pero no sé en qué circunstancias te da el fallo. Yo lo he vuelto a probar haciendo lo que indicas y me funciona correctamente.

      Eliminar
  7. Como puedo comparar más de dos columnas?????

    ResponderEliminar
    Respuestas
    1. Necesito que me concretes más la pregunta. Por favor escríbeme algún ejemplo de lo que quieres resolver exactamente. Gracias

      Eliminar
  8. necesito comparar si tres o mas columnas son iguales, ejemplo:

    Column 1 Column 2 Column 3

    Falso Falso Falso

    y deseo una funcion que me insique si las tres columnas son iguales

    Gracias

    ResponderEliminar
    Respuestas
    1. Para comparar si tres cadenas de texto en tres columnas son idénticas o no lo podemos hacer de la siguiente manera (suponiendo que el texto esté escrito en C5, D5 y E5):
      =Y(IGUAL(C5;D5);IGUAL(C5;E5)) Esta fórmula devolverá VERDADERO en caso de que las tres sean idénticas (incluyendo mayúsculas y minúsculas) y FALSO en caso de que al menos una no sea idéntica.

      Eliminar
  9. Buenas tardes. Tengo 3 grupos de personas, de 3 personas cada uno. Tengo una columna con los nombres, asociadas a reparaciones que cada uno realizó. Quiero crear una columna en la que se escriba F, G o H según el nombre, dado que tengo definidos esos nombres para cada grupo, o Z en caso que el nombre no sea ninguno de los 9 nombres de los grupos. Como puedo realizarlo?
    Desde ya muchas gracias....

    ResponderEliminar
    Respuestas
    1. Supongamos que tenemos los 3 grupos de nombres (F, G y H) en los rangos
      F4:F6 G4:G6 y H4:H6
      Suponiendo que, por ejemplo, tenemos la columna de datos (de dichos nombres con sus correspondientes cifras) en el rango B3:B21 (y las cifras en C3:C21) la fórmula que debemos aplicar ES MATRICIAL y por lo tanto acabaremos pulsando Ctrl + Shift + Enter y es:
      {=SI(O(B3=$F$4:$F$6);"F";SI(O(B3=$G$4:$G$6);"G";SI(O(B3=$H$4:$H$6);"H";"Z")))}
      Copiando esta fórmula hasta la última entrada conseguiremos el resultado deseado.
      Un saludo

      Eliminar
  10. Buenas Noches, tengo 2 listas de precios de tiendas diferentes con productos iguales pero el descriptivo ordenado de forma diferente en cada lista (tengo 3 columnas en cada lista que son: "Código", "producto" y "precio"); necesito buscar y comparar lineas de textos y encontrar el más similar y que me tire el precio del producto encontrado en una columna, cómo puedo hacerlo? desde ya muchas gracias.

    ResponderEliminar
    Respuestas
    1. Aparentemente podría solucionarse con la función BUSCARV, pero si me mandas un ejemplo de lo que tienes y de lo que quieres conseguir a kiko.rial@gmail.com intento ayudarte más específicamente.

      Eliminar