image

En nuestros artículos anteriores, hemos aprendido cómo extraer valores únicos de un rango usando una combinación de diferentes funciones de Excel. Aunque funcionan fantásticamente, pero también son complejos, no se puede negar esto. Si realiza la extracción de valores únicos con frecuencia, esas fórmulas pueden cansarlo. Ellos también hacen que el archivo sea pesado y lento.

Entonces, en este artículo, aprenderemos cómo crear una función definida por el usuario que toma un rango como argumento y devuelve solo valores únicos de ese rango. Puede copiar directamente el código a su archivo y comenzar a usarlo inmediatamente.

Código VBA para función única:

Function UNIQUES(rng As Range) As Variant()

Dim list As New Collection

Dim Ulist() As Variant

'Adding each value of rng to the collection.

On Error Resume Next

For Each Value In rng

'here value and key are the same. The collection does not allow duplicate keys hence only unique values will remain.

list.Add CStr(Value), CStr(Value)

Next

On Error GoTo 0

'Defining the length of the array to the number of unique values. Since the array starts from 0, we subtract 1.

ReDim Ulist(list.Count - 1, 0)

'Adding unique value to the array.

For i = 0 To list.Count - 1

Ulist(i, 0) = list(i + 1)

Next

'Printing the array

UNIQUES = Ulist

End Function

Copie el código al editor VB de Excel.

Usando la función ÚNICA

La función anterior es un enlace: / funciones-personalizadas-en-vba-create-vba-function-to-return-array [función de matriz multicelda definida por el usuario]. Significa que debe seleccionar el rango donde desea que se imprima la lista única, luego escribir la fórmula y presionar la combinación de teclas CTRL + MAYÚS + ENTRAR.

En el gif de arriba, tenemos una lista de países. Ahora hay muchos países duplicados en la lista. Solo queremos obtener la lista de países únicos.

Para hacerlo, seleccione un rango donde desee la lista única. Ahora escribe esta fórmula:

=UNIQUES(A2:B7)

Presione CTRL + MAYÚS + ENTRAR combinación de teclas. Y ya está. Todos los valores únicos se enumeran en el rango seleccionado.

Nota: * Si el rango que ha seleccionado es mayor que el valor único, entonces mostrará el error # N / A. Puede usarlo como una indicación de finalizar valores únicos. Si no ve # N / A al final de la lista, significa que puede haber más valores únicos .

Explicación del código

He usado dos conceptos principales de VBA en esta función de UD.

enlace: / excel-macros-and-vba-how-to-use-vba-collections-in-excel [Colecciones]

y link: / custom-functions-in-vba-create-vba-function-to-return-array [Función de matriz definida por el usuario]. Primero, hemos utilizado una colección para obtener los valores únicos del rango proporcionado.

for Each Value In rng

list.Add CStr(Value), CStr(Value) Next

next

Como no podemos imprimir una colección en la hoja, la transferimos a otra matriz UList.

for i = 0 To list.Count - 1

Ulist(i, 0) = list(i + 1) Next

next

Nota: * La indexación de matrices de VBA comienza desde 0 y la indexación de colecciones comienza desde 1. Es por eso que hemos restado 1 para matriz en bucle for y agregado 1 a la indexación de la colección de listas.

Al final, hemos impreso esa matriz en la hoja.

Hay una función ÚNICA que no está disponible para Excel 2016 que hace lo mismo. Esa función está disponible en Excel 2019. Solo los miembros del programa de información privilegiada tienen acceso a esa función. Al usar esta técnica, puede presumir en la oficina de estar por delante de la EM.

Así que sí, chicos, así es como pueden crear una función que extraiga valores únicos simplemente. Espero haber sido lo suficientemente explicativo para hacerles entender esto. Si tiene alguna pregunta específica con respecto a esta o cualquier otra pregunta relacionada con Excel VBA, hágala en la sección de comentarios a continuación.

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

`enlace: /wp-content-uploads-2019-12-UNIQUES-function.xls [__ Función UNIQUES]

Artículos relacionados:

enlace: / funciones-personalizadas-en-vba-create-vba-function-to-return-array [Crear función VBA para devolver la matriz] | Aprenda a crear una función de matriz definida por el usuario que devuelva una matriz.

link: / excel-array-formulas-arrays-in-excel-formula [Matrices en Excel Formul] | Aprenda qué son las matrices en excel.

link: / vba-user-defined-function [Cómo crear una función definida por el usuario a través de VBA] | Aprenda a crear funciones definidas por el usuario en Excel `link: / custom-functions-userdefined-functions-from-other-workbooks-using-vba-in-microsoft-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 `enlace: / custom-functions-return-error-values-from-user-defined-functions-using-vba-in-microsoft-excel [Devolver valores de error desde funciones usando VBA en Microsoft Excel] `| Descubra cómo puede devolver valores de error desde una función definida por el usuario