- ベストアンサー
マクロを使って顧客別の販売金額を並び替える方法
- Excelのマクロを使用して、顧客別の販売金額を並び替える方法についてご教示いたします。
- 指定された表を顧客別・金額順に並べ替えるために、マクロを作成します。
- マクロを実行することで、顧客番号を昇順に表示し、販売金額を高額順に表示することができます。
- みんなの回答 (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
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 必ず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
お礼
tom04様 ご教示ありがとうございました。 今後とも宜しくお願い致します。
お礼
keithin様 ご教示ありがとうございました。 ご教示により思い通りの処理が出来ました。 御礼が遅れました事お詫びいたします。 今後とも宜しくお願い致します。 oguno