エクセルにて1列を複数列に分ける方法(VBA)は?【マクロ】 | モアイライフ(more E life)
EXCELのYouTube始めました!

EXCEL初心者に向けたYouTubeチャンネルを開始しました(^^)/
ぜひチャンネル登録よろしくお願いします!

効率よくエクセルを学ぶ!

エクセルにて1列を複数列に分ける方法(VBA)は?【マクロ】

Excelのスキルアップ
本サイトでは記事内に広告が含まれています

エクセルはデータ解析・管理を行うツールとして非常に機能が高く、上手く使いこなせると業務を大幅に効率化できるため、その扱いに慣れておくといいです。

ただ機能が充実しているあまり初心者にとっては処理方法がよくわからないことも多いといえます。例えばエクセルのマクロ(VBA)にて縦1列のデータを複数列に分けるにはどう処理すればいいのか理解していますか。

ここではエクセルでのマクロ(VBA)にて1列のデータを複数列に分ける方法について解説していきます。

スポンサーリンク

エクセルにて1列を複数列に分ける方法は?【マクロ(VBA)】

それでは以下のサンプルデータを用いてマクロ(VBA)を用いてエクセルにて縦1列を複数列(今回は2列)に分ける方法について確認していきます。

まずは1列を複数列に分けた後に横方向に並べていくやり方を紹介します(縦方向に並べる方法は後に記載しています)

マクロ(VBA)を起動させるために、上タブの開発、マクロと選択していきます。

作成、もしくは編集(編集途中の方は)ボタンを押し、コードを入力できる画面に移行させます。

後は以下のコードをコピペしていきます。

Sub 複数列に()
Dim i As Long, k As Long
k = 1
For i = 1 To 5
For j = 2 To 3
Worksheets(“Sheet1”).Cells(k, 1).Copy
Worksheets(“Sheet1”).Cells(i, j).PasteSpecial
k = k + 1
Next j
Next i
End Sub

基本的にはfor文にてループ処理を行っているだけといえますが

Worksheets(“Sheet1”).Cells(k, 1).Copy

にて1列目に対する各行の数値をコピーしていることとなります。このkの値は上限値は後のiとjの値によって決まってきます(iとjの上限値を規定しており、kはそれらがすべて実行終えるまで初期値の1から1ずつ足されていくため)

Worksheets(“Sheet1”).Cells(i, j).PasteSpecial

にて特定のセルにコピーした数値をペーストしているわけですが、すでに

・For i = 1 To 5
・For j = 2 To 3

とiが1~5まで、jが2~3までと指定しているため、縦1列(今回はA列)をB、C列という複数列に自動でコピペすることができるのです。

このコードを入力後、この画面を閉じ、マクロの実行を行います。

すると、縦1列が複数列(2列)にコピペされました。

データ数によって、iやjの数値を適宜調整してみてください。上のコードではjが列の位置、iが行の位置であり、その積の数分だけ元の縦1列の数値からコピペされると理解しておくといいです。

縦1列を3列にする方法

なお上のデータを少しいじることによってたて1列を3列(複数列)に分割することも可能です。

元の1列を3列分にすればいいのでjの数値範囲を2~4までに変更しましょう。

Sub 複数列に()
Dim i As Long, k As Long
k = 1
For i = 1 To 5
For j = 2 To 3
Worksheets(“Sheet1”).Cells(k, 1).Copy
Worksheets(“Sheet1”).Cells(i, j).PasteSpecial
k = k + 1
Next j
Next i
End Sub
実際の入力の様子は以下の通りとなります。

後は先ほどと同様にマクロを実行すれば以下のよう、縦1列を複数列(3列)にバラバラにすることができました。

【縦方向に】エクセルにて縦1列を複数列に分ける方法は?【マクロ(VBA)】

なおコピー方向を縦のままにするには上のコードのiとjを入れ替えるだけでいいです。

この時数値範囲も併せて変更する必要があることを覚えておくといいです。

Sub 複数列に()
Dim i As Long, k As Long
k = 1
For i = 1 To 5
For j = 2 To 3
Worksheets(“Sheet1”).Cells(k, 1).Copy
Worksheets(“Sheet1”).Cells(j, i).PasteSpecial
k = k + 1
Next j
Next i
End Sub

すると以下のように縦1列が同じ方向のまま複数列(2列)に分割することができました。

このコードでは縦1列の10個分のデータを2列目、3列目に分割したような形となります。

ペースト後の複数列の列数を変更したいときはiの数値範囲と、行数を変更したいケースではjの数値範囲を変えるようにしましょう。

まとめ エクセルにて縦1列を複数列に分ける方法は?【マクロ(VBA)】

ここでは、マクロ(VBA)を使用してエクセルにて縦1列を複数列に分ける方法について確認しました。

基本的にはforループ処理を入れ込構造にすることで対処でき、その場合の各数値範囲のみを変更していくといいです。

エクセルでのさまざまな処理に慣れ毎日の生活に役立てていきましょう。

コメント

スポンサーリンク
タイトルとURLをコピーしました