Concatenar fecha, pasar de mm/dd a dd/mm

'Hola necesitaría si me pueden ayudar en lo siguiente, tengo la fecha en la columna "A:A" y de la siguiente forma 21.03.2012 (con puntos). Cuando aplico la macro que me reemplace el punto por la barra me lo hace, pero no me los deja todos como dd/mm/yyyy sino que, los días que son inferiores a 12 me los convierte de la siguiente forma mm/dd/yyyy, o sea, el 1er de Nov queda como 11/01/2012 como si fuera 11 de enero. Lo que hice fue utilizar la formula extraer y concatenar, pero hay algo que no me lo toma, me podrían ayudar?
For s = 1 To x
dia = Left(Range("D12").Value, 2)
mes = Mid(Range(Cells(11 + s, 13)).Value, 4, 2)
año = Right(Range(Cells(11 + s, 13)).Value, 4)
Valor = CDate(dia & "/" & mes & "/" & año)
Range(Cells(11 + s, 17)) = Valor
Next s

1 respuesta

Respuesta
1

Disculpa una pregunta. Si marcas la columna A, después pulsas CONTROL B y en la pestaña reemplazar pones en buscar un punto y en reemplazar con pones la barra /. ¿qué sucede?

Si, eso lo haría si no tendría la macro, o sea, pongo buscar, luego reemplazar "." por "/", antes marco la columna asi no me hace toda la búsqueda. Pasa que, cuando hago lo anterior mencionado, me lo reemplaza y me deja el formato que tenia con el punto, es decir me lo deja dd/mm/yyyy. Pero cuando esto lo incorporo en la macro, no se porque, el formato dd.mm.yyyy me lo transforma en un mm/dd/yyyy.

a continuación el codigo

Range("L4:N4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Se me ocurre hacer lo siguiente: Tenemos en la columna todas las fechas con puntos desder A1 hacia abajo.

En B1 pon esto: =derecha(a1;4)

En C1 pon esto: =extrae(a1;4;2)

En D1 pon esto: =izquierda(a1;2)

Ahora en E1 pon esto: =fecha(b1;c1;d1) y después arrastra la fórmula hacia abajo

Ya me cuentas

entiendo tu idea, pero pasa que lo necesito en medio de un proceso de la macro, por ello es que al principio de la pregunta lo plantee como macro.. desde ya gracias

Muy bien, pues entonces haremos lo siguiente: Suponemos que las "fechas con puntos" están desde A1 hacia abajo. Posiciónate en la celda B1 y ejecuta esta macro.

Sub fechas()
Do While ActiveCell.Offset(0, -1).Value <> ""
ActiveCell.Formula = "=date(" & Right(ActiveCell.Offset(0, -1), 4) & "," & Mid(ActiveCell.Offset(0, -1), 4, 2) & "," & Left(ActiveCell.Offset(0, -1), 2) & ")" 
ActiveCell.Offset(1, 0).Select
Loop
Range("b1:b" & Range("b65000").End(xlUp).Row).Copy
Range("a1").PasteSpecial xlPasteValues
End Sub

Quizás después tengas que modificar el formato de la columna A para que lo muestre como fechas. y ya está.

Buenísimo, era lo que buscaba, y una consulta mas, porque se lo tengo que aplicar, cuando en una formula, por ejemplo una suma, en donde el ultimo termino lo deseo poner variable hago lo siguiente:
ultfil = ActiveSheet.UsedRange.Rows.Count
Range("C1").Formula = "=SUM(A2:A" & ultfil & ")"
o sea, A es fijo, mientras que varia el alcance, Puede ser A12, A502, etc
Pero cuando, deseo variar A, mientras que el valor lo se, o sea, B12, C12, AC12, etc
Me tira un error, es correcto lo siguiente?
Variable = B
Range("C1").Formula = "=SUM(A2:" & variable & "12)"
 

Te falta ponerle comillas a la B, es decir:

Variable = "B"
Range("C1").Formula = "=SUM(A2:" & variable & "12)"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas