В этой статье мы создадим пользовательскую функцию (UDF) или пользовательскую функцию для добавления уникальных значений в определенный диапазон.

Исходные данные для этой статьи состоят из случайных чисел в семи различных выборках.

ArrowRawData

Добавьте еще один столбец, чтобы найти сумму значений в каждой строке.

ArrowTotal

В столбце «Общая сумма» отображается сумма чисел в каждой строке.

Теперь добавьте еще один столбец, чтобы найти сумму только уникальных чисел в каждой строке. Мы создали определяемую пользователем функцию «AddDistinctValues», чтобы найти сумму уникальных чисел. Добавьте формулу = AddDistinctValues ​​(A11: G11) в ячейку I11 и перетащите формулу в другие строки.

UDF «AddDistinctValues» даст сумму уникальных чисел в заданном диапазоне. На изображении ниже легко увидеть разницу между общей суммой и суммой уникальных чисел.

ArrowUniqueNoSum

Логическое объяснение

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]