miércoles, 16 de noviembre de 2011

Evitar Espacios Innecesarios al Introducir Textos

"Quisiera saber si hay alguna manera de evitar que por descuido se puedan introducir espacios al principio y al final de una introducción de texto en una celda de Excel y de igual forma impedir que se introduzca más de un espacio entre dos palabras".

Vamos a resolver este problema de una manera bien sencilla con dos funciones (ESPACIOS y LARGO) y una herramienta (Validación de datos). Partimos del siguiente ejemplo:


Lo que queremos conseguir es que si al introducir texto en las celdas de entrada (en este ejemplo rango B3:B7) introducimos espacios en blanco, ya sea al principio, al final o en el medio excel nos devuelva un mensaje de error y no nos permita continuar hasta que corrijamos dicho problema. Como se puede ver en la siguiente imagen, si introducimos espacios innecesarios en la entrada de texto, excel nos devuelve el mensaje de error correspondiente:


Para conseguir esto tenemos que seguir los siguientes pasos:

1. Seleccionamos el rango B3:B7
2. Vamos al menú Datos/Validación de datos
3. En Criterio de validación/Permitir seleccionamos la opción de Longitud de texto.
4. En Criterio de validación/Datos seleccionamos Igual a.
5. En Criterio de validación/Longitud escribimos la siguiente fórmula:

=LARGO(ESPACIOS(B3))


6. En la pestaña de Mensaje de error seleccionamos el Estilo Límite o Grave (según la versión) y personalizamos el mensaje que queremos que aparezca si cometemos un error.


Espacios(B3) quita todos los espacios del texto excepto los espacios entre palabras. La función Largo cuenta el número de caracteres que hay en una celda. Al anidar la función Espacios dentro de la función Largo LARGO(ESPACIOS(B3)) lo que estamos haciendo es calcular el número de caracteres que tiene una entrada de texto una vez hecha la limpieza de espacios en blanco innecesarios. Si dicho número coincide con la longitud del texto que introducimos en B3 entonces significará que no hay espacios en blanco y que, por lo tanto, la entrada es correcta. Si por el contrario el número de caracteres que tiene la entrada de texto difiere del calculado por la fórmula explicada entonces sólo puede ser debido a que existan espacios en blanco que deben ser corregidos.

sábado, 3 de septiembre de 2011

Cálculo Acumulados con Referencias Mixtas

"Me gustaría me dijeses como puedo realizar acumulados parciales para poder compararlos. Me explico; tengo una hoja con las ventas realizadas, en las columnas los meses y el total año, y en las filas los años (2009, 2010, 2011...). Me gustaría hacer otra columna que acumule parcialmente al último dato introducido, es decir, si el último dato que tengo es agosto 2011, que en la columna de acumulado me refleje el acumulado por año al mes de agosto para poder comparar un año con otro".

La solución es bastante sencilla utilizando un condicional y las Referencias Mixtas dentro de la función SUMA. Empecemos por el ejemplo de partida:


Lo que queremos conseguir es replicar la tabla de la imagen pero que vaya presentando la cifra de ventas acumulada para cada mes de cada año, a medida que vayamos introduciendo nuevos datos. Para ello primero creamos la tabla que se muestra a continuación:


Nos situamos en la celda H5 y escribimos la siguiente y única fórmula (cosa posible gracias al correcto uso de las referencias mixtas):

=SI($E5="";"";SUMA(B$5:B5))

Podemos copiar esta fórmula para el resto de la tabla y problema resuelto. Cuando vayamos introduciendo el último dato de ventas, en nuestro ejemplo agosto 2011, nos irá mostrando las cifras de ventas acumuladas para los distintos años y meses hasta agosto 2011:

sábado, 19 de marzo de 2011

Sumar Matrices

"Me gustaría saber qué métodos se pueden aplicar para sumar y restar matrices".

Básicamente podemos utilizar dos métodos. Cualquiera de los dos son muy sencillos. A saber:
1. Con la función SUMA
2. Fórmula Matricial

Supongamos que partimos del siguiente ejemplo:


