
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA基本構文の作り方 2列の...
-
構造体のリストをソートしたい。
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
リスト構造のソートで悩んでま...
-
C言語・要素除去
-
2次元配列を複数項目でソートし...
-
4番目以降の並べ替え
-
C# DataTableの行をソートしてD...
-
スプレッドでのソート
-
C言語でアナグラムを求めるプロ...
-
DirectoryInfo型配列ソート(C#)
-
簡単で面白い問題
-
VB.NETでファイル名順にファイ...
-
C# Listを使わずに2次元配列の...
-
VBAのプログラムで、DIAG = 1# ...
-
C言語 配列の長さの上限
-
関数から配列を返すには?
-
CStringからchar*への型変換に...
-
C言語のポインタに直接アドレス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
VB.NETでファイル名順にファイ...
-
C# DataTableの行をソートしてD...
-
C言語・要素除去
-
配列の問題
-
VBA基本構文の作り方 2列の...
-
あるディレクトリ内のファイル...
-
Excelですべての組合せ(重複組...
-
n番目に大きい数を求めるアル...
-
2次元配列を複数項目でソートし...
-
ファイル名「1.jpg ~10.jpg~...
-
クイックソートしながら重複要...
-
C# ArrayListを二次元配列のよ...
-
csvファイル内にてソートす...
-
C言語について
-
昇順ソート
-
int num[10]という配列に、適当...
-
EXCEL VBAのソートについて
-
excel VBA の条件をつけての列...
おすすめ情報