• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelの1列に複数データ固まりがあるものの分け)

Excelで1列に複数データ固まりを分ける方法

このQ&Aのポイント
  • Excelで1列に複数のデータ固まりがある場合、列に展開する方法を紹介します。
  • 1000行以上ある場合でも、簡単に振り分けることができます。
  • これにより、データの整理や分析が円滑に行えます。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! マクロになってしまいますが・・・ 「データのかたまり」の個数(Sheet1のA列の空白数)に規則性がなく、 「データの名前」も「L」「R」だけでなく、他の名前もあるとしての一例です。 ↓の画像のようにSheet1のデータをSheet2に表示するようにしてみました。 Alt+F11キー → 画面左側の「This Workbook」をダブルクリック → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j, k As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") Application.ScreenUpdating = False ws2.Cells(1, 1) = ws1.Cells(1, 1) j = ws2.Cells(1, Columns.Count).End(xlToLeft).Column If j > 1 Then Range(ws2.Cells(1, 2), ws2.Cells(1, j)).ClearContents End If ws2.Columns(1).Insert For i = 2 To ws1.Cells(Rows.Count, 2).End(xlUp).Row If ws1.Cells(i, 1) <> "" Then ws2.Cells(i, 1) = ws1.Cells(i, 1) Else ws2.Cells(i, 1) = ws2.Cells(i - 1, 1) End If If WorksheetFunction.CountIf(ws2.Columns(2), ws1.Cells(i, 1)) = 0 Then ws2.Cells(Rows.Count, 2).End(xlUp).Offset(1) = ws1.Cells(i, 1) End If If WorksheetFunction.CountIf(ws2.Rows(1), ws1.Cells(i, 2)) = 0 Then ws2.Cells(1, Columns.Count).End(xlToLeft).Offset(, 1) = ws1.Cells(i, 2) End If Next i For k = 2 To ws2.Cells(Rows.Count, 2).End(xlUp).Row For i = 2 To ws2.Cells(Rows.Count, 1).End(xlUp).Row For j = 3 To ws2.Cells(1, Columns.Count).End(xlToLeft).Column If ws2.Cells(i, 1) = ws2.Cells(k, 2) And ws1.Cells(i, 2) = ws2.Cells(1, j) Then ws2.Cells(k, j) = ws1.Cells(i, 3) End If Next j Next i Next k ws2.Columns(1).Delete Application.ScreenUpdating = True End Sub 'この行まで 上記マクロを実行すると画像のような感じになります。 ※ 関数でないので、Sheet1のデータ変更があってもSheet2に反映されません。 ※ Sheet1のデータ変更があるたびにマクロを実行する必要があります。 参考になりますかね?m(_ _)m

ji-young
質問者

お礼

回答ありがとうございます。 簡単そうで簡単に処理できないので、マクロでないと無理と思いました。 参考にやってみます。

関連するQ&A

専門家に質問してみよう