Crear función VBA para devolver matriz

Como sugiere el título, aprenderemos cómo crear una función definida por el usuario en Excel que devuelva una matriz. Ya hemos aprendido cómo crear una función definida por el usuario en VBA. Entonces, sin perder tiempo, comencemos con el tutorial.

¿Qué es una función de matriz?

Las funciones de matriz son las funciones que devuelven una matriz cuando se utilizan. Estas funciones se usan con combinaciones de teclas CTRL + MAYÚS + ENTRAR y es por eso que preferimos llamar a la función de matriz o fórmulas como función y fórmulas CSE.

La función de matriz de Excel es a menudo fórmulas de matriz multicelda. Un ejemplo es la función TRANSPONER.

Creando una función de matriz UDF en VBA

Entonces, el escenario es que solo quiero devolver los primeros 3 números pares usando la función ThreeEven ().

El código se verá así.

Función ThreeEven () As Integer () 'definir matriz Dim números (2) As Integer' Asignar valores a números de matriz (0) = 0 números (1) = 2 números (2) = 4 'valores de retorno ThreeEven = números Función final 

Usemos esta función en la hoja de trabajo.

Puede ver que, primero seleccionamos tres celdas (horizontalmente, para vertical tenemos que usar una matriz bidimensional. Lo tenemos cubierto a continuación). Luego comenzamos a escribir nuestra fórmula. Luego presionamos CTRL + SHIFT + ENTER. Esto llena las celdas seleccionadas con los valores de la matriz.

Nota:

  • En la práctica, no sabrá cuántas células necesitará. En ese caso, seleccione siempre más celdas que la longitud de matriz esperada. La función llenará las celdas con una matriz y las celdas adicionales mostrarán el error # N / A.
  • De forma predeterminada, esta función de matriz devuelve valores en una matriz horizontal. Si intenta seleccionar celdas verticales, todas las celdas mostrarán solo el primer valor de la matriz.

¿Cómo funciona?

Para crear una función de matriz, debe seguir esta sintaxis.

Función functionName (variables) As returnType () dim resultArray (length) as dataType 'Asignar valores a la matriz aquí functionName = resultArray Fin Función 

La declaración de función debe ser como se define arriba. Esto declaró que es una función de matriz.
Mientras lo usa en la hoja de trabajo, debe usar la combinación de teclas CTRL + MAYÚS + ENTRAR. De lo contrario, solo devolverá el primer valor de la matriz.

Función de matriz VBA para devolver matriz vertical

Para que su función de matriz UDF funcione verticalmente, no necesita hacer mucho. Simplemente declare las matrices como una matriz bidimensional. Luego, en la primera dimensión, agregue los valores y deje la otra dimensión en blanco. Así es como lo haces:

Función ThreeEven () As Integer () 'definir matriz Dim números (2,0) As Integer' Asignar valores a matrices números (0,0) = 0 números (1,0) = 2 números (2,0) = 4 ' valores de retorno TresEven = números Función final 

Así es como lo usa en la hoja de trabajo.

Función de matriz UDF con argumentos en Excel

En los ejemplos anteriores, simplemente imprimimos valores estáticos de suma en la hoja. Digamos que queremos que nuestra función acepte un argumento de rango, realice algunas operaciones en ellos y devuelva la matriz resultante.

Ejemplo Agregar "-done" a cada valor en el rango

Ahora, sé que esto se puede hacer fácilmente, pero solo para mostrarle cómo puede usar las funciones de matriz VBA definidas por el usuario para resolver problemas.

Entonces, aquí quiero una función de matriz que tome un rango como argumento y agregue "-done" a cada valor en el rango. Esto se puede hacer fácilmente usando la función de concatenación, pero aquí usaremos una función de matriz.

Función CONCATDone (rng As Range) As Variant () Dim resulArr () As Variant 'Crear una colección Dim col As New Collection' Agregar valores a la colección en caso de error Reanudar siguiente para cada v In rng col.Añadir v Siguiente en error Ir a 0 ' completar la operación en cada valor y agregarlos a Array ReDim resulArr (col.Count - 1, 0) For i = 0 To col.Count - 1 resulArr (i, 0) = col (i + 1) & "-done" Siguiente CONCATDone = función final de resulArr 

Explicación:

La función anterior aceptará un rango como argumento y agregará "-done" a cada valor en el rango.

Puede ver que hemos usado una colección VBA aquí para mantener los valores de la matriz y luego hemos realizado nuestra operación en cada valor y los hemos agregado nuevamente en una matriz bidimensional.

Así que sí, chicos, así es como pueden crear una función de matriz VBA personalizada que puede devolver una matriz. Espero que haya sido lo suficientemente explicativo. Si tiene alguna consulta con respecto a este artículo, colóquela en la sección de comentarios a continuación.

Haga clic en el enlace de abajo para descargar el archivo de trabajo:

Crear función VBA para devolver matriz

Matrices en Excel Formul | Aprenda qué son las matrices en Excel.

Cómo crear una función definida por el usuario a través de VBA »Wiki Ùtil Aprenda a crear funciones definidas por el usuario en Excel

Usando una función definida por el usuario (UDF) de otro libro usando VBA en Microsoft Excel | Utilice la función definida por el usuario en otro libro de Excel

Devolver valores de error de funciones definidas por el usuario usando VBA en Microsoft Excel | Descubra cómo puede devolver valores de error desde una función definida por el usuario

Articulos populares:

50 accesos directos de Excel para aumentar su productividad

La función BUSCARV en Excel

CONTAR.SI en Excel 2016

Cómo usar la función SUMIF en Excel

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave