MENU

カンマ区切りデータを、表を崩さず縦に分割する

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

例として、「カンマ区切りデータを、表を崩さず縦に分割する」VBAマクロを作成します。

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

事例

カンマ区切りデータを、縦に並べます。また、見出しも追記します。

f:id:The-Alchemist:20220118102819p:plain

アプリの設定

アプリの設定です。

トップページ 

 ⇒▼カンマ区切りデータ、CSVデータ 

 ⇒【ツール】表を崩さず、セルのカンマ区切りデータを、縦方向に分割

【ポイント】

 列1は、見出しとなる行を指定します。

■ 列2は、セル内に、複数データが入った行を指定します。

■ 区切り文字は、半角や全角の空白も可能。いずれもは不要。

 左列と右列の両方の分割や、左列を列2に入れて左列の分割もできます。

 

表示されるVBAコード 

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

Sub デモ_43() '表を維持したまま、セルのカンマ区切りデータを、縦方向に分割
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
'◆初期値設定
行 = 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 次処理へ
  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 配列要素
次処理へ:
Loop
Application.ScreenUpdating = True ' 画面描画を再開
Application.DisplayAlerts = True  ' 警告表示を再開
End Sub

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