Saltar al contenido

Macro formato fecha mm/dd/yyyy a dd/mm/yyyy


Recommended Posts

publicado

Estimados,

Buen día. Un favor, estoy trabajando con una aplicación en la cual al exportar datos a formato Excel, me arroja las fechas con formato mm/dd/yyyy hh:mm AM/PMson muchos registros y quisiera que a través de una macro convertir los datos al formato dd/mm/yyyy hh:mm AM/PM, ya que de este último formato dependo para hacer otros cálculos.............

Ejemplo:

1/2/2013 8:22:44 AM - 02/01/2013 08:22:44 a.m.

Anexo dejo archivo con los datos.

Gracias.

CambiarFormatoFecha.rar

publicado

Armando,

Agradezco tu apoyo, el formato que me enviaste funciona bien en la mayoría de los casos, únicamente tuve que hacer unos pequeños cambios.

Formato propuesto

[$-409]m/d/yyyy hh:mm AM/PM

Formato con la modificación "m" "aaaa"

[$-409]mm/dd/aaaa hh:mm AM/PM

Pero lo raro es que en algunas celdas, no lo respeta. Otro detalle que me encontré es que, cuando aplico el formato, tengo que oprimir "F2" en cada celda como para editarla y entonces, aparece bien. Imagínate esto con unos cuantos miles de registros. el archivo es solo una muestra.

Como quiera te comparto el archivo, me gustaría que vieras la hoja 1 y la macro que tengo, para ver de que otro manera puedo agilizar el eliminado de filas vacías.

Seguimos al pendiente... 8)

CambiarFormatoFecha_v2.rar

publicado

Hola, esto elimina las vacias:

Sub Blanks()
Application.ScreenUpdating = False
Hoja1.UsedRange.UnMerge
LR = Range("A" & Rows.Count).End(xlUp).Row
Range("A1:A" & LR).AutoFilter Field:=1, Criteria1:="="
Range("A2:A" & LR).SpecialCells(xlCellTypeVisible).EntireRow.Delete
ActiveSheet.AutoFilterMode = False
Application.ScreenUpdating = True
End Sub
[/CODE]

Lo del formato de momento no se como, vere si se me ocurre algo.

publicado

Esto cambia el formato de fechas:

Sub Fechas()
With Selection
.Value = Evaluate(.Address & "*" & 1)
.NumberFormat = "[$-409]mm/dd/yyyy hh:mm AM/PM"
End With
End Sub
[/CODE]

Modifica el formato a tu configuracion regional.

publicado

Armando,

Referente a lo de las filas vacías, al correr la macro me salen un mensaje (ver adjunto), tal vez se deba a la cantidad de filas que tengo en el archivo origen. Hice pruebas con pocas filas y si funciona. Como una solución temporal, salve el archivo como .csv y después ordene....... tratare de mandarte el archivo con menos columnas, por que es muy pesado.

Referente a la formato de las fechas, parece que si funciona, sigo haciendo pruebas. Dame oportunidad y te confirmo.

Seguimos al pendiente.

post-37908-145877009562_thumb.jpg

publicado

Armando,

Gracias por el tip, hago pruebas y te aviso. Anexo te envío el archivo en donde podrás ver tres columnas con las fechas en la que quiero cambiar el formato, no sé que estoy haciendo mal con la macro que me mandaste, como que en ocasiones si me cambia el formato y en otros no, podrías darle una revisada.

Gracias.

FormatoFecha_macdanmx.rar

publicado

Armando,

La verdad sigo sin detectar dónde este el problema cuando yo lo hago. Sería mucho pedirte si me reenvías el archivo con los resultados que obtuviste.

Gracias.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
    • Podrías compartir tu solucion
    • Alguien me apoya a cerrar este tema,  ya lo solucioné Gracias
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.