Trabajando con Funciones VBA que Devuelven un Array en Excel 2016

  1. Software
  2. Oficina de Microsoft
  3. Excel
  4. Trabajando con Funciones VBA que Devuelven un Array en Excel 2016

Libro Relacionado

Programación de Excel VBA para Dummies, 4ª Edición

Por John Walkenbach

Las fórmulas de arreglos son una de las características más poderosas de Excel. Si está familiarizado con las fórmulas de los array, le gustará saber que puede crear funciones VBA que devuelvan un array.

Devolución de una serie de nombres de meses

Comencemos con un ejemplo sencillo. La función Nombres de mes devuelve una matriz de 12 elementos de nombres de meses, que usted adivinó.

Función NombresDeMes() NombresDeMes = Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre")Finalizar Función

Para usar la función Nombres de Meses en una hoja de trabajo, debe ingresarla como una fórmula de matriz de 12 celdas. Por ejemplo, seleccione el rango A2:L2 e introduzca =MonthNames(). Luego presione Ctrl+Mayús+Enter para ingresar la fórmula del arreglo en las 12 celdas seleccionadas. Compruebe el resultado.

Uso de la función Nombres de Meses para devolver un arreglo de 12 elementos.

Si desea que los nombres de los meses se muestren en una columna, seleccione 12 celdas en una columna y utilice esta fórmula de matriz. (No olvide introducirlo pulsando Ctrl+Mayús+Intro.)

=TRANSPOSE(NombreMes())

También puede elegir un solo mes de la matriz. Aquí hay una fórmula (no una fórmula de matriz) que muestra el cuarto elemento de la matriz: April.

=INDEX(NombresMes(),4)

Devolución de una lista ordenada

Suponga que tiene una lista de nombres que desea mostrar en orden orden en otro rango de celdas. ¿No sería bueno que una función de hoja de cálculo lo hiciera por ti?

Esta función personalizada hace precisamente eso: Toma como argumento un rango de celdas de una sola columna y luego devuelve una matriz de esas celdas ordenadas. El rango A2:A13 contiene algunos nombres. El rango C2:C13 contiene esta fórmula de arreglo multicelular. (Recuerde que debe introducir la fórmula pulsando Ctrl+Mayús+Intro.)

Usar una función personalizada para devolver un rango ordenado

 =Sorted(A2:A13)

Aquí está el código de la función Clasificado:

Función SortedData(Rng como rango) Dim SortedData() As Variant Dim Cell As Range Dim Temp As Variant, i As Long, j As Long Dim NonEmpty As Long' Transfer data to Each Cell In Rng If Not IsEmpty(Cell) Then NonEmpty = NonEmpty + 1 ReDim Preserve SortedData(1 To NonEmpty) SortedData(NonEmpty) = Cell.

V

alor Finalizar si siguiente celda' Ordenar la matriz Para i = 1 A no vacío Para j = i + 1 A no vacío Si ordenadosDatos(i) > OrdenadosDatos(j) Entonces Temp = OrdenadosDatos(j) = OrdenadosDatos(i) OrdenadosDatos(i) = OrdenadosTemp Fin Si Siguiente j Siguiente i' Transponer la matriz y devolverla Ordenada = OrdenadaAplicación.ordenada(DatosSortedDatos) Función Fin

La función Ordenar comienza con la creación de una matriz llamada SortedData. Esta matriz contiene todos los valores no en blanco en el rango de argumentos. A continuación, se ordena la matriz SortedData, utilizando un algoritmo de clasificación de burbujas. Debido a que el arreglo es un arreglo horizontal, debe ser transpuesto antes de ser devuelto por la función.

La función clasificada funciona con un rango de cualquier tamaño, siempre y cuando esté en una sola columna o fila. Si los datos sin clasificar están en una fila, la fórmula necesita utilizar la función TRANSPOSE de Excel para visualizar los datos clasificados horizontalmente. Por ejemplo:

=TRANSPOSO(Clasificado(A16:L16))

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *