• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 縦方向に並んでるデータを、横方向に並べたい)

エクセルデータの縦から横への並べ替え方法

このQ&Aのポイント
  • エクセルのデータを縦から横に並び替える方法について教えてください。
  • 例えば、名前を元に時系列にしてデータを横に並び替える方法を知りたいです。
  • 縦方向に並んでいるデータを横方向に並べ替える際に、最大で20件のデータがある場合、効率的な方法はありますか?

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

  • ベストアンサー
  • yuu_yuu
  • ベストアンサー率41% (34/81)
回答No.5

#1です。 質問をちゃんと読んでませんでした;; 申し訳ありません。 お詫びといっては何ですが、マクロのサンプルです。 急いで作ったので、制限事項がたくさんあります>< ・シート1のA列(名前)で、ソートしてある必要があります。 ・シートの名前を固定にしてしまいました。("Sheet1"、"Sheet2") Sub Mac1() Dim Line1 As Integer 'Sheet1 の行 Dim Line2 As Integer 'Sheet2 の行 Dim Row2 As Integer 'Sheet2 の列 Dim Key As String 'キー '初期クリア Line1 = 1 Line2 = 0 Row2 = 2 Key = "" '無限ループ Do While (1) 'Sheet1のA列セルにデータが入ってない場合、処理を終了 If Worksheets("Sheet1").Cells(Line1, 1).Value = "" Then Exit Sub End If 'Sheet1 A列とキーが違う場合(Sheet1 A列がソートされていることを期待している) If (Worksheets("Sheet1").Cells(Line1, 1).Value <> Key) Then 'Sheet2 の行をインクリメント Line2 = Line2 + 1 'Sheet2 の列を初期クリア Row2 = 1 'Sheet1 A列を、Sheet2 A列に Worksheets("Sheet2").Cells(Line2, 1).Value = Worksheets("Sheet1").Cells(Line1, 1).Value Key = Worksheets("Sheet1").Cells(Line1, 1).Value End If 'Sheet1 B列を、"Sheet2"「次の」列に Row2 = Row2 + 1 Worksheets("Sheet2").Cells(Line2, Row2).Value = Worksheets("Sheet1").Cells(Line1, 2).Value 'Sheet1 C列を、"Sheet2"「次の」列に Row2 = Row2 + 1 Worksheets("Sheet2").Cells(Line2, Row2).Value = Worksheets("Sheet1").Cells(Line1, 3).Value 'Sheet1 D列を、"Sheet2"「次の」列に Row2 = Row2 + 1 Worksheets("Sheet2").Cells(Line2, Row2).Value = Worksheets("Sheet1").Cells(Line1, 4).Value 'Sheet1 の行をインクリメント Line1 = Line1 + 1 Loop End Sub 以上です

masa-t
質問者

お礼

ありがとうございます!! 完璧に動作しました!! 本当に助かりました!!!

その他の回答 (4)

  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.4

回答ではありませんが、 現状のデータを保存しておかれることを強くお勧めします。 変更後のデータは、Excelの機能のオートフィルの抽出などができなくなって、単に見るだけのデータになってしまいます。

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.3

マクロで処理する以外は、力技に頼るしかないでしょうね。 ただ、質問者様がこの質問をした段階で、これをマクロで処理する発想がないということは、マクロのことは解らないということですよね。 マクロを覚えるよりは、力技に頼ったほうが早いですかね。

masa-t
質問者

補足

処理しなきゃならないデータが5000件ほどありますので、 手作業は避けたいところです。 マクロは勉強不足で一から自力で作成することはできません。 ただ、サンプルを作っていただければ、解読して変更するくらい のことはできます。 同じような質問を検索すると"配列数式"というものを用いて 解決できるような気もするんですが、こちらは自分用に カスタマイズしようにもとてもややこしくて理解不能でした。。。

  • subaru361
  • ベストアンサー率19% (55/283)
回答No.2

手作業でということなら、オートフィルタで、名前をキーにフィルタをかけたあと、名前毎にコピー→行列入れ替え貼り付けで実現できます。 エレガントにやりたいというなら、マクロを組みましょう。

masa-t
質問者

補足

処理しなきゃならないデータが5000件ほどありますので、 手作業は避けたいところです。

  • yuu_yuu
  • ベストアンサー率41% (34/81)
回答No.1

データをコピーして、貼り付けたいセルの先頭で「形式を選択して貼付け」→右下の「行列を入れ替える」→「OK」 ではだめでしょうか?

masa-t
質問者

補足

その方法だと、   A  B C D E F G H I J 1 山田 3/18 90 A 3/20 65 B 2 佐藤 2/28 40 D 3/11 90 A 3/13 85 A・・・・ ↑こうならずに A B C D E 1 山田 山田  佐藤  佐藤  佐藤 2 3/18 3/20  2/28  3/11  3/13 3 90  65   40   90   85 4 A   B    D   A   A ↑こうなってしまいます。