行内のセルを列内で上下に書き込むにはどうすればよいでしょうか?

行内のセルを列内で上下に書き込むにはどうすればよいでしょうか?

名前、会社、電話番号、住所、電子メールのリストがあります。しかし、同じ会社に勤務する各名前は同じセルにあります。もちろん、電話番号、住所などの他の情報は同じです。

名前をそれぞれの下に書きたいのですが、その情報をその横のセルに書き込まなければなりません。実際、私のリストは非常に長く、今日中に終わらせることができません。どうすればいいのかわかりません。

問題を説明するスクリーンショット

答え1

私は今、Excel を搭載した Windows コンピューターの前にいませんが、このコードによって新しいワークシートが作成され、その新しいシートにデータがコピーされ、名前が別々の行に分割されるはずです。

Sub CopyRowsAndSplitNames
  Dim srcSheet As Excel.Worksheet
  Set srcSheet = Excel.Application.Sheets("Sheet1") ' Change this to whatever your worksheet is called

  Dim dstSheet As Excel.Worksheet
  Set dstSheet = Excel.Application.Sheets.Add()

  srcSheet.Rows(1).Copy dstSheet.Rows(1)

  Dim dstRow as Integer
  dstRow = 1

  Dim strName As String
  Dim strNames As String()
  Dim srcRow as Integer
  For srcRow = 2 to srcSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    strNames = Split(srcSheet.Cells(row, 3).Value, ",")
    For Each strName in strNames
      dstRow = dstRow + 1
      srcSheet.Row(srcRow).Copy dstSheet.Row(dstRow)
      dstSheet.Cells(dstRow, 3).value = strName
    Next
  Next
End Sub

答え2

これには Power Query アドインを使用します。Excel テーブルからクエリを開始できます。

Split コマンドを使用すると、区切り文字 (例: カンマ) に基づいて列を分割できます。次に、Unpivot コマンドを使用して、複数の列を 1 つの列を含む複数の行に変換します。

関連情報