ExcelVBA:列方向の並び替え Orientation
いつも大変お世話になります。初心者です。
長文で申し訳ありませんが、私の間違いについてご指導をお願いします。(Excel2003)
並び替えについて訳が分からなくなってしまいました。現状は、
・A2セル=1月、A3=2月、A4=3月、A5=合計
・B1セル=札幌、C1=東京、D1=名古屋、E1=大阪
・B2:E4 は売上金額です。
・B5 は、SUM(B2:B4) です。C5~E5も同様です。
※売上合計は多い順に、東京、大阪、名古屋、札幌です。
この表の合計金額を並び替えをしたいと思い、以下を書いてみました。
左から順に、売上合計の多い支社順に、並ばせようとしました。
Cells(1, 1).CurrentRegion.Sort _
key1:=Cells(5, 1), order1:=xlDescending, Orientation:=xlSortColumns, header:=xlYes
【甲】 すると全く意図した形ではない並び替えが実行されてしまいました。
(なぜか行が入れ替わり、列は変わらず。)
【乙】 しかし、上のOrientationを、xlSortRows に変えてやってみると、意図した通りに並び替えられました。
【丙】 また、Order1:=xlAscending, Orientation:=xlSortRows でやってみると、列の並び替えは実施されますが、
月の見出し列(A1~A5)が一番右に移動してしまいます。
--------------------------------------------------------------------------
その後いろいろ調べたり、試行したりしたのですが疑問が山積してしまいました。
基礎的な話かもしれませんが、上記の例で、「列方向に、合計金額を基準に、正しく降順・昇順並び替え」をしたいと思っています。
【質問1】Sortメソッドのヘルプで見ると、Orientation の説明に、xlSortRows,xlSortColumnsの説明がありますが、
行方向、列方向、どうしても実際の動きと逆な気がしてなりません。
私の勘違いでしょうか。
【質問2】マクロの自動記録時に気づいたのですが、Orientation の設定に、xlLeftToRight や、xlTopToBottom というのが使われていました。
これらと xlSortRows, xlSortColumns の違いはありますか。
【質問3】列方向への並び替えの際には、Headerの設定をするのは無意味ですか?
上記(丙)のパターンで、xlGuess でも、xlYes 、xlNo でも全く動きは変わらず、月の見出し列が最右に移動しました。
【質問4】上の(丙)のパターンで正しく動かす為には、Sort の対象となる範囲を、B列以降にする必要があるのでしょうか。
----------------------------------------------------------------------------
分かりにくい箇所もあったかと思いますが、ご指摘いただければ補足させていただきます。
なお、「そんな簡単な表だったら、手で作業したら?」ということではなく、後学のために知っておきたいので質問させていただきました。
なにぶん勉強中なため見当外れの質問もあるかもしれませんが、なにとぞご教示よろしくお願いいたします。
お礼
早速のご回答ありがとうございました。 助かりました。