この関数について
ExcelVBA(マクロ)を初めてのプログラム言語に選んだ場合、多くの方がまずはブックを開く、シート名称を変更する、セルに数式を入力するといったExcelの基本操作を自動化することから覚えると思います。しかし、データ処理をすべてセル上で実施していると大量の顧客データや請求データを扱う場合、実行速度にストレスを感じるようになります。ExcelVBAでは、高級なプログラミング言語と同様に配列を使用することができ、いったんデータはすべて配列に格納し、計算・加工の工程は配列上で行い、結果をシートに書き出すという処理の流れとするだけで驚くほど実行速度が改善されます。前置きが長くなりましたが、シート上にデータベースよろしく配置されたデータを配列へ格納する関数を作成しました。長年のカスタマイズを経て、なるべく汎用的に使えるようにできたつもりです。
使い方 ①引数
■引数1:target_ws
まずデータが格納されたワークシートを指定します。ExcelVBAの操作では、セルのみを指定した操作は、意図したシートで処理されない可能性があります。ユーザーはなかなかあなたの思い通りには動いてくれません。ワークシートは必ず指定します。
■引数2:header_row
データのヘッダーを行の番号で指定します。
■引数3:header_inport
Boolean型で指定します。
True:ヘッダーも配列に取り込みます。False:ヘッダーを配列に取り込みません。
■引数4:first_col
データが格納された先頭列を列のアルファベット文字列で指定します。この指定があることで表の任意の列からデータを取得することができます。例)”A”
■引数5:primary_col
データに空白がない列を列のアルファベット文字列で指定します。指定した列に格納されたデータ数を数えて取得する行数とみなします。
■引数6:end_col
データが格納された最終列を列のアルファベット文字列で指定します。この指定があることで表の任意の列までのデータを取得することが可能です。
■引数7:var_type_code
返値の配列の型を指定します。Variant、String、Long、Double、Dateを指定可能です。ExcelVBAの定数を使って指定します。
例)vbVariant vbString vbLong vbDouble vbDate
◆引数8:base_index
配列の先頭の添え字(Base)を数値で指定できます。
使い方 ②呼び出し方例(サンプルコード)
'【テスト】GetArrayFromTable:シート内の指定した表を配列で取得する
Public Sub Test_GetArrayFromTable()
Dim ws As Worksheet
Dim result_table() As Long
Set ws = ThisWorkbook.Worksheets(1)
'■事前に「B1:F3」にデータが入っているものとする。
result_table = GetArrayFromTable(ws, 1, True, "B", "B", "F", vbLong, 1)
'■「G1:K3」に取り込んだデータをそのまま貼り付ける
ws.Range("H3:L5").Value = result_table
End Sub
【結果】表のデータを配列に格納できました
サンプルコードの出力結果は以下のようになります。
↓
Comment