• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelでデータの並び替えができません。)

【Excel】データの並び替えがうまくできない!キーごとにグルーピングする方法を教えてください

このQ&Aのポイント
  • Excelでデータの並び替えがうまくできず悩んでいます。キーごとにグルーピングして、さらに縦→横に並べたい方法を教えてください。
  • A列がキーになっているデータをキーごとにグルーピングし、縦→横に並べる方法を教えてください。
  • Excelでデータの並び替えがうまくできない問題について、キーごとにグルーピングして縦→横に並べる方法を教えてください。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

dictionary(最近の回答はこればっかりですが...)の使用例です。連想配列という立派な名前がある事を最近知りました。今日は出先の、Excell2007環境で作成しておりますが、動作いたしました。 追加の情報は、VBA dictionaryで検索すると、結構ヒットすると思います。 Sub test() Dim targetRange As Range, destRange As Range Dim myDic As Object, myKey As Variant Dim i As Long, j As Long Dim keyString As String Dim area As Range Dim myCell As Range Set targetRange = ActiveSheet.Range("A1").CurrentRegion Set myDic = CreateObject("Scripting.Dictionary") For i = 1 To targetRange.Rows.Count keyString = targetRange.Cells(i, 1).Value If Not myDic.exists(keyString) Then myDic.Add keyString, targetRange.Cells(i, 2) Else Set myDic.Item(keyString) = Union(myDic.Item(keyString), targetRange.Cells(i, 2)) End If Next i myKey = myDic.keys Set destRange = ActiveSheet.Range("F1") For i = 0 To myDic.Count - 1 j = 1 For Each area In myDic(myKey(i)) For Each myCell In area.Cells destRange.Value = myKey(i) destRange.Offset(0, j).Value = myCell.Value j = j + 1 Next Next area Set destRange = destRange.Offset(1, 0) Next i Set myDic = Nothing End Sub

ijhnb6543f
質問者

お礼

mitarashi様、こんにちは。 すごーいっ、一発で出来ました! まさに期待したとおりの動きです。 Excelは使わない日はないのに、ちょっと難しいことにぶつかると、途端にできなくなってしまいます。 キー数が不特定なので、ループを使わないといけないのかな、 ということは、Excel関数の組み合わせでは実現できないのかな、と薄々思っていましたが、 VBAも勉強しないと、とあらためて思いました。 本当に助かります。 ありがとうございました☆

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

ANo.1です。最後の方のループが変でしたので、差し替え願います。(同じ見出しを何度も上書きしていた) For i = 0 To myDic.Count - 1 j = 1 destRange.Value = myKey(i) For Each area In myDic(myKey(i)) For Each myCell In area.Cells destRange.Offset(0, j).Value = myCell.Value j = j + 1 Next Next area Set destRange = destRange.Offset(1, 0) Next i

ijhnb6543f
質問者

お礼

再び回答くださったループ処理部分を差し替えて、試させていただきました。 朝早くから外出しているのに、mitarashi様のほうで動作も確認してくださって、 本当にありがとうございました☆