• 👏 Bienvenido a nuestra comunidad Excel

    ¿Todavía no estás registrado? 😲

    Registrate gratis aquí y podrás:

    💪 Hacer preguntas a los expertos
    ⬇️ Descargar ejemplos y plantillas
    🏅 
    Acceder a contenidos premium

Detectar numeraciones faltantes y listarlas en otra hoja

Paco_py

Member
Buenos días estimados expertos

Gusto en saludarlos nuevamente

Quisiera valerme de sus conocimientos para que me ayuden a crear una macro que recorra un rango en donde tengo un listado de facturas ordenadas de menor a mayor, detecte las numeraciones que faltan y las liste en otra hoja.
Doy un ejemplo para quede más claro
4050
4051
4052
4058
4060

Lo que la macro debería hacer:
Faltantes:
4053
4054
4055
4056
4057
4059

De antemano agradezco la ayuda.
 

ramirolatigano

New member
Hola Paco, no soy experto pero se me ocurre algo como para guiarte:

Adelanto que la intención es ayudarte y no darte un código en bandeja, por dos motivos, el principal es que te motive a ti a aprender a crear tus códigos, la documentación de microsoft es muy útil. La secundaria es que como no soy experto, escribirte un código preciso me tomaría demasiado tiempo...

En fin;

Que tu macro busque la última fila con datos en la columna en cuestión, supongamos que es la fila 1357...

Luego utilizas un bucle for al estilo

For i=1 to 1357

y dentro del bucle un if, al estilo

If Cells(i,TuColumna).value <> Cells(i-1,TuColumna).value + 1 Then
Código para pegar la celda en cuestión en otra hoja
End if

Next

Espero te sirva y te animes a hacerlo.
Si nada de esto te sirve porque en realidad "crees que no lo entiendes" (no se cual es tu experiencia con las macros) no descartes usar el grabador de macros para generar la macro.

Abrazo.
 

Paco_py

Member
ramirolatigano dijo:
...escribirte un código preciso me tomaría demasiado tiempo...
Hola Ramiro, antes que nada, muchas gracias!!

Créeme que soy de los que se pasan horas creando códigos cuando puedo permitírmelo, lastimosamente esta vez no es el caso, pues es para la oficina y estoy con tiempo reducido para la tarea, así que no me puedo dar el lujo de pruebas y errores hasta conseguirlo.

Saludos!!
 

Paco_py

Member
Antoni dijo:
Abre el adjunto y pulsa sobre la flecha azul.
Muchas gracias Antoni.

Nada más un detalle quisiera agregar, en la columna (digamos B) existe un dato que se llama timbrado, únicamente si el timbrado no ha variado desde la fila anterior debe listar los faltantes.

Ejemplo
A1 B1
1 124
3 124
6 124
21 134
24 134

lo correcto sería:
2
4
5
22
23

los que se encuentran entre el 6 y el 21 no son faltantes, pues significa que no fueron utilizados.
 

Antoni

Well-known member
Para el futuro, especifica todos los requerimientos al realizar una consulta y adjunta un archivo Excel con lo que tienes y lo que quieres.
Código:
Sub Faltantes()
Application.ScreenUpdating = False
Hoja2.Columns("A").ClearContents
For x = 1 To Hoja1.Range("A" & Rows.Count).End(xlUp).Row - 1
   If Hoja1.Range("B" & x) = Hoja1.Range("B" & x + 1) Then
      For n = Hoja1.Range("A" & x) + 1 To Hoja1.Range("A" & x + 1) - 1
         fila = fila + 1
         Hoja2.Range("A" & fila) = n
         Hoja2.Range("B" & fila) = Hoja1.Range("B" & x)
      Next
   End If
Next
Hoja2.Select
End Sub
 

Paco_py

Member
Antoni dijo:
Para el futuro, especifica todos los requerimientos al realizar una consulta y adjunta un archivo Excel con lo que tienes y lo que quieres.
Código:
Sub Faltantes()
Application.ScreenUpdating = False
Hoja2.Columns("A").ClearContents
For x = 1 To Hoja1.Range("A" & Rows.Count).End(xlUp).Row - 1
   If Hoja1.Range("B" & x) = Hoja1.Range("B" & x + 1) Then
      For n = Hoja1.Range("A" & x) + 1 To Hoja1.Range("A" & x + 1) - 1
         fila = fila + 1
         Hoja2.Range("A" & fila) = n
         Hoja2.Range("B" & fila) = Hoja1.Range("B" & x)
      Next
   End If
Next
Hoja2.Select
End Sub
Muchas gracias!!
 
Arriba