医療事務がプログラムで仕事を自動化し楽をする|2次元配列

PR

当サイトではアフィリエイト広告を利用しています。

PR

当サイトではアフィリエイト広告を利用しています。

プログラミング
スポンサーリンク

1次元配列は1行の配列でしたが、複数行を一度に用意するのが2次元配列です。何千行、何万行とあるCSVデータでも一気に配列格納出来る優れものとなります!

1次元配列の使い方はこちらになります。

2次元配列

  • 範囲の値を一度に格納出来る
  • LBoundとUBoundを覚える
  • Offsetを覚えると更に便利

イメージ

1行だった配列を複数行で使える様にしたのが2次元配列です。

1次元配列
2次元配列

サンプルプログラム

今回は下図の範囲(B2:F4)を配列に入れて、コピーする物を作ってみましょう。

2次元配列を使用すると行・列の2種類を使用する事となるので、必然的に多重ループを使用することになります。まずは全体図はこの様になります。
シートを用意して数値を入れてコピペで動きを見るのも良いと思います。

配列の設置

まずは8行目の配列設置ですね、範囲を選択し配列にします。このやり方だと配列は(0,0)ではなく(1,1)から始まります。Excelだとシートの扱いとほぼ同じイメージになります!

配列:MyAry(1,1) = 1 ~MyAry(3,5) = 15まで格納したので、これを元に処理を進めます。

行列の処理

(MyAry,1)と(MyAry,2)と多重ループなっていますが、1は行方向、2は列方向でそれぞれの処理を行う様になっていて、ループの処理は以下の様になります。

配列変数 ir
(1次元)
変数 ic
(2次元)
格納値
MyAry(1, )10
MyAry(1,1)111
MyAry(1,2)122
・・・
MyAry(1,5)155
MyAry(2, )20
MyAry(2,1)216
・・・
MyAry(2,5)2510
MyAry(3, )30
MyAry(3,1)3111
・・・
MyAry(3,5)3515

1次元配列でも少し出てきましたが、配列を扱うにあたって重要な関数がLBoundとUBoundとなります。これを使い配列のループを行うことで、任意の処理をすることが可能となってきます。

Offsetプロパティ

最後は格納値を別のセルに書き込む作業で、ここで重要になってくるのがOffsetプロパティです。指定位置からの移動距離を指定する機能で、慣れてくると使用頻度が上がるプロパティなので徐々に覚えていったほうが良い物です。

使用しなくても同じ結果にするコードを書くことは可能ですが、行列方向に何セル動くかを数えなくてはなりませんので、Offsetプロパティを使用した方がスムーズに考える事が出来ると思います。

プロパティ名動作
RowOffset行方向に移動:1以上なら下へ
       0はそのまま
       ‐1以下は上へ
columnOffset列方向に移動:1以上なら右へ
       0はそのまま
       ‐1以下は左へ

B7のセルを基準に書き込みを行いたいのですが、最初の配列はMyAry(1,1)となっているため、そのままの変数の値で使用してしまうと「行方向に1」、「列方向に1」ずつずれが生るため、両方向に「‐1」を加えて相殺する事で開始位置を設定しています。

そのままだとグレーの位置になるため、白の選択範囲になる様に調整してます!
状況にもよりますが、計算して開始位置を求める必要が出てきます。

まとめ

  • 配列のループはセルと同じ考えで処理する
  • Offsetは開始位置を計算して使う

お読みいただきありがとうございました。

タイトルとURLをコピーしました