エクセルVBAマクロを自動作成する無料アプリです。
例として「カンマ区切りデータを、表を崩さず縦に分割する」VBAマクロを作成します。
・カンマ(,)区切りだけでなく、半角空白( )、改行文字(Chr(10))なども対応できます。
事例 カンマ区切りデータを縦に並べ、見出しも追記
アプリの設定
トップページ
⇒▼カンマ区切りデータ、CSVデータ
⇒【ツール】表を崩さず、セルのカンマ区切りデータを、縦方向に分割
【ポイント】
■ 列1は、見出しとなる行を指定します。
■ 列2は、セル内に、複数データが入った行を指定します。
■ 区切り文字は、半角や全角の空白も可能。いずれも”は不要。
■ 左列と右列の両方の分割もできます。
表示されるVBAコード
アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。
VBAコードを見る
Sub デモ() '表を維持したまま、セルのカンマ区切りデータを、縦方向に分割
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False ' 警告表示を停止
Dim 第1列データ As String, 第2列データ As String
Dim 第1列配列() As String, 第2列配列() As String
Dim 行 As Long, 配列要素 As Long
Sheets("Sheet1").Select
'◆初期値設定
行 = 2
Do
第1列データ = Cells(行, 1).Value
第2列データ = Cells(行, 2).Value
'◆終了条件
If 第1列データ = "" And 第2列データ = "" Then Exit Do
'◆データを配列に格納
第1列配列() = Split(第1列データ, "、")
第2列配列() = Split(第2列データ, "、")
'◆第2列データが空白
If UBound(第2列配列) = -1 Then
Cells(行, 1) = Join(第1列配列, "、")
Cells(行, 2) = ""
行 = 行 + 1
GoTo 次処理1
End If
For 配列要素 = LBound(第2列配列) To UBound(第2列配列)
'◆第1列データが空白
If UBound(第1列配列) = -1 Then
Cells(行, 1) = ""
Cells(行, 2) = 第2列配列(配列要素)
Else
'◆空白なし
Cells(行, 1) = Join(第1列配列, "、")
Cells(行, 2) = 第2列配列(配列要素)
End If
If 配列要素 < UBound(第2列配列) Then
Rows(行 + 1).Insert
End If
行 = 行 + 1
Next 配列要素
次処理1:
Loop
Application.ScreenUpdating = True ' 画面描画を再開
Application.DisplayAlerts = True ' 警告表示を再開
End Sub