Fórmula para Identificar Números Faltantes en un Rango

Obed

30/08/11

Facil y rapido

Haz tu trabajo con mucha rapidez y de manera más sencilla.

Ponte en contacto.

Soporte

Resuelve todas tus dudas y recibe la mejor asesoría en en los proyectos que desarrolles.

¡Contáctanos!

Reportes

Desempéñate mejor en tus tareas con nuestros reportes en Excel.

¡Te decimos como lograrlo!

Facil y rapido

Haz tu trabajo con mucha rapidez y de manera más sencilla.

Ponte en contacto.

Soporte

Resuelve todas tus dudas y recibe la mejor asesoría en en los proyectos que desarrolles.

¡Contáctanos!

Reportes

Desempéñate mejor en tus tareas con nuestros reportes en Excel.

¡Te decimos como lograrlo!

Hace más de un mes que publique el post mas reciente del blog, así que ya es hora de publicar uno nuevo y como estoy recien desempacadito de unas bien merecidas vacaciones desde una paradisiaca playa vengo inspirado, espero lo noten (jajaja).
 
Estaré publicando una serie de artículos sobre ( UDF’S ) que quiere decir User Defined Formulas y que traducido a cristiano quiere decir fórmulas definidas por el usuario.
 
Tal vez ustedes se han de estar preguntando para qué demonios sirven o con que se comen estas mentadas UDF’s, tranquilos no desesperen que para allá voy….
 
Las UDF’s como les explique anteriormente son fórmulas, pero ojo, no son las fórmulas estándar que conocemos de Excel entiéndase esto como (SUMA, SUMAR.SI, BUSCARV, etc, etc, etc ), la diferencia es en que estas fórmulas son programadas en nuestro editor de Visual Basic del Excel y nos sirven para extender la funcionalidad de las fórmulas ya existentes o bien para crear nuevas fórmulas o cálculos que no podríamos hacer con las formulas nativas existentes de Excel o si se podrían hacer pero requeriría mas cerebro  de nuestra parte para anidar varias formulas estándar y llegar al mismo resultado.
 
Después del breviario,  les presento una fórmula UDF que le he bautizado como COMPLEMENTO, para que se vayan dando una idea de lo que estas son capaces de hacer. Bueno si les es útil a alguno de ustedes podrán bautizarla como quieran ya que tendrán el código y podrán modificarlo a su antojo ( bueno hasta que registre el Copyright… después tendrán que pagarme derechos de autor, ja jaja ).
 
Bueno ahora sí a lo que te truje chencha,  lo que hace esta función es algo muy simple pero a veces complicado de determinarlo cuando se tiene infinidad de registros, por ejemplo tenemos los números 1,2,3,4,5,8,10,11,15,20,25,27, etc, etc, etc, si son observadores ya han de haber notado que los numero no son consecutivos, que del 5 se salta al 8 y del 8 al 10 o sea que hacen falta los números 6, 7 y 9 . Supongamos que estos números son los folios de facturación de alguna empresa y los folios faltantes son las facturas canceladas, esto está bien si la información se requiere así, pero resulta que a alguien se le ocurre la grandiosa idea de que quiere saber cuáles folios están cancelados y para acabarla de amolar resulta que tenemos un software administrativo medio chafa que no nos da ningún reporte de folios cancelados (estamos suponiendo OK,  no creo que esto suceda ) . Bueno creo que ya me debieron haber entendido cual es la finalidad que busco con esta fórmula o por si no me han captado todavía,  es el que me identifique los números faltantes de folios, fácil no.
 
Pues aunque parezca fácil a uno que otro todavía nos complican la vida cuando nos piden esta información, así que si estas en este supuesto esta función te va a caer como una bendición.  Bueno ya he dicho bastante así que  chan chan chan, les presento la fórmula COMPLEMENTO
Ahora probablemente se han de estar preguntando, ¡¡¡ y ahora como funciona esto !!! , pues funciona de una forma muy sencilla, solamente tienes que pegar el Código en un módulo estándar.  ¿En dónde pego el código VBA?
Option Explicit

Function COMPLEMENTO(Rango)
Dim obj, i As Integer, c
Set obj = CreateObject("Scripting.Dictionary")

  For i = Application.Min(Rango) To Application.Max(Rango)
    If IsError(Application.Match(i, Rango, 0)) Then obj(i) = i
  Next i

  Dim b()
  ReDim b(1 To Rango.Count)
  i = 1
  For Each c In obj.items
    b(i) = c
    i = i + 1
  Next

  COMPLEMENTO = Application.Transpose(b)

Set obj = Nothing

End Function 
Y después de haber pegado el código en el módulo ve a la hoja de Excel y la llamas como cualquier otra función, únicamente aquí la diferencia es que la debes de llamar como una función matricial, esto es que debes de presionar Ctrl+Shift+Enter al finalizar la fórmula, por ejemplo:

Selecciona el rango C2:C15 e ingresa la fórmula COMPLEMENTO(A2:A15) antes de dar Enter debes de presionar las teclas Ctrl+Shift+Enter para que la fórmula sea identificada como matricial.

 

Y el resultado final debe de quedar como en la siguiente imagen.

Aquí les dejo el link de descarga del archivo de Excel.  Descargar Ejemplo

Cualquier duda, comentan.
Copyright © 2022 Exceltrabajaporti.com - Todos los derechos reservados.