formato de fechas

13/01/2006 - 18:31 por kauka | Informe spam
Importo datos de diversos sitios (bolsa, datos económicos ...). Se importa
en formato texto - ejemplo
Date,Open,High,Low,Close,Volume,Adj. Close*
12-Jan-06,27.25,27.26,26.97,27.14,45994800,27.14
11-Jan-06,27.01,27.39,26.90,27.29,70120704,27.29
10-Jan-06,26.65,27.02,26.59,27.00,64921900,27.00
9-Jan-06,26.93,27.07,26.76,26.86,55625000,26.86
6-Jan-06,26.89,27.00,26.49,26.91,100963000,26.91
5-Jan-06,26.96,27.13,26.91,26.99,48245500,26.99
4-Jan-06,26.77,27.08,26.77,26.97,57975600,26.97

Vale, hasta aquí ok.

Luego convierto los datos con el asistente para convertir texto en columna
con el fin de distribuir los datos en celdas. Defino la primera columna como
fecha d/m/a. El problema consiste en que no todas las celdas de la primera
columna se convierten en fechas. En el cudro de formato celda si está
definida como fecha dd/mm/aa pero en realidad algunas celdas no responden
como tal cuando se ordenan cronológicamente. ver fechas siguientes:
25/11/05 27.8 27.94 27.47 27.76 44082500 27.76
28/11/05 27.79 27.85 27.53 27.75 57517200 27.75
29/11/05 27.79 27.79 27.6 27.68 62220400 27.68
30/11/05 27.68 27.77 27.63 27.68 55904700 27.68
10-Aug-05 27.41 27.5 26.85 26.95 62818800 26.79
10-Jan-06 26.65 27.02 26.59 27 64921900 27
11-Aug-05 26.98 27.3 26.89 27.27 48646800 27.11
11-Jan-06 27.01 27.39 26.9 27.29 70120704 27.29
las que tienen formato xx/xx/xx si responden como fechas, las xx-mes-xx no.
Y estas últimas son "intratables" ¿Como puedo solucionar esto?
Saludos, gracias.

Preguntas similare

Leer las respuestas

#1 kauka
15/01/2006 - 11:02 | Informe spam
Muchas gracias KL. La verdad es que llevava tiempo con esta incidencia
"idiomática".
Un favor mas: Me podrías decir que significa en la fórmula 1E+300 y tambien
los -- antes de sustituir.

Gracias de nuevo, un saludo,

"KL" escribió:

Hola kauka,

Es logico lo que te ocurre ya que en el formato DD-MMM-YY las unicas diferencias entre la notacion inglesa y la epanola esta en los
meses de enero, abril, agosto y diciembre:

1-ENE-05 Vs. 1-JAN-05
1-ABR-05 Vs. 1-APR-05
1-AGO-05 Vs. 1-AUG-05
1-DIC-05 Vs. 1-DEC-05

prueba usar la siguiente formula:
=BUSCAR(1E+300;--SUSTITUIR(A1;{"Jan";"Apr";"Aug";"Dec"};{"Ene";"Abr";"Ago";"Dic"}))

y luego copiar y pegar solo valores.

Saludos,
KL


"kauka" wrote in message news:
> Importo datos de diversos sitios (bolsa, datos económicos ...). Se importa
> en formato texto - ejemplo
> Date,Open,High,Low,Close,Volume,Adj. Close*
> 12-Jan-06,27.25,27.26,26.97,27.14,45994800,27.14
> 11-Jan-06,27.01,27.39,26.90,27.29,70120704,27.29
> 10-Jan-06,26.65,27.02,26.59,27.00,64921900,27.00
> 9-Jan-06,26.93,27.07,26.76,26.86,55625000,26.86
> 6-Jan-06,26.89,27.00,26.49,26.91,100963000,26.91
> 5-Jan-06,26.96,27.13,26.91,26.99,48245500,26.99
> 4-Jan-06,26.77,27.08,26.77,26.97,57975600,26.97
>
> Vale, hasta aquí ok.
>
> Luego convierto los datos con el asistente para convertir texto en columna
> con el fin de distribuir los datos en celdas. Defino la primera columna como
> fecha d/m/a. El problema consiste en que no todas las celdas de la primera
> columna se convierten en fechas. En el cudro de formato celda si está
> definida como fecha dd/mm/aa pero en realidad algunas celdas no responden
> como tal cuando se ordenan cronológicamente. ver fechas siguientes:
> 25/11/05 27.8 27.94 27.47 27.76 44082500 27.76
> 28/11/05 27.79 27.85 27.53 27.75 57517200 27.75
> 29/11/05 27.79 27.79 27.6 27.68 62220400 27.68
> 30/11/05 27.68 27.77 27.63 27.68 55904700 27.68
> 10-Aug-05 27.41 27.5 26.85 26.95 62818800 26.79
> 10-Jan-06 26.65 27.02 26.59 27 64921900 27
> 11-Aug-05 26.98 27.3 26.89 27.27 48646800 27.11
> 11-Jan-06 27.01 27.39 26.9 27.29 70120704 27.29
> las que tienen formato xx/xx/xx si responden como fechas, las xx-mes-xx no.
> Y estas últimas son "intratables" ¿Como puedo solucionar esto?
> Saludos, gracias.


Respuesta Responder a este mensaje
#2 KL
15/01/2006 - 13:20 | Informe spam
Hola kauka,

=BUSCAR(1E+300;--SUSTITUIR(A1;{"Jan";"Apr";"Aug";"Dec"};{"Ene";"Abr";"Ago";"Dic"}))
que significa en la fórmula 1E+300 ...
los -- antes de sustituir.



1) 1E+300 es un numero proximo [aunque no igual] al mayor valor numerico que esta permitido en Excel (9,99999999999999E307). El
truco consiste en ponerle a la funcion BUSCAR un valor buscado imposible de incontrar. En este caso las funciones de busqueda
BUSCAR, BUSCARV, BUSCARH, COINCIDIR devuelven el ultimo valor numerico en la lista.

2)
- La funcion SUSTITUIR devuelve una cadena de texto o una matriz de cadenas de texto. P.ej. si tenemos en [A1] el texto "1-Aug-2005"
entonces el resultado de sustituir sera la siguiente matriz: {"1-Aug-2005";"1-Aug-2005";"1-Ago-2005";"1-Aug-2005"}. Obviamente las
cadenas Jan", "Apr", "Dec" no estan presentes en el contenido de la celda [A1] por lo que se devolvera su valor sin alteracion,
mientras que la sustitucion de "Aug" por "Ago" si tendra lugar.
- Lo que nosotros necesitamos es un varor de fecha (numerico) y no una cadena de texto. En este caso los dos menos (--) hacen lo
mismo que la funcion VALOR o sea fuerzan la conversion de texto en su correspondiente valor numerico si tal valor existe. Al aplicar
los menos dobles a nuestra matriz resultante obtenemos lo siguiente: {#VALOR!;#VALOR!;38565;#VALOR!}, lo cual quiere decir que solo
un miembro de la matriz es convertible a numero que es el que buscamos. 38565 es el valor numerico para 1-Ago-2005.
- Ahora al aplicar la funcion BUSCAR con un numero imposible nos encontrara el ultimo y el unico valor que hay en la matriz.

3) En caso de una cadena de texto en [A1] que ya es convertible a una fecha valida lo siguiente es lo que ocurre. P.ej. si tenemos
en [A1] el texto "1-Oct-2005" entonces el resultado de sustituir sera la siguiente matriz:
{"1-Oct-2005";"1-Oct-2005";"1-Oct-2005";"1-Oct-2005"}.
- Al aplicar los menos dobles a nuestra matriz resultante obtenemos lo siguiente: {38626;38626;38626;38626}. Evidentemente, todos
los valores de la matriz son igules y ya no importa cual de ellos elija la funcion BUSCAR pero ahora nuestra cadena de texto
original ya estara convertida en valor numerico.

Saludos,
KL
Respuesta Responder a este mensaje
#3 kauka
15/01/2006 - 18:17 | Informe spam
Wow KL. Gracias por la explicación. (Tengo deberes).
Un saludo,

"KL" escribió:

Hola kauka,

>=BUSCAR(1E+300;--SUSTITUIR(A1;{"Jan";"Apr";"Aug";"Dec"};{"Ene";"Abr";"Ago";"Dic"}))
>que significa en la fórmula 1E+300 ...
> los -- antes de sustituir.

1) 1E+300 es un numero proximo [aunque no igual] al mayor valor numerico que esta permitido en Excel (9,99999999999999E307). El
truco consiste en ponerle a la funcion BUSCAR un valor buscado imposible de incontrar. En este caso las funciones de busqueda
BUSCAR, BUSCARV, BUSCARH, COINCIDIR devuelven el ultimo valor numerico en la lista.

2)
- La funcion SUSTITUIR devuelve una cadena de texto o una matriz de cadenas de texto. P.ej. si tenemos en [A1] el texto "1-Aug-2005"
entonces el resultado de sustituir sera la siguiente matriz: {"1-Aug-2005";"1-Aug-2005";"1-Ago-2005";"1-Aug-2005"}. Obviamente las
cadenas Jan", "Apr", "Dec" no estan presentes en el contenido de la celda [A1] por lo que se devolvera su valor sin alteracion,
mientras que la sustitucion de "Aug" por "Ago" si tendra lugar.
- Lo que nosotros necesitamos es un varor de fecha (numerico) y no una cadena de texto. En este caso los dos menos (--) hacen lo
mismo que la funcion VALOR o sea fuerzan la conversion de texto en su correspondiente valor numerico si tal valor existe. Al aplicar
los menos dobles a nuestra matriz resultante obtenemos lo siguiente: {#VALOR!;#VALOR!;38565;#VALOR!}, lo cual quiere decir que solo
un miembro de la matriz es convertible a numero que es el que buscamos. 38565 es el valor numerico para 1-Ago-2005.
- Ahora al aplicar la funcion BUSCAR con un numero imposible nos encontrara el ultimo y el unico valor que hay en la matriz.

3) En caso de una cadena de texto en [A1] que ya es convertible a una fecha valida lo siguiente es lo que ocurre. P.ej. si tenemos
en [A1] el texto "1-Oct-2005" entonces el resultado de sustituir sera la siguiente matriz:
{"1-Oct-2005";"1-Oct-2005";"1-Oct-2005";"1-Oct-2005"}.
- Al aplicar los menos dobles a nuestra matriz resultante obtenemos lo siguiente: {38626;38626;38626;38626}. Evidentemente, todos
los valores de la matriz son igules y ya no importa cual de ellos elija la funcion BUSCAR pero ahora nuestra cadena de texto
original ya estara convertida en valor numerico.

Saludos,
KL


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida