• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロをご教示ください。)

マクロを使って顧客別の販売金額を並び替える方法

このQ&Aのポイント
  • Excelのマクロを使用して、顧客別の販売金額を並び替える方法についてご教示いたします。
  • 指定された表を顧客別・金額順に並べ替えるために、マクロを作成します。
  • マクロを実行することで、顧客番号を昇順に表示し、販売金額を高額順に表示することができます。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

一個一個マクロでデータを拾っていっても構いませんが,まぁ折角ですからエクセルにやらせてみましょう。 Sub macro1()  Dim r As Long, h As Long, p As Long ’準備  Range("P6:Z65536").ClearContents  Range("C:C").Copy  Range("P:P").Insert shift:=xlShiftToRight  Range("H:H").Copy  Range("Q:Q").Insert shift:=xlShiftToRight ’並べ替え  Range("P6:Q" & Range("Q65536").End(xlUp).Row).Sort _   key1:=Range("P6"), order1:=xlAscending, _   key2:=Range("Q6"), order2:=xlDescending, _   header:=xlNo ’転記  r = 6  p = 6  Do Until Cells(r, "P") = ""   h = Application.CountIf(Range("P:P"), Cells(r, "P"))   Cells(p, "R") = Cells(r, "P")   Cells(p, "S").Resize(1, h).Value = Application.Transpose(Cells(r, "Q").Resize(h, 1).Value)   r = r + h   p = p + 1  Loop ’片付け  Range("P:Q").Delete shift:=xlShiftToLeft  Cells.EntireColumn.AutoFit End Sub

oguno
質問者

お礼

keithin様 ご教示ありがとうございました。 ご教示により思い通りの処理が出来ました。 御礼が遅れました事お詫びいたします。 今後とも宜しくお願い致します。 oguno

その他の回答 (1)

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

こんばんは! 一例です。 必ず1000行目までデータがあるとしてのコードです。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sub test() Dim i, j As Long Cells(5, 16) = "顧客番号" Application.ScreenUpdating = False For i = 6 To 1000 If WorksheetFunction.CountIf(Columns(16), Cells(i, 3)) = 0 Then Cells(Rows.Count, 16).End(xlUp).Offset(1) = Cells(i, 3) End If Next i j = Cells(Rows.Count, 16).End(xlUp).Row Range(Cells(6, 16), Cells(j, 16)).Sort key1:=Cells(5, 16), order1:=xlAscending For j = 6 To Cells(Rows.Count, 16).End(xlUp).Row For i = 6 To 1000 If Cells(i, 3) = Cells(j, 16) Then Cells(j, Columns.Count).End(xlToLeft).Offset(, 1) = Cells(i, 8) End If Next i Next j For j = 17 To ActiveSheet.UsedRange.Columns.Count If WorksheetFunction.Count(Columns(j)) Then Cells(5, Columns.Count).End(xlToLeft).Offset(, 1) = "金額" & j - 16 End If Next j Application.ScreenUpdating = True End Sub こんな感じではどうでしょうか?m(_ _)m

oguno
質問者

お礼

tom04様 ご教示ありがとうございました。 今後とも宜しくお願い致します。

関連するQ&A