- ベストアンサー
エクセルの並び替え(マクロ・・・?)
・A列に店の名前 ・B列に「今年」・「前年」の文字 ・C列に売上 今年と前年の売上を店ごとにわかる状態です。 つまり、A列には同じ店名が2つ存在します。 例 A..............B................C 高島屋 今年 900 高島屋 前年 800 といった感じです。 これを、今年の売上の高い方から並び替えたいです。 このとき、前年の売上と比較できるように、前年のも今年の下のセルに表示したいのです。単純にC列だけを並び替えすると、前年とごちゃまぜになってしまいますし、店名もバラバラです。店名が2つ連続した状態で、尚且つ 今年の下のセルに前年がくるように、かつ今年の売上の高い方から並び替えることはできないでしょうか? そもそも前年・今年といったものを行ではなく、列にすればよかったのですが、すでに作ってしまった後でした、、、。 多量のデータなので、なんとか解決させたいです。 VBAやマクロになるのでしょうか? サンプルコードを記載してくれると非常に助かります。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 もし、現状が規則正しく下記のように並んでいるなら A B C 1 店名 年 売上 2 高島屋 今年 900 3 高島屋 前年 800 4 伊勢丹 今年 900 5 伊勢丹 前年 900 : D2セルに =IF(B2="今年",C2,D1) と式を入力して以下必要行数コピー。 必要ならD列の式を数値化します。 (D列選択して[コピー]-[形式を選択して貼り付け]「値」) このD列を第1優先で降順 B列を第2優先で昇順 で並び替え。 というように、作業列を使えば比較的簡単です。 元の順番に復元する必要もあるなら、 並び替え前にE列にでも連番を振っておけば良いかと思います。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
修正ソートキーが空きの列の一列必要ですね。 まず同じ高島屋が連れもて動くように、全円も今年も同じキー(今年売上額)を持つようにすることを考えます。 例データ A2:C7 c 去年 2000 a 今年 1000 b 去年 800 a 去年 900 b 今年 1200 c 今年 2200 A列(第1)B列(第2)でソート A2:C7 A列 B列 C列 a 去年 900 a 今年 1000 b 去年 800 b 今年 1200 c 去年 2000 c 今年 2200 D2に =IF(B2="今年",C2,SUMPRODUCT(($A$2:$A$100=A2)*($B$2:$B$100="今年")*($C$2:$C$100))) と入れて下方向に複写。 結果 A2:D7 A列 B列 C列 D列 a 去年 900 1000 a 今年 1000 1000 b 去年 800 1200 b 今年 1200 1200 c 去年 2000 2200 c 今年 2200 2200 D列(降順)、B列(降順)でソート (ソートの場合、一般には、ソートキーのD列の式を消してソートを考えたほうが良いが、今回はたまたま不要である) 結果 c 今年 2200 2200 c 去年 2000 2200 b 今年 1200 1200 b 去年 800 1200 a 今年 1000 1000 a 去年 900 1000
- mozomozo123
- ベストアンサー率27% (59/214)
今年のデータが必ず上にあるのであれば、D列2行に以下のように設定します。 =IF(B2="今年",C2,C1) で、並び替えで、D列降順、A列、B列昇順(今年が上に来るようにB列は設定する) 後はD列非表示でOK。 ようはD列に今年の数値のみをコピーさせるわけです。 そうすればD列並び替え、でA列を指定すれば店順になるでしょ。
- pauNed
- ベストアンサー率74% (129/173)
ぁ、ごめんなさい。#2です。 売上が同額の場合考慮し D列を第1優先で降順 A列を第2優先で昇順 B列を第3優先で昇順で並び替え。 です。m(_ _)m
- fake-tang
- ベストアンサー率24% (186/772)
データ→並べ替え で、三つまで並べ替えの条件を指定できます。 それで並べ替えればいいのでは。
お礼
回答ありがとうございます。 データ→並べ替え の方法も試しましたが無理でした。 店名を連続で表示させるためには、まず店名を第一優先しなければなりませんが、それでは売上の高い順にはなりません。 仮に売上を第一優先し、店名を第二優先しても、店名が連続で表示されるとは限らないからです。 表の作り方に問題があると言われればお終いなのですが、皆様お知恵を貸して下さい!!!お願いします!!