• ベストアンサー

〈エクセル〉 1シート内で分類別にリストを作成するには

いつもお世話になります。 下記の表を、 大分類 中分類  売数量  売金額  あ   A   1000    500000  い   A    200    700000  あ   A    250    250000  あ   B    300 36500 あ   A    500 80000  い   A    300 600000         ・         ・         ・ このような形に変更したいのですが、 大分類 中分類  売数量 売金額 RANK数 RANK金  あ   A   1000  500000  1 1 あ   A    500 80000   2 3 あ   A    250  250000 3 2 (1行空ける) い   A    300  600000  1   2 い   A    200  700000  2   1         ・         ・         ・ どのようなマクロを組めば良いか、さっぱり分かりません。どうぞ宜しくお願い致します。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

ロジックは#1のご回答の通り。しかしコードに仕上げるのは、やや難しい。Step -1(下行から処理する)とInsertの+1がポイントか?。 Sub test01() d = Range("A65536").End(xlUp).Row Range(Cells(2, "A"), Cells(d, "D")).Select Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _ , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin m = Cells(d, "A") For i = d To 2 Step -1 If Cells(i, "A") = m Then Else m = Cells(i, "A") Cells(i + 1, "A").EntireRow.Insert (xlDown) End If Next i End Sub テストデータを少し増やして、実行結果は 大分類 中分類 売数量 売金額 あ A 1000 500000 あ A 250 250000 あ A 500 80000 あ B 300 36500 い A 200 700000 い A 300 600000 う A 250 250000 う A 500 80000 う B 300 36500 になりました。バグがあった場合、もとに戻せませんので、シートをコピーしてテストするなり、慎重に。

7-samurai
質問者

補足

いつもお世話になります。 ありがとうございます。いただきました回答を参考に、組み立てに成功しました。 あと、もう一つお願いしたいのですが、それぞれの分類別に数量・売上のランキングをつけることは可能でしょうか。

その他の回答 (1)

回答No.1

こんにちわ。 次の手順でどうでしょうか? (1)元表全体を大分類をキーにソート(昇順)する。 (2)つぎの処理を繰り返す。   1.大分類の列のセルの値を読む(変数に保持)   2.変数の値と1.の1つ上のセルを比較し、値が違えば、     その行に空行を挿入する。     同じであれば、1.に戻り、その際もう一つ下のセルを     読み込むようにする。

7-samurai
質問者

お礼

ありがとうございました。 他の方のアドバイスと合わせて、何とか頑張ってみます。

関連するQ&A