
4つ以上のキーでソートしたい場合の書き方を教えていただけますでしょうか。
宜しくお願いします。
order3の次にorder4をキーとしてソートしたいのですが、
書き方が分かりません。
Worksheets("明細").Activate
Worksheets("明細").Range("B3:CX" & Totalnum + 2) _
.Sort Key1:=Range("N3"), order1:=xlAscending, _
Key2:=Range("Q3"), order2:=xlAscending, _
Key3:=Range("G3"), order3:=xlAscending, _
Key4:=Range("AT3"), order4:=xlAscending
別の質問ですが、order4を別のシートから(?)ということはできるのでしょうか?
No.3ベストアンサー
- 回答日時:
>ちなみにN3→Q3→G3→AT3の順番でソートしたいです。
Excelは1度に3つまでのキーしか並べ替えられません
ですから、過去2度、説明しましたが優先順位の一番低い4番目のキーで
ソートを行い、その後1番キー、2番キー、3番キーでソートを行います。
With ActiveWorkbook.Worksheets("明細").Sort
.SortFields.Clear
.SortFields.Add Key:=Range("AT3"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("B3:CY" & Totalnum + 2)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
.SortFields.Clear
.SortFields.Add Key:=Range("N3"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("Q3"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("G3"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("B3:CY" & Totalnum + 2)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
同じことを3度説明しましたので4度目は辞退させていただきます。
No.2
- 回答日時:
>試してみたのですが、4番目のキーがソートされませんでした。
一度、手作業で試されては如何ですか
1)まずは第1キーにRange("AT3")を指定してソートを行ってください。
2)次に第1キーにRange("N3")、第2キーにRange("Q3")、第3キーにRange("G3")を
指定してソートを行ってください。
以上でお望みの結果になったでしょうか?
うまくいったのなら以上の作業をマクロの記録を取ればコードは得られると思います。
>order4を別のシートから(?)ということはできるのでしょうか
引数 orderは単に昇順、降順を指定するもので "別のシート" の意図が解りませんが?
それと1つ気になるのですが
>Worksheets("明細").Activate
MsgBox Worksheets("明細").Range("B3:CX" & Totalnum + 2).Address(0, 0)
>Worksheets("明細").Range("B3:CX" & Totalnum + 2) _
でソート範囲が正しく取得されているか確認してみてください。
ありがとうございます。
マクロの記録でサンプルテストをしてみたものを以下のように少し変更し、実行してみたのですが、やはりAT3(優先順位4番目)がソートされませんでした。
EXCEL2007からはSortfieldが使えそうなのですが、何か間違っている箇所があれば
教えていただけないでしょうか?
すみません。
ちなみにN3→Q3→G3→AT3の順番でソートしたいです。
With ActiveWorkbook.Worksheets("明細").Sort
ActiveWorkbook.Worksheets("明細").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("明細").Sort.SortFields.Add Key:=Range("N3"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("明細").Sort.SortFields.Add Key:=Range("Q3"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("明細").Sort.SortFields.Add Key:=Range("G3"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("明細").Sort.SortFields.Add Key:=Range("AT3") _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("B3:CY" & Totalnum + 2)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
No.1
- 回答日時:
4番目のキーで先にソートしましょう
With Worksheets("明細")
.Range("B3:CX" & Totalnum + 2).Sort _
Key1:=.Range("AT3"), order1:=xlAscending
.Range("B3:CX" & Totalnum + 2).Sort _
Key1:=.Range("N3"), order1:=xlAscending, _
Key2:=.Range("Q3"), order2:=xlAscending, _
Key3:=.Range("G3"), order3:=xlAscending
End With
ありがとうございます。
試してみたのですが、4番目のキーがソートされませんでした。
Key1:=.Range("AT3"), order1:=xlAscendingのKey番号を4に変更はしなくて良いでしょうか?
あと1点別で教えていただきたいのですが、
その4番目のキーを別のシートからのものとするということは可能でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel_マクロ_現在開いているシートにマクロを実行したいです 1 2023/02/14 23:54
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataTableの行をソートしてD...
-
VBA基本構文の作り方 2列の...
-
GridViewで列のソートを無効に...
-
C# DataGridView のヘッダーセ...
-
構造体のリストをソートしたい。
-
VB.NETでファイル名順にファイ...
-
Double型ソート方法
-
ソートについて(その他質問あ...
-
ソートのアルゴリズム
-
C言語・要素除去
-
構造体配列の並べ替え
-
(VBA) Dir 関数で取得するファ...
-
VB6 任意の順番でのソート
-
10個の整数を入力して小さい順...
-
DataGridViewの複数列を連動し...
-
Excel VBA テキストボックス内...
-
DataGridViewのソートを止めたい
-
VB.net データセットからのCSV...
-
該当のセルのみを2次元配列に入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
VB.NETでファイル名順にファイ...
-
C# DataTableの行をソートしてD...
-
VBA基本構文の作り方 2列の...
-
ファイル名「1.jpg ~10.jpg~...
-
あるディレクトリ内のファイル...
-
GridViewで列のソートを無効に...
-
C言語・要素除去
-
excel VBA の条件をつけての列...
-
Excelですべての組合せ(重複組...
-
VBScriptで配列のソートをする...
-
配列の問題
-
ブック.csvを開かずに他のブッ...
-
2次元配列を複数項目でソートし...
-
構造体配列のソート
-
listboxの並び替え
-
構造体のリストをソートしたい。
-
リスト構造のソートで悩んでま...
-
文字列をソートする方法
おすすめ情報