• 締切済み

Excelのソート方法(タイトルと合計行の間)について

支払予定を作成しております。 タイトル行と合計行の間のデータを日付順にソートしております。 (マクロにて) 行を挿入した場合、下記の場合範囲を固定している為全データを ソート出来ません。 データ範囲の指定方法を教え下さい。 よろしくお願い致します。 Sub 並べ替え2() Range("A3:D18").Select Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A2").Select End Sub

みんなの回答

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.3

No.1の回答に対するお礼で、 >行の挿入を「データ範囲内に」と決めれば運営できますね。 とありますが、 合計行を含めて名前定義しておけば解決できますよ。 実際にソートするときには、末尾1行を除いた範囲を指定します。 以下はResizeプロパティを使った例です。 Sub 並べ替え777()   Dim myRng As Range   Set myRng = Range("DataArea").Resize(Range("DataArea").Rows.Count - 1)      myRng.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _       OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _       SortMethod:=xlPinYin, DataOption1:=xlSortNormal      Range("A2").Select      Set myRng = Nothing End Sub

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

データ最終行は、C列の”合計”セルのひとつ上の行ということで。。。 '----------------------------------------------------  Sub 並べ替え555()    Dim LastRow As Long  LastRow = Cells(Rows.Count, "C").End(xlUp).Row  Range("A3:D" & LastRow - 1 ).Select  Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _   OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _   :=xlPinYin, DataOption1:=xlSortNormal  Range("A2").Select End Sub '----------------------------------------------- 以上です。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

添付の図では最初のデータエリアがA3:D10になっていますが、本当はA3:D18なのだと推測しました。 その前提でですが、A3:D18に名前定義で名前を付けてしまっては? 例えば、「DataArea」とでも名前を付けておき、マクロの一部を変更します。 Range("A3:D18").Select ↓ Range("DataArea").Select コレなら、間に行を挿入されても問題ありません。

acochaco
質問者

お礼

ご回答ありがとうございます。 データ範囲に名前を付けるんですね! 行の挿入を「データ範囲内に」と決めれば運営できますね。 合計行を選択して挿入をすると定義外となってしまいますが・・ (データを入力するのが一人とは限らないので。。) ありがとうございました。

関連するQ&A

専門家に質問してみよう