Cómo hacemos para escribir fechas sin usar separadores, lo que nos permite agilizar el trabajo?
La idea es que entramos el número 18112006 en una celda y que Excel lo convierta en la fecha 18/11/2006 (día/mes/año).
Veamos las distintas posibilidades.
1 – Usando fórmulas
En este tipo de solución entramos el número en una celda y lo transformamos en fecha en una celda contigua.
En esta tabla, entramos los números en la columna A. En la columna B escribimos la fórmula
=SI(LARGO(A2)=8,FECHA(DERECHA(A2,4),EXTRAE(A2,3,2),IZQUIERDA(A2,2)),FECHA(DERECHA(A2,4),EXTRAE(A2,2,2),IZQUIERDA(A2,1)))
La fórmula básica es FECHA(DERECHA(A2,4),EXTRAE(A2,2,2),IZQUIERDA(A2,1))
Pero dado que el número del cual partimos puede tener 7 u 8 cifras, usamos la función SI.
La ventaja de este método es que los resultados de la fórmula son interpretados por Excel como fechas. Esto nos permite ordenar la lista en orden descendiente o ascendiente de acuerdo a las fechas.
La desventaja es que debemos agregar una columna a nuestro modelo.
También conviene notar que luego de las primeras cuatro entradas, Excel copia la fórmula en la columna B automáticamente.
Otra posibilidad es utilizar la funcionalidad Formulario del menú Datos, después de haber escrito la primer línea
Al usar Formulario Excel no sólo copiará las fórmulas, sino también los formatos.
2 – Usando formato personalizado
En el menú de formato de celdas elegimos la opción Personalizada. En la ventanilla Tipo anotamos lo siguiente:
##\/##\/####
El símbolo "\" lo usamos para forzar a Excel a exhibir "/" como separador en el formato.
Como pueden ver, en la barra de fórmulas aparece el número tal como lo entramos, 21102006, pero Excel lo exhibe en la celda de acuerdo al formato personalizado.
La ventaja de este método es que no hay necesidad de agregar una columna auxiliar a nuestro modelo.
La desventaja es que no podemos ordenar nuestra lista en orden creciente (o decreciente) de acuerdo a la fecha, ya que Excel no convierte nuestras entradas en fechas, como en el método anterior.
3 – Usando Eventos (macros).
Hasta ahora he tocado sólo tangencialmente el tema de las macros en este blog. Pero si queremos un método que reúna las ventajas de los dos anteriores, tenemos que echar mano a las macros (Vba).
Eventos son un tipo especial de macros que, como su nombre lo indica, entran en acción cuando sucede algún evento en el objeto al que se refieren.
En nuestro caso usaremos el evento Worksheet_Change ligado a la hoja de cálculos específica (que hemos llamado Evento).
Para acceder a este módulo apuntamos a la pestaña con el nombre de la hoja y con un clic del botón derecho del mouse abrimos el menú, donde seleccionamos Ver Código.
Otra posibilidad es abrir el editor de Vba (Alt+F11) y activar la hoja correspondiente en el panel Vba Project:
En el módulo de VBa copiamos esta rutina
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngData As Range
Set rngData = Range("A2:A65536")
On Error Resume Next
If Union(Target, rngData).Address = rngData.Address Then
Application.EnableEvents = False
Target.ClearFormats
Select Case Len(Target)
Case 8
Target = DateSerial(Right(Target, 4), Mid(Target, 3, 2), Left(Target, 2))
Case 7
Target = DateSerial(Right(Target, 4), Mid(Target, 2, 2), Left(Target, 1))
Case Else
MsgBox "Entrada Incorrecta"
End Select
Application.EnableEvents = True
End If
On Error GoTo 0
End Sub
Este rutina hace que cada vez que escribimos algo en una celda del rango A2:A65536 (dejamos la celda A1 disponible para el encabezamiento de la columna), Excel evalúe si es un número de 7 u 8 cifras. De serlo, lo convierte en fecha tomando los últimas cuatro cifras par el año, las dos del medio para el mes y la primera o las dos primeras para el día.
La ventaja de este método es que usamos sólo una columna y que tenemos un control cuando ingresamos un número incorrecto.
La desventaja es que se requiere ciertos conocimientos de macros (Vba) para implementarlo.
Categorías: Varios_
Technorati Tags: Excel