Fórmula o macro para rangod

Hola:
Necesito saber si hay alguna fórmula o macro que me pueda indicar que números me faltan en un rango, sin tener que poner todos los números del rango, por ejemplo solo coloco el 1 y el 100 y en otra columna o hoja coloco todos los números que tengo, me indique del rango del 1 al 100 cuales me faltan
Les agradeceré mucho esta ayuda

1 Respuesta

Respuesta
1
Si es posible hacerlo con una macro, te explico.
En mi caso tengo las hojas:
Hoja1 = Datos que tengo
Hoja2 = Lista de datos
Hoja3 = reporte de faltantes
Este es el codigo
Sub Comprueba()
fil_rep = 1
fil_dat = 1
While Sheets("Hoja2").Cells(fil_dat, 1) <> ""
a = Application.CountIf(Sheets("Hoja1").Cells(1, 1).CurrentRegion, _
"=" & Sheets("Hoja2").Cells(fil_dat, 1))
If a <> 0 Then
Else
Sheets("Hoja3").Cells(fil_rep, 1) = Sheets("Hoja2").Cells(fil_dat, 1)
fil_rep = fil_rep + 1
End If
fil_dat = fil_dat + 1
Wend
End Sub
Si quieres darte una idea de como funciona entonces baja o solo mira la imagen, en tamaño grande dando clic en ella

Si necesitas explicaciones extras mandame un correo a [email protected]
Hasta pronto.
Hola muchas gracias por ayudarme mira si me sirve esta macro, pero quiero saber si se puedo colocar solo dos números de un rango cualquiera el primero y el final, por ejemplo colocar en una celda el 1 y en otra el 100, sin tener que poner toda la serie completa y que la macro por lógica entienda que entre el 1 y el 100 se encuentran el 2, 3, 4, 5, etc. para que así me indique que números faltan en la base.
Nuevamente gracias por la ayuda
Si se puede hacer solo que como para esta macro es necesario tener un listado de referencia primero lo crea, después compara y al final lo borra.
Los datos inicial y final los capturas en la hoja2 en las celdas A1 y B1 respectivamente, bien este es el código que propongo.
Sub Comprueba()
fil_rep = 1
fil_dat = 1
fil_ser = 1
fin = Sheets("Hoja2").Cells(1, 2)
For ini = Sheets("Hoja2").Cells(1, 1) To fin
Sheets("Hoja2").Cells(ini, 1) = ini
Next
While Sheets("Hoja2").Cells(fil_dat, 1) <> ""
a = Application.CountIf(Sheets("Hoja1").Cells(1, 1).CurrentRegion, _
"=" & Sheets("Hoja2").Cells(fil_dat, 1))
If a <> 0 Then
Else
Sheets("Hoja3").Cells(fil_rep, 1) = Sheets("Hoja2").Cells(fil_dat, 1)
fil_rep = fil_rep + 1
End If
fil_dat = fil_dat + 1
Wend
With Sheets("Hoja2")
.Cells(2, 1).Resize( _
.Cells(2, 1).CurrentRegion.Rows.Count - 1, _
.Cells(2, 1).CurrentRegion.Columns.Count) _
.EntireRow.Delete
End With
End Sub

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas