この記事では、ユーザー定義関数(UDF)またはカスタム関数を作成して、定義された範囲に一意の値を追加します。

この記事の生データは、7つの異なるサンプルの乱数で構成されています。

ArrowRawData

別の列を追加して、各行の値の合計を見つけます。

ArrowTotal

「合計」列には、各行の数値の合計が表示されます。

次に、別の列を追加して、各行の一意の数値のみの合計を見つけます。一意の数値の合計を見つけるために、ユーザー定義関数「AddDistinctValues」を作成しました。セルI11に数式= AddDistinctValues(A11:G11)を追加し、数式を他の行にドラッグします。

UDFの「AddDistinctValues」は、定義された範囲内の一意の数値の合計を示します。下の画像では、合計と一意の数の合計の違いを簡単に確認できます。

ArrowUniqueNoSum

ロジックの説明

UDF「AddDistinctValues」は範囲オブジェクトを入力として受け取ります。入力範囲内の一意の数値を合計します。

入力範囲内の一意の番号を見つけるために、コレクションオブジェクトを使用しました。コレクションは重複する値を格納できないことがわかっているため、コレクションの入力範囲に数値を挿入すると、重複する数値はコレクションに再挿入されず、代わりにエラーが生成されます。

エラーの処理には、「On ErrorResumeNext」ステートメントを使用しました。

このステートメントは、エラーが発生しても関数を停止しません。代わりに、ループは次のステートメントに移動します。

コレクションに一意の番号を取得したら、それらを配列に追加できます。

コードについては以下に従ってください

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]までご連絡ください