Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

domingo, 25 de noviembre de 2018

Cómo encontrar combinaciones que equivalen a una suma dada en Excel? 3a Parte - VBA

Hola. Pues hemos visto ya cómo se puede realizar esta operación mediante 2 métodos:

- Solver: encontrar-combinaciones-suma-excel-solver
- Fórmula matricial: encontrar-combinaciones-suma-excel-formula

Pues veamos ahora cómo hacerlo mediante código VBA.

Vamos a crear una Funcion definida por el Usuario.



Pues vayamos a ello:





Qué es una Función Definida por el Usuario?

Las funciones definidas por el usuario (conocidas como UDF del inglés: Used Defined Functions)  sirven para crear tus propias fórmulas y poder usarlas en nuestro libro de Excel.

Excel ya ofrece muchas funciones incorporadas como las Matemáticas, Estadísticas, Texto, Lógicas,
pero además ofrece la posibilidad de realizar más operaciones en Excel aunque no vengan predefinidas en el programa

Por eso existen las UDF con las que se puede crear nuestras propias funciones usando Macros y el lenguaje de programación VBA.


Para obtener el resultado correcto, primero debemos ordenar la lista de números en orden descendiente. Y luego tendremos que hacer los siguientes pasos:

1. Presionamos las teclas ALT + F11 para abrir la ventana Microsoft Visual Basic para aplicaciones.

2. Haga clic en Insertar> Módulo y peguamos el siguiente código en la ventana del Módulo.

Código VBA: Encuentra la combinación de celdas que es igual a una suma dada:


Function ObtenerCombinacion(RangoMonedas As Range, SumaObjetivo As Double) As String
    Dim xStr As String
    Dim xSuma As Double
    Dim xcelda As Range
    xSuma = SumaObjetivo
    For Each xcelda In RangoMonedas
        If Not (xSuma / xcelda < 1) Then
            xStr = xStr & Int(xSuma / xcelda) & " x " & xcelda & "  "
            xSuma = xSuma - (Int(xSuma / xcelda)) * xcelda
        End If
    Next
    ObtenerCombinacion = xStr
End Function


3. Luego guardamos y se cierra esta ventana de código, y luego regresamos a la hoja de trabajo. 

4. Ahora en cualquier celda que se quiera obtener la combnación, introducimos esta fórmula 
=ObtenerCombinación (A1:A8, C2), y presionamos la tecla Intro. Basicamente como haríamos con cualquier otra función. El resultado obtenidoo será una combinación de números que son iguales a una suma dada.




5. Importante recordar que el libro ha der guardado ahora como libro habilitado para macros (tipo de archivo *.xlsm)


Nota: Si más de una combinación de valores tiene una suma igual al valor específico, solo se enumera una combinación.






Entradas relacionadas










Te ha gustado el artículo?

No te olvides de mostrar tu gratitud hacia el autor (yo) mediante una de las 2 siguientes acciones:

1. Puedes dejar una donación pinchando en la siguiente imagen.

PayPal. La forma rápida y segura de pagar en Internet


2. Puedes recomendar el artículo en Google haciendo clic en g+1 (justo después del artículo), también puedes compartirlo en Facebook, y/o dejar comentarios.

Quieres aprender más en Excel o tienes algún problema que necesita solución?

Puedo ofrecer servicios de consultoría así como cursos personalizados online. Mírate el siguiente enlace si estás interesado/a.



El Sabio de Excel busca colaborades del blog

Si te interesa compartir tu conocimiento sobre Excel de tal manera que puedas ayudar a otras personas, por favor mándame un email a elsabiodeexcel@gmail.com


Subscríbete y recibe todos las entradas por email


Para ello regístrate suministrando tu email en el sitio "Recibe los trucos en tu email" del menú de la derecha.

O sígueme por las redes sociales


No hay comentarios:

Publicar un comentario