Queremos proceder a sumar las cuatro matrices M1+M2+M3+M4. Utilizando el método más conocido simplemente nos situamos en la celda F24 y escribimos la fórmula (podemos utilizar la selección discontinua para seleccionar dichas celdas):

=SUMA(B3;B10;F3;F10)

Posteriormente copiamos esta fórmula hasta la celda H24 y finalmente la copiamos hacia abajo hasta la celda H28.

También podemos resolver esta suma utilizando fórmulas matriciales. Para ello nos situamos en la celda F17 y seleccionamos el rango F17:H21. Con el rango seleccionado escribimos la fórmula:

=B3:D7+B10:D14+F3:H7+F10:H14

y finalizamos pulsando (ya que se trata de entrada matricial) ctrl + shift + enter.

jueves, 17 de marzo de 2011

Alinear Números en Base a los Decimales

"Necesito alinear los números de diversas celdas en base a los decimales (tres en concreto) y no como los presenta por defecto excel ¿es posible?"
Por supuesto que es posible y de una manera bastante sencilla. Para resolver esta cuestión simplemente vamos a personalizar el formato de celdas. Partimos del ejemplo mostrado en la columna B de la siguiente figura y queremos conseguir lo que se muestra en la columna D:




Para ello seleccionamos las celdas a las que que queremos cambiar el formato, en nuestro ejemplo seleccionamos el rango B4:B6 y pulsando el botón derecho del ratón accedemos a Formato de Celdas. Dentro de la pestaña Número seleccionamos la Categoría Personalizada. En Tipo escribimos lo siguiente: 0,???



Tras pulsar Aceptar tendremos los números del rango seleccionado alineados en base a los decimales (mostrará 3 decimales ya que hemos utilizado 3 interrogantes).

domingo, 6 de marzo de 2011

Años, Meses y Días Transcurridos entre Fechas

"Necesito calcular los años, meses y días transcurridos desde una fecha concreta hasta hoy".

La solución es bastante sencilla utilizando, en términos de John Walkenbach, la función misteriosa de Excel, esto es, SIFECHA. Dicha función no aparece en la lista de funciones desplegables de la categoría Fecha y Hora. Tampoco aparece en el cuadro de diálogo Insertar Función, por lo que tendremos que introducirla manualmente ¿Por qué? Los caminos de Microsoft son inescrutables... Lo cierto es que se trata de una función muy útil que paso a describir:

=SiFECHA(Fecha_Inicial;Fecha_Final;Argumento_tiempo)

Los dos primeros argumentos no requieren explicación mientras que el tercer argumento se trata de un código que representa la unidad de tiempo que nos interesa. A saber:

"Y" Devolverá el número de años completos entre fecha inicial y fecha final.
"M" Devolverá el número de meses completos totales entre fecha inicial y fecha final.
"D" Devolverá el número de días totales entre fecha inicial y fecha final.

"YM" Devolverá los meses transcurridos entre las fechas y que no completen un año.
"MD" Devolverá los días del mes entre fechas que no completen un mes.
"YD" Devolverá los días entre fechas que no completen un año.

Partimos del siguiente ejemplo y entrada de datos:


Nos situamos en la celda C5 y escribimos la fórmula que calculará el número de años enteros transcurridos entre la fecha inicial y la fecha final:

=SIFECHA($C$2;$C$3;"Y")


Una vez hecho esto, y dado que hemos colocado referencias absolutas a la fecha inicial y a la fecha final, podemos copiar hacia abajo hasta la celda C7 y simplemente modificar después el tercer argumento en la fórmulas de C6 y C7. A saber:

En C6 =SIFECHA($C$2;$C$3;"YM") que nos devuelve el número de meses transcurridos entre las fechas y que no completan un año.

En C7 =SIFECHA($C$2;$C$3;"MD") que nos devuelve el número de días que no completan un mes.


Si queremos que aparezca el resultado completo en una sola celda entonces deberemos utilizar la función CONCATENAR (usaremos el operador &) para unir las distintas partes de la ecuación. En la celda B9 escribimos la siguiente fórmula:



A continuación puedes ver el resultado de aplicar las distintas opciones de argumento de tiempo en nuestro ejemplo: