yyyy truco pasar número numero nuestro mes fórmulas formato fecha data convertir con cambiar aaaammdd aaaa excel vba excel-vba datetime timestamp

excel - truco - Convierta ''aaaammdd hhmmss'' a ''mm/dd/aa hh: mm''



data formato aaaammdd excel (3)

@ExcelHero respondió mi pregunta por correo electrónico. El siguiente es el código de trabajo para cualquier persona que necesite referencia futura.

With [a3].Resize([a65536].End(xlUp).Row - 2) If Len(.Item(1)) = 15 Then .Value = Evaluate("transpose(transpose(DATE(MID(" & .Address & ",1,4),MID(" & .Address & ",5,2),MID(" & .Address & ",7,2)) + TIME(MID(" & .Address & ",10,2),MID(" & .Address & ",12,2),MID(" & .Address & ",14,2))))") End If .NumberFormat = "mm/dd/yyyy hh:mm" End With

Tengo una fila de datos (celda A3 y abajo) que contiene una marca de tiempo Unix en formato yyyymmdd hhmmss que estoy tratando de convertir a formato mm/dd/yy hh:mm automáticamente .

El código que tengo hasta ahora funciona cuando tengo los datos comenzando en la celda A1, pero necesito que A1 permanezca en blanco, por lo tanto, los datos comienzan en A2. Aquí hay una captura de pantalla de ejemplo de la columna A:

Sub auto_open() '' '' auto_open Macro '' '' ChDir "C:/" Workbooks.Open Filename:="C:/Users/username/Desktop/file1.csv" Intersect(Sheets("file1").Range("A:EW"), Sheets("file1").UsedRange).Copy ThisWorkbook.Sheets("Golden").Range("A2") Windows("file1.csv").Activate Application.CutCopyMode = False ActiveWorkbook.Close SaveChanges = False Dim x As Integer Dim y As String Dim z As String Dim w As String NumRows = Range("A3").End(xlDown).Row Windows(ThisWorkbook.Name).Activate For x = 2 To NumRows z = Cells(x, 1).Value y = Mid(z, 5, 2) & "/" & Mid(z, 7, 2) & "/" & Left(z, 4) w = Mid(z, 10, 2) & ":" & Mid(z, 12, 2) & ":" & Mid(z, 14, 2) y = y + TimeValue(w) Cells(x, 1).Value = y Next x Range("A3").Select End Sub

Se equivoca si configuro el rango en A2 o A3 y hacia abajo.

¿Alguien tiene recomendaciones?

Aspectos destacados de depuración y = Mid(z, 5, 2) & "/" & Mid(z, 7, 2) & "/" & Left(z, 4) pero no estoy seguro de cuál es el problema.

El formato de celdas (personalizado> mm/dd/yyyy hh:mm:ss ) tampoco funciona en mi caso, desafortunadamente.


Esto lo hará sin bucle en absoluto:

Sub kyle() With [a3].Resize([a1048576].End(xlUp).Row - 2) .Value = Evaluate("transpose(transpose(DATE(MID(" & .Address & ",1,4),MID(" & .Address & ",5,2),MID(" & .Address & ",7,2)) + TIME(MID(" & .Address & ",10,2),MID(" & .Address & ",12,2),MID(" & .Address & ",14,2))))") End With End Sub

Nota: puede usar el formato de número para las fechas que desee.


Prueba esto:

Sub Kyle() Dim cell As Range ThisWorkbook.Activate For Each cell In Range("A2", Cells(Rows.Count, "A").End(xlUp)) If cell.Value Like "######## ######" Then cell.Value = CDate(Format(cell.Value, "@@@@-@@-@@@@@:@@:@@")) End If Next cell End Sub

Luego formatee la columna como prefiera.

Para mí, eso convierte

20150904 213613
20150124 194003
20150404 163056
20151220 100509
20150510 213512

a esto:

04/09/2015 21:36
24/01/2015 19:40
04/04/2015 16:30
20/12/2015 10:05
10/05/2015 21:35