F0000034_要素の範囲を指定して配列を切り抜く(トリミング)

要素の範囲を指定して配列を切り抜く(トリミング) アスパLab

この関数について

ExcelVBA(マクロ)では2次元配列のレコード(行)にあたる1次元目の要素数を途中で変更(Redim)することができません。そのため処理の結果に応じて可変する配列の作成はマクロでプログラムを作成するときによくぶつかる問題です。いくつかある解決策のひとつは、仕様上その要素数を超えることがないくらい大きな配列を作っておいてデータの格納後、データが格納されているレコード数を数えて、新たに配列を作成しデータを移し替えてしまうことです。このページで紹介する関数は指定した範囲で配列を切り出し、切り出した配列を返します。

関数コピペ ~コードをクリックするだけでコピー完了!~



使い方 ①引数

■第一引数:arr
  渡せるのは2次元配列のみです。

■第二引数:start_index
  切り出す最初のレコード(行)の添え字を渡します。

■第三引数:end_index
  切り出す最後のレコード(行)の添え字を渡します。

■第四引数:base_index
  戻り値の配列の最初の添え字を指定できます。指定しなければ1を指定(base:1)ものとみなします。

使い方 ②戻り値

配列を切り抜いた配列を返します。

サンプルコード(クリックでコピー)






【結果】切り抜いた配列を取得できました

サンプルコードを実行すると切り抜き前の配列の要素数と切り抜き後の配列の要素数をそれぞれイミディエイトウィンドウに出力します。関数に渡す切り抜き範囲を変えて試してみてください。

関数リファレンスにはコピペで使用可能な便利関数を多数掲載!

関数リファレンスでは私が開発の中で必要になったコード部品を汎用化・関数化して公開しています。この記事で紹介した関数以外にもコピペで利用できる関数を多数用意しています。検索窓から必要な機能を検索してみましょう!解説記事も続々公開中。

Comment