Macro Ordenar datos por fecha

Para ver si podrían echarme una mano, tengo un archivo en excel, el cual tiene en la primer columna la fecha, en la segunda unos datos que debo acomodar por fecha, válgase la redundancia, en tablas, según año, mes y día, hay fechas que no aparecen, pero me piden que deje esa celda vacía en caso de que no hubiesen datos, son muchas tablas pues tengo que hacer una por año y no doy como hacerlas.

1 respuesta

Respuesta
1

Puedes poner una imagen con una muestra de cómo están tus datos. Y otra imagen con el resultado que quieres.

Te pongo un ejemplo de lo que debe contener cada imagen:

Gracias por responder, intentó agregarle las imágenes, pero no me deja, ya  probé con chrome y firefox, no se como adjuntarle

Revisa la siguiente respuesta:

¿Cómo se hace para subir fotos?

así están los datos, la lista es muy larga y puede saltarse años

Tiene que quedar como la segunda imagen, en el ejemplo de como están los datos (la primera imagen), ese año solo contaba con datos de agosto, 13 de agosto, pero cuando se tienen datos aunque sea de un solo mes, o días de un año, tengo que poner toda la tabla, pero dejando en blanco los días de los cuales no hay información

Puedes comentar lo siguiente y en este orden:

1. Tienes un formato establecido para poner las tablas. Te recomiendo crear un formato en una hoja.

2. Siguiendo con tu ejemplo, el siguiente año: 1981, en dónde lo quieres, abajo de la tabla 1980 o en otra hoja.

3. Veo en tu ejemplo que al parecer tienes fórmulas en las filas Máxima y Total, esas fórmulas deberían estar en tu formato.

4. En la hoja1, en la columna A, existen fechas duplicadas.

5. Crea tu hoja con el nombre "formato" con una tabla con lo siguiente:

- Los títulos

- Los días

- Le pones el color de letra que quieras, las líneas de bordes, las fórmulas.

- La tabla en la hoja formato deberá estar sin datos, es decir, con todo el formato pero sin datos.

6. Una vez que termines la hoja "formato", pones aquí una imagen para revisarla.

Buen día,

1. Sí tengo, es la que está en la hoja formato

2.Sí, las tablas van una detrás de otra, en este caso,1980,1981...

3.sí las fórmulas van en el formato

4.No hay fechas duplicadas

5-6.

así quedaría

De acuerdo a lo anterior, debes tener 3 hojas con estos nombres:

- "Hoja1" con los datos en las columnas A y B. Empiezan en la celda A1.

- "Formato" con el formato a copiar. Rango del formato A1:P34

- "Salida" con el resultado. El resultado empezará en la celda A1.

Revisa que tus hojas tengan esos nombres y los datos se encuentren en los rangos mencionados.


Hice una prueba con 40 años y funciona de manera inmediata.

Pon la siguiente macro en un módulo.

Sub Ordenar_Por_Fecha()
  Dim sh3 As Worksheet, dic As Object, rng As Range
  Dim a As Variant, b As Variant, ky As Variant
  Dim i As Long, j As Long, k As Long, y As Long
  '
  Application.ScreenUpdating = False
  Set sh3 = Sheets("Salida")
  Set dic = CreateObject("Scripting.Dictionary")
  '
  Set rng = Sheets("Hoja1").Range("A2", Sheets("Hoja1").Range("A" & Rows.Count).End(3))
  a = rng.Resize(, 2).Value2
  y = 1
  ReDim b(1 To 31 * ((Year(WorksheetFunction. Max(rng)) - Year(WorksheetFunction.Min(rng))) + 1), 1 To 12)
  For i = 1 To UBound(a)
    If Not dic.exists(Year(a(i, 1))) Then
      dic(Year(a(i, 1))) = y
      y = y + 31
    End If
    j = dic(Year(a(i, 1))) + Day(a(i, 1)) - 1
    k = Month(a(i, 1))
    b(j, k) = a(i, 2)
  Next
  '
  sh3.Cells.Clear
  Sheets("Formato").Range("A1:P34").Copy
  sh3.Range("A1:A" & dic.Count * 34).PasteSpecial xlPasteAll
  i = 2
  j = 1
  For Each ky In dic.keys
    sh3.Range("A" & i).Value = ky
    sh3.Range("C" & i).Resize(31, 12).Value = Application.Index( _
      b, Evaluate("=row(" & j & ":" & j + 31 & ")"), Application.Transpose([row(1:12)]))
    i = i + 34
    j = j + 31
  Next
  sh3.Select
  '
  Application.ScreenUpdating = True
  Application.CutCopyMode = False
  MsgBox "Fin"
End Sub

bien lo he probado y quedo así

pero me marca error

¿Qué dice el mensaje de error?

Revisa que en todas las celdas de la columna A de la hoja1 sean fechas, no deben ser textos, no debes tener celdas con error: #NA, #NOMBRE, #VALOR, etc.

Realiza una prueba con 2 años para delimitar el problema que tienes con tus datos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas