配列をもっと簡単に扱いたい
タイトル通り、VBAの配列を簡単に扱うクラスを公開します。
GitHubからArrayEx.clsをダウンロードして、VBEにインストールしてください。
vba/Class at master · rsinz/vba · GitHub
使い方
一部の機能のサンプルです。
たとえば、以下のようなデータ表があるとします。
この表の、各商品の「個数の合計」と「合計金額の平均」を算出してみます。
Sub Test() ' まずはデータ表全体を取り込みます Dim 売上 As New ArrayEx 売上.CurrentRegion = Range("B3") ' 一意の商品名リストを取り出します。この場合、"りんご"、"みかん"、"ぶどう"が商品名に格納されます Dim 商品名リスト As New ArrayEx 商品名リスト = 売上.Slicer(1).GroupBy ' 1列目を縦にスライスして、重複削除しています ' それぞれの商品における、個数の合計と金額の平均を出してみます For Each 商品名 In 商品名リスト.value Debug.Print 商品名 & "の合計個数 : "; Debug.Print 売上.Init.Filter_(商品名, 1).Sum_(2) ' 1列目を商品名でフィルターして、2列目の合計を出します Debug.Print 商品名 & "の平均売上高 : "; Debug.Print 売上.Init.Filter_(商品名, 1).Average_(4) ' 1列目を商品名でフィルターして、4列目の平均を出します Next End Sub
(上記のコードを実行し、イミディエイトウィンドウで確認してみてください)
コードを見てもらうと分かるように、メソッドチェーンをしています。
なので、どうしても内部で計算過程を保持しておく必要があり、初期に取り込んだデータに戻したい場合は[.Init]メソッドを実行してください。
終わりに
ArratExは一次元と二次元の配列を意識して、簡単に処理できるように作りました。
今回紹介したクラスで少しは、配列処理をシンプルに書けるようになると思います。
バグ等ありましたら、コメントにて教えていただけると助かります。
一部、いげ太様のAriawaseを参考にしています。いつもお世話になっております。
github.com