• ベストアンサー

エクセル・並び替えのマクロ

エクセルで並び替えのマクロを作ったのですが ___A ______B ______C ______D ______E ______F _____________G 1 (株)カネカ【東証1部 : 4118.T】 2 日付 __始値 _高値 _安値 _終値 _出来高 ___調整後 3 07/07 1,030 1,069 ___941 __974 30,772,000 ___974 4 07/06 1,057 1,093 1,016 1,033 26,904,000 1,033 5 07/05 1,080 1,086 1,023 1,051 26,541,000 1,051 6 07/04 1,113 1,209 1,087 1,098 36,317,000 1,098 7 07/03 1,096 1,128 1,020 1,124 23,988,000 1,124 8 07/02 1,098 1,147 1,020 1,105 28,609,000 1,105 9 07/01 1,100 1,158 1,078 1,082 17,808,000 1,082 このような表で マクロ記録開始 セルA3をクリック データ→並び替え 優先されるキー:日付・昇順 データ範囲の先頭行:タイトル行 マクロ記録終了 で、できたマクロが Sub Macro1() Range("A3").Select Range("A1:G9").Sort Key1:=Range("A3"), Order1:=xlAscending,Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal End Sub これを実行すると 1行目、2行目の(株)カネカ、日付、始値…、が8行目、9行目になってしまいます そこで、マクロの Range("A1:G9")を Range("A3:G9")に書き換えて Sub Macro2() Range("A3").Select Range("A3:G9").Sort Key1:=Range("A3"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal End Sub これを実行すると 日付が、07/07、07/01、07/02、07/03、07/04、07/05、07/06 の順番になってしまいます どうしたらよいのでしょう?

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

  • ベストアンサー
noname#42041
noname#42041
回答No.1

Range("A1:G9")をRange("A3:G9")に書き換えでなく をRange("A1:G9")をRange("A2:G9")に書き換え ではないでしょうか。先頭行をタイトルに指定しているのですから、タイトル行を含んだ範囲指定の必要があると思います。

48946
質問者

お礼

本当に馬鹿です

その他の回答 (1)

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

データ ソート後 (株)カネカ【東証1部 : 4118.T】 日付 __始値 _高値 _安値 _終値 _出来高 ___調整後 7月1日 1,100 1,158 1,078 1,082 17,808,000 1,082 7月2日 1,098 1,147 1,020 1,105 28,609,000 1,105 7月3日 1,096 1,128 1,020 1,124 23,988,000 1,124 7月4日 1,113 1,209 1,087 1,098 36,317,000 1,098 7月5日 1,080 1,086 1,023 1,051 26,541,000 1,051 7月6日 1,057 1,093 1,016 1,033 26,904,000 1,033 7月7日 1,030 1,069 ___941 __974 30,772,000 ___974 Sub Macro1() Range("A2:G9").Sort Key1:=Range("A3"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal End Sub ーー エクセルはリストの考えがあり 見出し行(リスト指定範囲第1行) 明細行(第2行以下) リスト指定範囲第1行を見出しと見るか、を聞いてきているから Header:=xlGuess,でそうしてください、としているわけ。 A1からにすると、明細行が、第2行からに解釈されるから おかしくなる。

関連するQ&A