★★★★★★Access2000VBA・Excel2000VBA独学~例えば、セル結合もある、「3行単位で1レコード」の帳票を、1行1レコードの一覧表に変換する若干汎用的なプログラム~
  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
  
ご注意!!
列名(項目名)の処理が完全ではないので、プログラム実行後に、自分で列名のセルだけ正しい列に移動させる必要があります。あるいは、そこをご自分でプログラム化してみてください。

  
※関連記事
★★★★★★Access2000VBA・Excel2000VBA独学~結合セルの最初のセルと最後のセルのアドレス(番地)を調べる自作関数~請求書の「明細データ」などの、「結合されたセルを持つ帳票」のセルデータをテーブルデータなどに整形・クレンジング(?)するときなどに。~

  
  
★ サンプルファイルダウンロード

こちらからダウンロードしてください。

Esetでウィルスチェックしてあります。

ファイルを開いたら、Alt+F11 でVBEditorを開きます。
その中の「使用する_本番」というモジュールをダブルクリックすると、一番上の、tes007()というプロシージャで動きを確認できます。

「'★ 設定部」の「i_flg01 = 1」を「i_flg01 = 0」に変えると、「ヨコ展開の下蓄積の動き」から、「縦展開の右蓄積の動き」に変わります。

動きが遅い場合は「Application.ScreenUpdating = False」を追記するなどしてください。

  
  
★ はじめに

  

という、ある意味メチャクチャな表・・・・。

それを本記事のコードで以下のような一覧表にします。

あるいは

という形にします。

列名のセル結合の状態が、データ部分の状態と同じではないので、転記完了後に列名を整形しないといけません。

ただ、それであっても、いちおう、列名も(セル結合してあっても)転記できます。

セル結合の状態が多少規則正しくなくても「一度に処理する数行の中の項目数」が同じで、また、もちろん一度に処理する行数がすべて同じ帳票なら、基本的にはこのプログラムで処理できると思います。

そのような表に限っては、VBAにそこそこ慣れている方なら、パワークエリの「変換」?のようなものを使うよりも早いと思います。

ただ、「前ゼロ」のようなものの処理ができないままなので、そういうデータの場合は、別の関数を作ったり、条件分岐を増やしたりする必要があります。