- 締切済み
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
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ka_na_de
- ベストアンサー率56% (162/286)
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)
データ最終行は、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)
添付の図では最初のデータエリアがA3:D10になっていますが、本当はA3:D18なのだと推測しました。 その前提でですが、A3:D18に名前定義で名前を付けてしまっては? 例えば、「DataArea」とでも名前を付けておき、マクロの一部を変更します。 Range("A3:D18").Select ↓ Range("DataArea").Select コレなら、間に行を挿入されても問題ありません。
お礼
ご回答ありがとうございます。 データ範囲に名前を付けるんですね! 行の挿入を「データ範囲内に」と決めれば運営できますね。 合計行を選択して挿入をすると定義外となってしまいますが・・ (データを入力するのが一人とは限らないので。。) ありがとうございました。