EXCEL VBA 2次元配列から1次元配列へ変換・マトリックス表からリスト表へ変換(Array・Transpose・配列変換)

 

EXCEL VBA 2次元配列から1次元配列へ変換・マトリックス表からリスト表へ変換(Array・Transpose・配列変換)テクニック

 

 ●はじめに

今回、説明するサンプルプログラムは、マトリックスの表データを2次元配列に格納して1次元配列へ変換してリスト表へ転記するサンプルプログラムです。リスト表からマトリックス表へ変換(集計)する作業は、日常業務でも多く発生し、一般的に集計表などを作成する時に利用しますが、今回は、その逆にあたるマトリックス表からリスト表に変換する(戻す)方法を説明します。元となるリスト表が無くてもマトリックス表のみを利用して、リスト表を作成する事ができます。リスト表を作成する事で、データの追記や再度、マトリックス表(集計表)を作成する時には、便利だと思います。それでは、サンプルプログラムを交えて順番に説明いたします。

 

 

 

EXCEL VBA 2次元配列から指定した行データを1次元配列に格納しセルに出力します。

 

 

 ●プログラム説明 (サンプル①)

下記のサンプルプログラムは、マトリックス表を2次元配列に格納して、格納した2次元配列データから指定した配列データを1次元配列へ変換してリスト表としてセルに転記するサンプルプログラムです。2行目のデータをG列に出力します。



【プログラムの流れ】

① セル(A1:E9)の内容を2次元配列へ登録します。
② 2次元配列へ登録した指定行(2行目)のデータを一次元配列に格納する。
③ 1次元配列へ登録したデータをセルに出力します。

【プログラム実行条件】

・ セル(A1:E9)に上記のようなマトリックス表データを登録します。

 

 

 

 

 ●実行前~実行後 ※プログラム実行後、2次元配列に登録したデータから2行目のデータ(東京)が転記されました。
(画面クリックして拡大)

 

 

 

EXCEL VBA 2次元配列から指定した列データを1次元配列に格納しセルに出力します。

 

 

 ●プログラム説明 (サンプル②)

下記のサンプルプログラムは、マトリックス表を2次元配列に格納して、格納した2次元配列データから指定した配列データを1次元配列へ変換してリスト表としてセルに転記するサンプルプログラムです。今回は、5列目(E列)のデータをG列に出力します。

【プログラムの流れ】

① セル(A1:E9)の内容を2次元配列へ登録します。
② 2次元配列へ登録した指定行(5列目:7月)のデータを一次元配列に格納する。
③ 1次元配列へ登録したデータをセルに出力します。

【プログラム実行条件】

・ セル(A1:E9)に上記のようなマトリックス表データを登録します。

 

 

 

 

●実行前~実行後 ※プログラム実行後、2次元配列に登録したデータから5列目(E列)のデータが転記されました。
(画面クリックして拡大)

 

 

 

 

 

EXCEL VBA 2次元配列から指定した列データを1次元配列に格納しセルに出力します。
(格納した1次元配列を変更:縮小)

 

 ●プログラム説明 (サンプル③)

下記のサンプルプログラムは、上記サンプルプログラム②の応用編になります。マトリックス表を2次元配列に格納して、格納した2次元配列データから指定した配列データを1次元配列へ変換してリスト表としてセルに転記するサンプルプログラムです。今回は、4列目(D列)のデータを1次元配列に格納されますが、1件目の「6月」を取り除き、2件目以降のデータのみG列に出力するサンプルプログラムです。

【プログラムの流れ】

① セル(A1:E9)の内容を2次元配列へ登録します。
② 2次元配列へ登録した指定行(5列目:7月)のデータを一次元配列に格納する。
③ 1次元配列に登録されている1件目を取り除き、配列の大きさを縮小します。
④ 縮小した1次元配列のデータをセルに出力します。

【プログラム実行条件】

・ セル(A1:E9)に上記のようなマトリックス表データを登録します。

 

 

 

●実行前~実行後 ※プログラム実行後、2次元配列に登録したデータから4列目(D列)を1次元配列へ格納して、1次元配列に格納された1件目のデータ「6月」を取り除き、1次元配列を縮小して、指定されたセルG列にデータが転記されました。
(画面クリックして拡大)

 

 

 

 

EXCEL VBA 2次元配列からデータ部分全てを1次元配列に格納しセルに出力します。
(別シートにリストデータを出力)

 

 

 ●プログラム説明 (サンプル④)

下記のサンプルプログラムは、上記サンプルプログラム③の応用編になります。マトリックス表を2次元配列に格納して、格納した2次元配列データからデータ部分全てを1次元配列へ格納してリスト表(一覧)として別シートのセルに転記するサンプルプログラムです。今回は、全てのデータを1次元配列に格納されますが、シート「DATA」のマトリックス表の1列目とA列のデータを取り除きDATA部分のみ別シート「LIST」のA列に出力するサンプルプログラムです。


【プログラムの流れ】

① ワークシート「DATA」に作成しているマトリックス表の内容を2次元配列へ登録します。(表の大きさは、自動取得します)
② 2次元配列へ登録したデータを一次元配列に全て格納する。
③ 1次元配列に登録されている1行名のデータとA列のデータを取り除き、配列の大きさを縮小します。
④ 縮小した1次元配列のデータをワークシート「LIST」のA列に出力します。

【プログラム実行条件】

・ ワークシート名「DATA」に上記のようなマトリックス表データを登録します。
※A1を起点に作成して下さい。
・ ワークシート名「LIST」を作成します。

 

 

 

 

  ●実行前~実行後 ※プログラム実行後、2次元配列に登録したデータからデータ部分を1次元配列へ格納して、別シート「LIST」のA列にデータ部分のみ出力されました。
(画面クリックして拡大)

 

 

 

 

マトリックス表の2次元配列データから年月・支店名・データを年月・支店名・金額を行単位のデータとして、別シートに転記します。
(別シートにリストデータを出力)

 

 

 ●プログラム説明 (サンプル⑤)

下記のサンプルプログラムは、マトリックス表を2次元配列にデータ部分を格納して、年月・支店名・金額を行単位にデータ化し、別シート「1次元」へ転記します。今回は、集計表(マトリックス表)を行データとして変換する(元データ)事になります。集計する際の元データが無い場合に、利用できるプログラムだと思います。


【プログラムの流れ】

① ワークシート「2次元」に作成しているマトリックス表の内容を2次元配列へ登録します。(表の大きさは、自動取得します)
② 2次元配列へ登録したデータ部分を一次元配列に全て格納する。
③ データの転記先、ワークシート「1次元」の文字列データを削除します。
④ 1次元配列に登録されている1行名のデータとA列のデータを取り除き、配列の大きさを縮小します。
⑤ ワークシート「1次元」に年月をAセルに転記します。
⑥ ワークシート「1次元」に支店名をBセルに転記します。
⑦ ワークシート「1次元」に縮小した1次元配列のデータを金額としてC列に出力します。

【プログラム実行条件】

・ ワークシート名「2次元」に上記のようなマトリックス表データを登録します。
※A1を起点に作成して下さい。
・ ワークシート名「1次元」を作成します。
※出力先のワークシートを作成します。

 

 

 

 

  ●実行前~実行後 ※プログラム実行後、マトリックス表を2次元配列にデータ部分を格納して、年月・支店名・金額を行単位にデータ化し、別シート「1次元」へ転記されました。
(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。