縦もちデータ(マトリクス)をデータベースで使えるようにマクロで4列になるように成型処理
動画でExcel データ1件が4行で1列にずらずら続く縦もちデータ
データ1件が4行で1列にずらずら続く縦もちデータ
動画版「マクロ講座入門EX」08回の解説です。
- 【動画で解説している内容】
- 1.不規則なデータの整形方法を学ぶ。
- 2.VBAマクロを使用してデータを4列に整理する方法を学ぶ。
- 3.手作業でデータ整形する時間を削減する方法を学ぶ。
- 4.古いデータ形式を現代のデータベース形式に変換する方法を学ぶ。
- 5.VBAコードの基本構文と処理の流れを理解する。
- 6.データ整形を効率化し、残業を減らす方法を学ぶ。
- 7.エクセルマクロを活用して、データ操作のスキルを向上させる。
(サンプルファイルは、こちらです。 データ1件が4行で1列にずらずら続く縦もちデータ、サンプル08回)
マクロ動画 データ1件が4行で1列にずらずら続く縦もちデータ
困った縦長データ4行が1件分の縦に長ーいデータ
このようなデータに遭遇したことはないでしょうか?一番上がコードで、
2行目が名前で、3行目がデータで、4行目は電話番号という
4行が1件分のデータなどです。
その縦長データを使いやすい形に整形したデータがこちらになります。
そこで最初の案として、データの移動を考えました。2行目のデータを隣の列のデータにするということです。
上記コードを実行した結果次のようになりました。不要になったデータは削除すればいいのです。
方法はマクロでも、手動でも、どちらにせよデータの件数分の削除が必要です。
見出し3
なぜデータの行を1行分下げたのかというと、1行目に見出しを入れようと考えたからです。こちらには、空白行を削除するコードも書き加えました。
実行しました。最終的に欲しかったのはこの形のデータです。
ではコードの説明に移ります。今回は、説明がしやすくなるように、変数i, jを日本語の行と列に変更することにします。
始めのコードでは、最初の行のデータA2は、同じ行の同じ列に移動、次の行のデータは、上の行の一つ隣の列に移動します。
図にすると、なんだか無駄なことをしているように思えます。A2のデータをもとのA2の位置に移動するという動作です。
これではあとの行削除が面倒だと考えて、このようなコードに変更しました。
データはB列からE列に移動する方が綺麗です。
1件1列4行のデータを1件1行にするコードを実行
実行後のデータはこのようになります。結果は変わりませんが。
全体のコードです。ポイントは移動は横への列移動だけでなく、上への行移動と横への列移動を組み合わせたということです。
このようなことが簡単にできるのは、Cells(行,列)という書きかたがあるからです。
Option Explicit Dim 行 As Long, 列 As Long, lastRow As Long Sub データ成型4行から1行に() lastRow = Cells(Rows.Count, 1).End(xlUp).Row For 行 = 2 To lastRow Step 4 For 列 = 0 To 3 Cells(行, 列 + 2) = Cells(行 + 列, 1) Next 列 Next 行 ' A列のデータを削除 Columns("A:A").Select Selection.Delete Shift:=xlToLeft ' 空白行を削除 lastRow = Cells(Rows.Count, 1).End(xlUp).Row For 行 = lastRow To 2 Step -1 If WorksheetFunction.CountA(Rows(行)) = 0 Then Rows(行).Delete End If Next 行 End Sub