- ベストアンサー
〈エクセル〉 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 ・ ・ ・ どのようなマクロを組めば良いか、さっぱり分かりません。どうぞ宜しくお願い致します。
- みんなの回答 (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 になりました。バグがあった場合、もとに戻せませんので、シートをコピーしてテストするなり、慎重に。
その他の回答 (1)
- ssssssssss
- ベストアンサー率23% (24/103)
こんにちわ。 次の手順でどうでしょうか? (1)元表全体を大分類をキーにソート(昇順)する。 (2)つぎの処理を繰り返す。 1.大分類の列のセルの値を読む(変数に保持) 2.変数の値と1.の1つ上のセルを比較し、値が違えば、 その行に空行を挿入する。 同じであれば、1.に戻り、その際もう一つ下のセルを 読み込むようにする。
お礼
ありがとうございました。 他の方のアドバイスと合わせて、何とか頑張ってみます。
補足
いつもお世話になります。 ありがとうございます。いただきました回答を参考に、組み立てに成功しました。 あと、もう一つお願いしたいのですが、それぞれの分類別に数量・売上のランキングをつけることは可能でしょうか。