Macro Poner Formato Fecha Para Toda Una Columna
Buen Día
Al estar programando una macro me he encontrado con el siguiente problema, tengo en mi columna C datos como a continuación muestro:
01.06.2011
02.06.2011
13.06.2011
14.06.2011
Los cuales deseo pasar a formato fecha para poder aplicar una función que me permite calcular el numero de semana (de la forma iso), por lo cual necesito sustituir los puntos por diagonales y estoy usando el siguiente código el cual funciona muy bien:
Dim iRow As Long
iRow = 2
Do Until IsEmpty(Cells(iRow, "C"))
Cells(iRow, "C") = Replace(Cells(iRow, "C"), ".", "/")
iRow = iRow + 1
Loop
Después de aplicarlo mis datos quedan de la forma 01/06/2011, etc mi 1er problema es que cuando aplico formato de fecha (he probado varios tipos de formato fecha hasta el custom) a la columna solo algunos datos lo aceptan y los demás no cambian, mi función para calcular el numero de semana es: (esta función la aplico a todas las celdas de la columna C)
Public Function IsoWeekNumber(d1 As Date) As Integer
Dim d2 As Long
d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
IsoWeekNumber = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function
La función se ejecuta de manera correcta en toda la columna pero en algunas celdas mi función voltea el mes por el día, es decir, si tengo 01/06/2011, puede que lo tome como 06/01/2011 y así realice el calculo, mi maquina esta en ingles al igual que mi office, lo que necesito es que mis celdas de la columna C tengan un formato de fecha todas de manera igual para poder usar mi función IsoWeekNumber ( ).
Alguien me podría ayudar por favor, lo agradecería muchísimo.
Saludos
Al estar programando una macro me he encontrado con el siguiente problema, tengo en mi columna C datos como a continuación muestro:
01.06.2011
02.06.2011
13.06.2011
14.06.2011
Los cuales deseo pasar a formato fecha para poder aplicar una función que me permite calcular el numero de semana (de la forma iso), por lo cual necesito sustituir los puntos por diagonales y estoy usando el siguiente código el cual funciona muy bien:
Dim iRow As Long
iRow = 2
Do Until IsEmpty(Cells(iRow, "C"))
Cells(iRow, "C") = Replace(Cells(iRow, "C"), ".", "/")
iRow = iRow + 1
Loop
Después de aplicarlo mis datos quedan de la forma 01/06/2011, etc mi 1er problema es que cuando aplico formato de fecha (he probado varios tipos de formato fecha hasta el custom) a la columna solo algunos datos lo aceptan y los demás no cambian, mi función para calcular el numero de semana es: (esta función la aplico a todas las celdas de la columna C)
Public Function IsoWeekNumber(d1 As Date) As Integer
Dim d2 As Long
d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
IsoWeekNumber = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function
La función se ejecuta de manera correcta en toda la columna pero en algunas celdas mi función voltea el mes por el día, es decir, si tengo 01/06/2011, puede que lo tome como 06/01/2011 y así realice el calculo, mi maquina esta en ingles al igual que mi office, lo que necesito es que mis celdas de la columna C tengan un formato de fecha todas de manera igual para poder usar mi función IsoWeekNumber ( ).
Alguien me podría ayudar por favor, lo agradecería muchísimo.
Saludos
1 respuesta
Respuesta de calvuch
1