myUniqe2

動的配列数式なるものが実現する前に配列とカスタム関数/自作関数に慣れておきましょう。

myUniqe関数を改造して、2列目に出現回数を入れるようにしました。

'ユニーク、一意のデータを1列目、出現回数を2列名に出力
Function myUniqe2(r As Range)
    Dim col As New Collection 'コレクションオブジェクト
    Dim colAll As New Collection
    Dim x
    For Each x In r '引数のRangeオブジェクトを個々にxに入れる
        colAll.Add VBA.CStr(x)
        On Error GoTo myErr 'エラーの罠
        col.Add VBA.CStr(x), VBA.CStr(x)
        On Error GoTo 0 'エラートラップのリセット
    Next
    ReDim ar(10000, 1)  'NA大作のため大きめの配列にした。1は0と1で2列
    Dim i As Integer, cnt As Integer
    Dim xx
    For Each x In col '一意なコレクション
        cnt = 0 '個数の初期化
        For Each xx In colAll '全データ
            If xx = x Then cnt = cnt + 1 '全データを順番にxxに入れてxと比較
        Next
        ar(i, 0) = x '値
        ar(i, 1) = cnt '個数
        i = i + 1
    Next
    myUniqe2 = ar
    Exit Function
myErr: 'ラベル:を付ける
    Resume Next
End Function
(Visited 29 times, 1 visits today)
カテゴリー: 9 セルの中で使うユーザー定義関数の作成 <VBA> パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です