これまでで一番「情けなかったとき」はいつですか?

エクセルVBA 最終行を選んで並び替え

画像にありますように、
最終行は、増え続けますので変わります。


この表で、優先順位の設定があります。
①「H6」を降順で並べ替えをしたいのです。
②「A1」を昇順で並べ替えたいです。
どのように、記述すればよろしいでしょうか?

シート名は管理表です。
コードの記述お願いします。

よろしくお願いしますm(__)m

「エクセルVBA 最終行を選んで並び替え」の質問画像

A 回答 (4件)

こんばんは!



まず「マクロの記録」をとってみてください。
かなり長いコードになると思いますが、そのコードを参考にするのが上達の早道だと思います。

慣れてくるとご自身で不要だと思う部分は省略できるようになります。
ただ、これではお役に立たないと思うので・・・
一例です。

Sub 並び替え()
Worksheets("管理表").Range("A6").CurrentRegion.Sort key1:=Range("H6"), order1:=xlDescending, _
key2:=Range("A6"), order1:=xlAscending, Header:=xlYes
End Sub

こんな感じでいけると思います。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございました。
無事並べ替えできました。

お礼日時:2017/03/19 00:13

No.3 の訂正



すみません。5行目のどこかのセルに何か入っているだけでもダメですね。


No.1 の補足

tom04 さんのようにシート名を指定したほうが誤動作が起きにくいですね。
「Sheets("管理表").Select」を最初に入れてください。
    • good
    • 0
この回答へのお礼

ご親切にありがとうございました。

お礼日時:2017/03/19 00:13

No.2 について



tom04 さんの方法ですと 4行目と5行目の両方のどこかのセルに何か入っている(値が空白になる式も含む)と、そこも含めてソートをしてしまうので注意してください。
    • good
    • 0

こんな感じで良いと思います。


----------------------------------------------------------------------
Sub Sample()
Range(Cells(6, 1), Cells(Rows.Count, Columns.Count)).Sort _
Key1:=Range("H7"), Order1:=xlDescending, _
Key2:=Range("A7"), Order2:=xlAscending, _
Header:=xlYes, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
End Sub
----------------------------------------------------------------------
※ 最終行を調べる必要はないので上記で良いのですが、どうしてもというなら以下のようにしてみてください。
----------------------------------------------------------------------
Sub Sample()
Dim 終 As Long
終 = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(6, 1), Cells(終, Columns.Count)).Sort _
Key1:=Range("H7"), Order1:=xlDescending, _
Key2:=Range("A7"), Order2:=xlAscending, _
Header:=xlYes, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
End Sub
----------------------------------------------------------------------
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A