Diferentes personas ingresan datos de diferentes maneras. Cuando ingresa información en una celda, Excel intenta averiguar qué tipo de información está ingresando. Si ingresa un número como 08242020, Excel asume que está ingresando un valor numérico y lo trata en consecuencia. ¿Qué pasa si el número que ingresa en realidad es una fecha, sin separadores? ¿Puede Excel entender lo que está ingresando?

Desafortunadamente, Excel no puede. ¿Por qué? Porque no le ha dado ninguna indicación de que debería ser una fecha. (Claves de Excel en separadores, no en valores numéricos). Si usted o las personas que ingresan datos no pueden cambiar sus hábitos de ingreso de modo que también se ingresen separadores, entonces necesitará algún tipo de solución alternativa para convertir la información ingresada en un valor de fecha real .

Su primer pensamiento podría ser que podría usar un formato personalizado para mostrar la información. Considere el siguiente formato personalizado:

##"/"##"/"####

Este formato mostraría el número 08142020 como 8/14/2020. El único problema es que solo cambia la visualización del número; si desea usar la fecha como una fecha real de Excel, no puede hacerlo porque no ha convertido el valor en algo que Excel reconoce como una fecha.

Si los valores ingresados ​​fueron muy consistentes en su formato, y si fueron ingresados ​​como texto en lugar de valores numéricos, entonces existe una manera fácil de convertirlos a fechas. Por muy consistente, quiero decir que la entrada siempre usó dos dígitos para el mes, dos para el día y cuatro para el año. Además, las celdas que contienen los valores deben tener formato de texto. En este caso, puede seguir estos pasos:

  1. Seleccione la columna de fechas.

  2. Asegúrese de que no haya nada en la columna a la derecha de las fechas.

  3. Elija Texto a columnas en la pestaña Datos de la cinta en el grupo Herramientas de datos. Excel muestra el Asistente para convertir texto en columnas. (Ver figura 1)

  4. Seleccione la opción Ancho fijo, luego haga clic en Siguiente.

  5. Haga clic en Siguiente nuevamente.

  6. En el área Formato de datos de columna, elija Fecha.

  7. Seleccione el rango en el cuadro Destino, luego, en la hoja de trabajo, haga clic en la celda a la derecha del primer valor que seleccionó en el paso 1.

  8. Haga clic en Finalizar.

Si todo salió bien, Excel debería haber analizado los valores de texto como fechas y puede eliminar la columna original. Si esto no funcionó, significa que los valores originales no se formatearon como texto o no se usaron ocho dígitos para ingresar todas las fechas.

Otra posible solución es usar una fórmula para convertir los valores ingresados ​​en fechas reales. La siguiente es una de esas fórmulas:

=DATE(RIGHT(A1,4),LEFT(A1,IF(LEN(A1) = 8,2,1)),LEFT(RIGHT(A1,6),2))

Esta fórmula asume que la fecha ingresada (la que no tiene separadores)

está en la celda A1. La fórmula funcionará con fechas de siete u ocho dígitos.

Si prefiere funciones personalizadas, puede crear una en VBA que examine los datos que se pasan, los convierta a un formato de fecha / hora y luego devuelva el resultado. La siguiente función es muy versátil en este sentido; funcionará con formatos de fecha estadounidenses y europeos:

Function DateTime(dblDateTime As Double, _   Optional bAmerican As Boolean = True)



' Converts Date and time "number" without ' delimiters into an Excel serial number (which ' can then be formatted with the Excel ' date/time formats)



' If optional argument is TRUE (or missing), ' function assumes value is of form:

'    [m]mddyyyy.hhmm  (leading "0" not required)



' If optional argument is FALSE, function ' assumes value is of form:

'    [d]dmmyyyy.hhmm  (leading "0" not required)



Dim iYear As Integer     Dim iMonth As Integer     Dim iDay As Integer     Dim iHour As Integer     Dim iMin As Integer

iYear = Int((dblDateTime / 10000 - _       Int(dblDateTime / 10000)) * 10000)

iDay = Int((dblDateTime / 1000000 - _       Int(dblDateTime / 1000000)) * 100)

iMonth = Int((dblDateTime / 1000000))

iHour = Int((dblDateTime - Int(dblDateTime)) * 100)

iMin = Int((dblDateTime  100 - _       Int(dblDateTime  100)) * 100 + 0.5)



If bAmerican Then         DateTime = DateSerial(iYear, iMonth, iDay)

Else         DateTime = DateSerial(iYear, iDay, iMonth)

End If

DateTime = DateTime + (iHour + iMin / 60) / 24 End Function

Esta función de macro asume que los datos que se le pasan son un valor numérico, como sucedería normalmente al ingresar fechas sin separadores. (Refiérase a la lógica de esto al principio de la sugerencia).

Como puede ver, existen varias soluciones, pero ninguna es tan simple como ingresar separadores al ingresar las fechas. Si le resulta difícil capacitarse a usted mismo oa las personas que ingresan datos para hacer esto, podría considerar configurar algunas reglas de validación de datos para las celdas de entrada. Estas reglas pueden verificar para asegurarse de que está ingresando información usando un formato específico (como una fecha con separadores) y detenerlo si no es así. (La forma de crear reglas de validación de datos se ha tratado en otros temas de ExcelTips.)

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (11400) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Entering_Dates_without_Separators [Ingresando fechas sin separadores].