Извлечение уникальных значений в Excel с помощью одной функции
В наших предыдущих статьях мы узнали, как извлекать уникальные значения из диапазона, используя комбинацию различных функций Excel. Хотя они работают фантастически, но они тоже сложные, этого нельзя отрицать. Если вы часто извлекаете уникальные значения, эти формулы могут вас утомить. Они тоже делают файл тяжелым и медленным.
Итак, в этой статье мы узнаем, как создать определяемую пользователем функцию, которая принимает диапазон в качестве аргумента и возвращает только уникальные значения из этого диапазона. Вы можете напрямую скопировать код в свой файл и сразу же начать его использовать.
Код VBA для уникальной функции:
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
Скопируйте код в VB-редактор Excel.
Использование функции UNIQUE
Вышеупомянутая функция является link: / custom-functions-in-vba-create-vba-function-to-return-array [определяемая пользователем функция массива с несколькими ячейками]
. Это означает, что вам нужно выбрать диапазон, в котором вы хотите распечатать уникальный список, затем написать формулу и нажать комбинацию клавиш CTRL + SHIFT + ENTER.
На гифке выше у нас есть список стран. Теперь в списке много стран-дубликатов. Мы хотим получить список только уникальных стран.
Для этого выберите диапазон, в котором вы хотите создать уникальный список. Теперь напишите эту формулу:
=UNIQUES(A2:B7) |
Нажмите комбинацию клавиш CTRL + SHIFT + ENTER. И это сделано. Все уникальные значения перечислены в выбранном диапазоне.
Примечание: * Если выбранный вами диапазон больше уникального значения, тогда будет отображаться ошибка # Н / Д. Вы можете использовать его как индикатор окончания уникальных значений. Если вы не видите # N / A в конце списка, это означает, что может быть больше уникальных значений .
Расшифровка кода
В этой функции UD я использовал две основные концепции VBA.
link: / excel-macros-and-vba-how-to-use-vba-collections-in-excel [Коллекции]
и link: / custom-functions-in-vba-create-vba-function-to-return-array [Функция массива, определяемая пользователем]
. Во-первых, мы использовали коллекцию, чтобы получить уникальные значения из предоставленного диапазона.
for Each Value In rng list.Add CStr(Value), CStr(Value) Next next
Поскольку мы не можем распечатать коллекцию на листе, мы перенесли ее в другой массив UList.
for i = 0 To list.Count - 1 Ulist(i, 0) = list(i + 1) Next next
Примечание. * Индексирование массива VBA начинается с 0, а индексирование коллекции начинается с 1. Вот почему мы вычли 1 для массива в цикле for и добавили 1 к индексированию коллекции списков.
В конце концов, мы распечатали этот массив на листе.
Есть УНИКАЛЬНАЯ функция, недоступная в Excel 2016, которая делает то же самое. Эта функция доступна в Excel 2019. Только участники инсайдерской программы имеют доступ к этой функции. Используя эту технику, вы можете похвастаться в офисе тем, что опережаете РС.
Так что да, ребята, вот как вы можете создать функцию, которая просто извлекает уникальные значения. Надеюсь, я достаточно объяснил, чтобы вы это поняли. Если у вас есть какие-либо конкретные вопросы относительно этого или любого другого вопроса, связанного с excel VBA, задайте их в разделе комментариев ниже.
Щелкните ссылку ниже, чтобы загрузить рабочий файл:
`link: /wp-content-uploads-2019-12-UNIQUES-function.xls [__ UNIQUES function]
Статьи по теме:
link: / custom-functions-in-vba-create-vba-function-to-return-array [Создать функцию VBA для возврата массива]
| Узнайте, как создать определяемую пользователем функцию массива, возвращающую массив.
link: / excel-array-formulas-array-in-excel-formula [Массивы в Excel Formul]
| Узнайте, какие массивы есть в Excel.
link: / vba-user-defined-function [Как создать пользовательскую функцию с помощью VBA]
| Узнайте, как создавать пользовательские функции в Excel `link: / custom-functions-userdefined-functions-from-other-workbooks-using-vba-in-microsoft-excel [Использование пользовательской функции (UDF) из другой книги с использованием VBA в Microsoft Excel] `| Используйте пользовательскую функцию в другой книге Excel `link: / custom-functions-return-error-values-from-user-defined-functions-using-vba-in-microsoft-excel [Возвращать значения ошибок из пользовательских функции с использованием VBA в Microsoft Excel] `| Узнайте, как можно вернуть значения ошибок из пользовательской функции