Mostrar valores desde una función de excel

Buenas Tardes,
Programe' una función definida por el usuario la cual se activa al variar los argumentos de entrada y como resultado me genera una matriz, sin embargo necesito que esa matriz se muestre en una hoja de excel, ya intente' programar un Sub y llamarlo desde la función para mostrar los valores, sin embargo pero no funciono'. Se que a una función no se le permite mostrar valores en casillas que no correspondan a la casilla desde la que se llama la función, ¿pero cuál truco puedo usar para lograrlo?. En el programa que tengo, quitar la función definida por el usuario no es una opción. Agradezco enormemente su ayuda.
Andres J

1 respuesta

Respuesta
1
Si la función devuelve una matriz, lo único que tienes que hacer para que se muestren todos sus elementos es seleccionar el mismo número de celdas que elementos vaya a tener esa matriz, escribir la llamada a la UDF teniendo seleccionadas todas las celdas e introducir la fórmula pulsando mayúsculas control entrada al mismo tiempo.
Gracias por contestar. Me surge una duda con ese método, hice un pequenho código a modo de entender el truco:
Function gen_matriz(pos As Double)
For i = 1 To pos
    For j = 1 To pos
    gen_matriz(i, j) = i + j
End Function
Obviamente se genera un error porque el no entiende la asignación de la matriz a la función gen_matriz. Como se debe modificar este código ejemplo para que funcione lo que necesito. Agradezco su disposición y colaboración.
Andres J
Option Base 1
Public Function gen_matriz(pos As Double) As Variant
    Dim i As Integer, j As Integer, vTemp As Variant
    ReDim vTemp(1 To pos, 1 To pos)
    For i = 1 To pos
        For j = 1 To pos
            vTemp(i, j) = i + j
        Next j
    Next i
    gen_matriz = vTemp
End Function
Muchas Gracias, acabo de probarlo y funciona perfecto, solo una ultima pregunta y prometo no molestar más jejejeje. ¿Qué puedo hacer para que la matriz se muestre automáticamente al cambiar el argumento de entrada "pos" desde excel?. Muchas Gracias
No entiendo bien el problema: se supone que es precisamente el argumento de la función el que determina el número de celdas que deberá estar seleccionado al introducir la fórmula como matriz, de forma que si se cambia dicho argumento habría que cambiar el rango en el que esté extendida la matriz, lo que requeriría volver a introducirla en un rango con el número de celdas adecuado. Si dicho rango tiene más filas y/o columnas que la matriz devuelta por la función, dichas filas y/o columnas aparecerán con el valor de error #N/A, mientras que si tiene menos filas y/o columnas simplemente no se mostrarán las que falten.
Si ud tiene razón, es que me había confundido un poco, ya funciona perfecto!. Muchísimas gracias por su ayuda, me fue de gran utilidad. Saludos
Andres J

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas