Como crear Función Matricial {} desde VBA Excel

Estoy tratando de crear una función en Excel que me facilite un calculo, dicha función en el calculo, genera 4 resultados.

Necesito asesoría para que esta "function" se convierta en matricial y al sombrear 4 celdas y dar Shift+Ctrl+Enter me enseñe los 4 resultados que genera la "function", es decir que se convierta en una función matricial, que quede en las celdas a enseñar los resultados algo como esto: {Valor_numerico(A1, A2, A3, A4)}

Muchas gracias por la ayuda que puedan brindarme siendo lo mas detallado posible en la explicación.

A continuación un código sencillo de muestra para que se entienda lo que quiero hacer.

Public Function Valor_numérico (Tiempo As Double, Costo As Double, Gasto As Double) As Variant

On Error GoTo salir

    A= Tiempo*Costo/Gasto

    B=Gasto*Costo

    C=Gasto*12+Costo

    D=Gasto*Tiempo/24

Valor_numérico= (A,B,C,D)

salir:
End Function

1 respuesta

Respuesta
1

H o l a:

Las fórmulas matriciales pueden evaluar varios datos, pero solamente entregan un resultado.

También las funciones, solamente regresan un resultado, podrían calcular varios valores, y después esos valores se pueden concatenar y entregar un solo resultado, por ejemplo:

Valor_numérico = A & " " & B & " " & C & " " & D

Pero el resultado, como es uno solo, podría ponerse en una celda.

Si lo que quieres es poner 4 resultados, lo que necesitas es crear 4 funciones, por ejemplo

Public Function resA(Tiempo As Double, Costo As Double, Gasto As Double) As Variant
    resA = Tiempo * Costo / Gasto
End Function
'
Public Function resB(Tiempo As Double, Costo As Double, Gasto As Double) As Variant
    resB = Gasto * Costo
End Function
'
Public Function resC(Tiempo As Double, Costo As Double, Gasto As Double) As Variant
    resC = Gasto * 12 + Costo
End Function
'
Public Function resD(Tiempo As Double, Costo As Double, Gasto As Double) As Variant
    resD = Gasto * Tiempo / 24
End Function

Tendrías que poner la función resA en la celda en donde quieres el resultado A, en otra celda la función resB, en otra la resC y en otra la resD.


Otra opción es que crees una macro que ponga los 4 resultado en celdas diferentes. Por ejemplo:

Sub CalcularValores()
    Tiempo = Range("B1")
    Costo = Range("B2")
    Gasto = Range("B3")
    '
    Range("A1") = Tiempo * Costo / Gasto
    Range("A2") = Gasto * Costo
    Range("A3") = Gasto * 12 + Costo
    Range("A4") = Gasto * Tiempo / 24
End Sub

Espero haberme explicado.

Si necesitas que te ayude con alguna de las opciones dime cómo tienes tus datos y con gusto te apoyo.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas