【Excel VBA】マトリックス形式から表形式に変換するマクロの作成方法!

どーも Takeです。

久々のブログ投稿です(さぼるにさぼってました笑)。

 

この記事ではマトリックス形式から表形式に変換するマクロの作成方法について簡単に解説します。

これはこのマクロが仕事で必要になったため、自分用に作りました。

 

もしよければ参考にしてみてください。

※ いつものようにつくったのも共有しときますので、よければどうぞ(ブック保護、シート保護はかかってます)。

 

 

 

スポンサーリンク

マクロの作り方

 

マトリックス形式から表形式に変換するマクロの作り方を簡単にざっくり説明します。

正直超簡単なので、安心してください。

順にシート構成、VBAのソースコードと説明します。

 

シート構成

 

シートは下記4シートから構成されます。

 

  1. main ・・・マクロのフロントシート。これは実行ボタンを置いて説明を書いただけのシートです。
  2. setting(非表示シート) ・・・ 「matrix」シートの設定を記述するシートです(マクロ内で自動記載されます)。
  3. matrix ・・・ 入力シート。マトリックス形式のデータを登録するシートです。
  4. table ・・・ 出力シート。表形式のデータが出力されるシートです。

 

シートの内容について説明します。

※ mainシートは特に重要でないため省きます。

 

「setting」シート

 

 

 

「setting」シートは非表示シートのため中身が見れません。

非表示にする理由として、値をいじられたくないからです。

このシートでは「matrix」シートの設定内容が Excel 関数で取得できるようになっています。

また Excel 関数が万が一消えたことを想定して Excel マクロ内で記述するように設定しています。

Excel 関数はこんな感じのことが書かれています。

 

  1. A5 セル ・・・=IFERROR(MATCH("*?",INDEX(matrix!A:A&"",0),0),0)
  2. B5 セル ・・・ =IFERROR(COUNTA(matrix!A:A)+1,0)
  3. C5 セル ・・・ =IFERROR(MATCH("*?",INDEX(matrix!1:1&"",0),0),0)
  4. D5 セル ・・・ =IFERROR(COUNTA(matrix!1:1)+1,0)

 

要は「matrix」シートの列と行のデータのはじまりと終わりの位置情報(セルの何行目何列目か)を取得しているだけです。

 

「matrix」シート

 

 

 

「matrix」シートは入力シートです。

注意点は列名、行名が入っている箇所のみデータが出力される点です。

上記の画面では、列名行名が入力されている赤枠しかデータ出力されないので注意が必要です。

 

「table」シート

 

 

 

「table」シートは出力シートです。

「matrix」シートに登録されたデータが出力されます。

まあ、それだけです。

 

ソースコード

 

作成したマクロのVBA ソースコードは下記になります。

長そうに感じますが、そんな難しい処理はしていません。

コードの簡単な解説はソースコードの下にします。

 

 

ソースコードでは下記のような処理を順にしています。

 

  1. メイン処理(main) ・・・ ただのメイン処理、ここに下記関数を順に実行しています。
  2. 初期設定(setting) ・・・ 「table」シートの初期化、シート名の設定、「setting」シートに関数を埋め込みます。
  3. マトリックスデータ取得(getMatrixData) ・・・ 「matrix」シートの値を取得して配列に格納しています。
  4. 表形式に書き込み(setTableData) ・・・ 「matrix」シートの値(配列)をループ文(for Each文)で「table」シートに書き込みます。
  5. 後処理(aterSetting) ・・・ 完了メッセージ、全シートを「A1」セルに選択してます。

 

これがすべてです。めちゃくちゃシンプルなやり方だと思います。

「よくわからん」と思った人もソースコードをよく見ればたぶんなんとかわかると思います(ざっくりですみません。。)

 

最後に

いかがでしょうか?

 

今回はマトリックス形式から表形式に変換するマクロの作成方法をご紹介しました。

ブログ書くの楽しいですね。またなんか作ったら投稿します。

 

なんか作ってほしいマクロがあれば「お問い合わせ」から問い合わせてください。

簡単そうなものならつくります。

ではでは。

スポンサーリンク
おすすめの記事