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).

viernes, 14 de mayo de 2010

Generar Números Aleatorios sin Repeticiones



"Necesito generar 10 números aleatorios entre 1 y 20 sin que se repita ninguno ¿Es posible sin hacer uso de VBA?"

Vamos a ver cómo solucionar esta problema sin hacer uso de macros. Para ello vamos a utilizar dos funciones: ALEATORIO y JERARQUIA.

La función ALEATORIO devuelve un número aleatorio mayor o igual que 0 y menor que 1, distribuido uniformemente. Cada vez que se calcula la hoja de cálculo, se devuelve un número aleatorio nuevo. No tiene argumentos por lo que su sintaxis es =ALEATORIO()

La función JERARQUIA puede consultarla en el post Jerarquía de un valor dentro de un rango o matriz.

1. Comenzamos construyendo la siguiente hoja:


2. En el rango B4:B23 vamos a generar 20 números aleatorios. Para ello seleccionamos dicho rango (B4:B23) y con el rango seleccionado comenzamos a escribir la siguiente fórmula:

=ALEATORIO() y pulsamos Ctrl + Enter. De esta manera rellenaremos de una sola atacada todo el rango seleccionado (también podemos escribir la misma fórmula en B4 y después copiar hacia abajo hasta la celda B23). El resultado es el que se muestra en la siguiente figura. Puede comprobar que pulsando la tecla F9 se recalculan todos los números aleatorios.



3. Seleccionamos nuevamente el rango B4:B23 y hacemos clic en el cuadro de nombres (a la izquierda de la barra de fórmulas) y escribimos el nombre Lista, y pulsamos Enter.

4. Nos situamos en la celda E3 y escribimos la fórmula:

=JERARQUIA(B4;lista)

De esta manera excel "ordenará" el valor aleatorio de B4 en función del orden que ocupe entre el 1 y el 20 ¿Por qué entre el 1 y el 20? Pues porque hemos generado 20 números aleatorios recogidos en el nombre de rango lista.

5. Copiamos la fórmula de E3 hacia abajo hasta la celda E12 y problema resuelto.


Pruebe a pulsar la tecla F9 para generar nuevos números aleatorios. Obviamente puede ocultar la columna B si no le interesa que se vean los 20 números aleatorios resultantes.

jueves, 13 de mayo de 2010

Moverse en un Rango sólo con el Ratón


Uno de los blogs de excel que suelo visitar es Bacon Bits. Leyendo su artículo del 10 de mayo he descubierto un nuevo truco que desconocía: la posibilidad de moverte en un rango haciendo doble clics en los bordes de la celda seleccionada. Veámoslo con un sencillo ejemplo. Supongamos que tenemos la siguiente tabla:


Nos encontramos en la celda B4. Si hacemos doble clic en el borde inferior de la celda seleccionada excel nos desplaza a la última celda con contenido por debajo de la celda en la que se encuentra:



Lo mismo podemos hacer hacia la derecha, hacia la izquierda o hacia arriba, haciendo doble clic en el borde derecho, izquierdo o superior respectivamente.

A este truco le podemos "sacar un poco más de jugo" si pulsamos la tecla Shift mientras realizamos el doble clic. De esta forma seleccionaremos áreas a la derecha, izquierda, arriba o abajo rápidamente.

miércoles, 5 de mayo de 2010

Número de Días de un Mes


"Tengo una tabla con fechas y para periodificar unos datos necesito que a la derecha de la fecha me aparezca el número de días que tiene el mes de dicha fecha ¿Alguna solución sencilla?"

Por supuesto no problemo. Veamos el ejemplo de partida:


La solución es bien sencilla utilizando las funciones DIA y FIN.MES . En concreto vamos a anidar FIN.MES dentro de la función DIA. Seguimos los siguientes pasos:

1. En la celda C3 escribimos la siguiente fórmula:

=FIN.MES(B3;0)

La función FIN.MES tiene dos argumentos: Fecha_inicial y Meses. Fecha_inicial es el número de serie que representa la fecha inicial; Meses es el número de meses antes o después de la Fecha_inicial. En nuestro caso la fecha inicial es la fecha en cuestión que nos interesa y, por lo tanto, hay que añadirle cero meses. De esta manera la fórmula indicada calculará el último día del mes de la celda B3. Si ahora anidamos esta fórmula dentro de la función DIA (que nos devuelve el número de día de una fecha en concreto) ya tendremos el número de días del mes de la fecha en cuestión.

2. En la celda C3 añadimos a la fórmula que teníamos la función DIA. Debe quedar como sigue:

=DIA(FIN.MES(B3;0))

3. Nos situamos en la parte inferior derecha de la celda C3 y hacemos doble clic (copiado inteligente) para rellenar el resto de celdas. El resultado obtenido será el buscado: