Mi programa de contabilidad permite volcar los datos a excel. Deseo hacer una tabla dinámica con ellos, y agrupar los datos por meses. El problema es que las fechas que quiero agrupar están alineadas a la izquierda, es decir, que las entiende como texto, por lo que no puedo agruparlas. Así que necesito una macro que convierta esa columna de fechas en formato fecha(alineadas a la derecha). He probado lo siguiente:
Sub Formato() Selection.NumberFormat = "dd-mmm-yy" End Sub Pero no sirve, pues sigue alineando la fecha a la izquierda, espero que me puedas ayudar, y haberme expresado con claridad.
1 respuesta
Respuesta de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
Recién vuelvo de mi fin de semana y acabo de ver tu pregunta. Estas bastante cerca de la solución. Tal vez, sólo te falte considerar que asignar un formato a una celda NO significa cambiarle el contenido, sino cambiar el modo en que este se presenta. En definitiva, lo que tienes en aquella celda continúa siendo un texto que parece una fecha (independiente del formato que le des, insisto) Por lo tanto, necesitas una instrucción que convierta ese texto en una fecha válida y, luego, puedes darle el formato. En tal caso, tu instrucción será: Sub Formato() Selection.Value = CDate(Selection) Selection.NumberFormat = "dd-mmm-yy" End Sub Prueba con esto, y cualquier duda, me consultas nuevamente. Un abrazo! Fernando
La solución propuesta no funciona por dos motivos: Las fechas siguen quedando alineadas a la izquierda, y al hacer la tabla dinámica no me deja agrupar por meses, es decir que lo sigue considerando texto. El segundo motivo es que aunque el formato es dd-mmm-yy, el ordenador lo interpreta (por alguna extraña razón que desconozco) como si fuera mm-dd-yy, es decir que al poner 02/01/03 lo interpreta como 1 de febrero de 2003. Esta solución ya la había probado, pero no funciona. Agradezco tu interés y de veras espero que me puedas ayudar. Un abrazo.
Lo importante es definir si, tras haber ejecutado mi macro, en la celda obtienes una fecha real, cuestión -ésta- que no me quedó clara de lo que surge de tu nueva pregunta. En caso de no haber podido convertirlas, la macro se hubiera detenido indicando un error, pero no mencionaste nada de esto. Por otra parte, el hecho de que esté alineada a la izquierda puede ser sólo una cuestión de formato. Pero, insisto, es fundamental saber si la macro convirtió el texto en fecha. (Las pruebas de escritorio que hice en mi PC, fueron positivas, convirtiendo distintos textos a fechas reales) Probablemente, el problema radique fuera de MS Excel, más específicamente, en tu Configuración Regional (por aquello que mencionas del orden alterado de mes-día). Para resolverlo puedes cerrar todo y cambiar tal configuración con la tecla de "Inicio" (la del ángulo inferior izquierdo de tu pantalla). Luego sigue: "Configuración" "Panel de control" "Configuración Regional" Busca la solapa "Fecha" y en fecha corta coloca "dd/mm/aa" (Probablemente esté invertido allí). Luego abre MS Excel, tu archivo y ejecuta la macro nuevamente. Debería obtener las fechas como corresponde. De todos modos, aunque hubiesen sido convertidas correctamente, esto no es suficiente para agrupar registros por mes. A tal fin, necesitarás una columna que sólo indique el mes (y, eventualmente, el año) incluido en esa fecha. En esa columna ingresa una fórmula como esta: =Fecha(año(A4),mes(A4),1) Asumiendo que la primera fecha de tu listado estuviera en la celda A4 [Considera si sueles usar comas o punto y coma para separar argumentos de las funciones. Yo usé ","] Asígnale el formato deseado (por ejemplo mmm-aa) y, luego, copia esta celda y pégala en las restantes de esta misma columna, una por cada una de las fechas a considerar. Esta fórmula lleva cualquier fecha que tengas en la columna "A" al primer día del mes correspondiente. De esta manera, sí te será posible agrupar por mes (y año) usando este campo auxiliar en la tabla dinámica. Si sólo te interesa el mes (y no el año), puedes usar, simplemente esta fórmula: =MES(A4) Bueno, Villaju, prueba con estas sugerencias y luego coméntame si funcionó. Un abrazo! Fernando Pd: Eventualmente, si no quieres ejecutar la macro de conversión de textos a fechas, puedes utilizar esta variante de la fórmula para agrupar meses (supuesto que en A4 tengas una texto representando una fecha): =FECHA(AÑO(FECHANUMERO(A4)),MES(FECHANUMERO(A4)),1) Aún así, deberías hacer el cambio de la Configuración Regional. Éxitos!