Добавление уникальных значений с помощью VBA в Microsoft Excel
В этой статье мы создадим пользовательскую функцию (UDF) или пользовательскую функцию для добавления уникальных значений в определенный диапазон.
Исходные данные для этой статьи состоят из случайных чисел в семи различных выборках.
Добавьте еще один столбец, чтобы найти сумму значений в каждой строке.
В столбце «Общая сумма» отображается сумма чисел в каждой строке.
Теперь добавьте еще один столбец, чтобы найти сумму только уникальных чисел в каждой строке. Мы создали определяемую пользователем функцию «AddDistinctValues», чтобы найти сумму уникальных чисел. Добавьте формулу = AddDistinctValues (A11: G11) в ячейку I11 и перетащите формулу в другие строки.
UDF «AddDistinctValues» даст сумму уникальных чисел в заданном диапазоне. На изображении ниже легко увидеть разницу между общей суммой и суммой уникальных чисел.
Логическое объяснение
UDF «AddDistinctValues» принимает в качестве входных данных объект диапазона. Он складывает уникальные числа во входном диапазоне.
Чтобы найти уникальные числа во входном диапазоне, мы использовали объект коллекции. Поскольку мы знаем, что коллекция не может хранить повторяющиеся значения, когда мы вставляем числа во входной диапазон в коллекции, повторяющиеся числа не будут повторно вставлены в коллекцию, вместо этого будет сгенерирована ошибка.
Для обработки ошибки мы использовали оператор «On Error Resume Next».
Этот оператор не остановит функцию при обнаружении ошибки, вместо этого Loop перейдет к следующему оператору.
Когда у нас есть уникальные числа в коллекции, мы можем добавить их в массив.
Пожалуйста, введите код ниже
Function AddDistinctValues(InputRange As Range) As Integer 'Declaring variables Dim Rng As Range Dim UniqueValues As New Collection Dim UniqueValue As Variant 'Recalculates the function whenever calculation occur in any other cell Application.Volatile On Error Resume Next 'Adding unique values to collection from input range For Each Rng In InputRange UniqueValues.Add Rng.Value, CStr(Rng.Value) Next On Error GoTo 0 AddDistinctValues = 0 'Adding values in the collection For Each UniqueValue In UniqueValues AddDistinctValues = AddDistinctValues + UniqueValue Next End Function
Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.
Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]