【ChatGPT】ノーコードでExcelを自動化する無料ツール

ChatGPTでVBAコードを作れます(アプリメニューの一番上にあります)

MENU

縦1列のデータを、複数列や複数行に分ける(数行ごとに、一定間隔で)

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「縦1列のデータを、複数列や複数行に分ける」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

縦1列のデータを5行ごとに分けて、行と列を入れ替えて、複数行にする例です。

できました(^^)/

アプリの設定

アプリのトップページ

 ⇒▼表形式の変換

 ⇒縦1列

 ⇒【ツール】縦1列のデータを、見出しで切り分け、複数列や複数行に分ける

【ポイント】

※「▼作業列の関数と条件の一致で、処理範囲の同一行セルに、処理をする」で、A列を作業列とし、関数"=MOD(ROW(),5)"を入れます。

この関数は、セルの行数を5で割った余りを表示するため、1行目、6行目、11行目は、1を表示します。

なお、関数の入力は、” を付け忘れないでください。

※「列を切り分ける条件」は、「セルの値が1と等しい」を設定します。

※「行列を入れ替えて、横方向に貼り付ける」のチェックを外すと、データが列方向に並びます。

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

Sub デモ_40() '縦1列のデータを、複数列や複数行にする 
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
'◆作業列に関数を入れる
Dim 作業列末尾行 As Long, 作業列下セル As String, 列数 As Long
Sheets("Sheet1").Select
Range(Range("a1"), Cells(Rows.Count, Range("a1").Column).End(xlUp)).Clear
作業列末尾行 = Cells(Rows.Count, Range("b1").Column).End(xlUp).Row
作業列下セル = Cells(作業列末尾行, Range("a1").Column).Address(False, False)
列数 = Range("a1").Column - Range("b1").Column
Range(Range("a1"), Range(作業列下セル)).Formula = "=MOD(ROW(),5)"

Dim 辞書 As Object, アドレス As Variant
Dim 最終セル As String, セル As Range, 行 As Long, j As Long, k As Long
Set 辞書 = CreateObject("Scripting.Dictionary")
Sheets("Sheet1").Select
'◆最終セルを取得
最終セル = Cells(Rows.Count, Range("b1").Column).End(xlUp).Address(False, False)
'◆辞書のkeyに、対象セルのアドレスを入れる
For 行 = Range("b1").Row To Range(最終セル).Row
    Set セル = Cells(行, Range("b1").Column)
    If セル.Offset(0, 列数).Value = 1 Then
            辞書.Add セル.Address(False, False), 1
    End If
Next 行
'◆辞書のkeyの最後に、最終セルのアドレスを入れる
辞書.Add Range(最終セル).Offset(1, 0).Address(False, False), 1
'◆配列のアドレスに、辞書のキーをいれる
アドレス = 辞書.keys
k = 0
'◆アドレス間の値を、コピーする
For j = LBound(アドレス) To UBound(アドレス) - 1
    Range(Range(アドレス(j)), Range(アドレス(j + 1)).Offset(-1, 0)).Copy
    Sheets("sheet1").Range("d1").Offset(k, 0).PasteSpecial Transpose:=True
    k = k + 1
Next j
'◆作業列の関数をクリア
Range(Sheets("Sheet1").Range("a1"), Sheets("Sheet1").Range(作業列下セル)).Clear
Sheets("sheet1").Select
Application.CutCopyMode = False
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

   

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓ 

nocodevba.herokuapp.com