過去ログ

                                Page     358
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼並べ替えをしたいのです。  hiro_kun 02/11/16(土) 15:07
   ┗Re:並べ替えをしたいのです。  ぴぎゃ!!(反省中) 02/11/16(土) 15:52
      ┗Re:並べ替えをしたいのです。  hiro_kun 02/11/18(月) 17:04
         ┗Re:並べ替えをしたいのです。  ぴぎゃ!!(反省中) 02/11/19(火) 0:35
            ┗Re:並べ替えをしたいのです。  hiro_kun 02/11/19(火) 10:32

 ───────────────────────────────────────
 ■題名 : 並べ替えをしたいのです。
 ■名前 : hiro_kun
 ■日付 : 02/11/16(土) 15:07
 -------------------------------------------------------------------------
   はじめまして、VBA初心者です。
多くの条件で並べ替えをしたいのですがうまく出来ません。
A B C  D  E
a 1 11 201 15
a 3 17 205 26
b 1 11 201 51
a 2 12 202 62
b 2 11 206 52

上記の場合で
第一条件Aで昇順
第二条件Bで昇順
第三条件Cで昇順
第四条件Dで昇順
で並べ替えをしたいのです。sortでは第三条件までしかできないのでどなたかお教えください。当方は第五条件まで設定したいと思ってます。
宜しくお願いします。
 ───────────────────────────────────────  ■題名 : Re:並べ替えをしたいのです。  ■名前 : ぴぎゃ!!(反省中)  ■日付 : 02/11/16(土) 15:52  -------------------------------------------------------------------------
   hiro_kunさん、こんにちは。


>sortでは第三条件までしかできないので

Sortを複数回行うことで実現できます。


'自動記録…
'
'アクティブなシートの "A1:E6"(ヘッダあり)
'を昇順で並べ替えます(列番号が若いほど優先されます)。
Sub Macro1()
  Range("A1:E6").Select
  With Selection
    '最優先:D列, 2番目 :E列
    .Sort _
     Key1:=Range("D2"), Order1:=xlAscending, _
     Key2:=Range("E2"), Order2:=xlAscending, _
     Header:=xlGuess, OrderCustom:=1, Orientation:=xlTopToBottom
    '最優先:A列, 2番目 :B列, 3番目 :C列
    .Sort _
     Key1:=Range("A2"), Order1:=xlAscending, _
     Key2:=Range("B2"), Order2:=xlAscending, _
     Key3:=Range("C2"), Order3:=xlAscending, _
     Header:=xlGuess, OrderCustom:=1, Orientation:=xlTopToBottom
  End With
End Sub

それでは。
 ───────────────────────────────────────  ■題名 : Re:並べ替えをしたいのです。  ■名前 : hiro_kun  ■日付 : 02/11/18(月) 17:04  -------------------------------------------------------------------------
   ▼ぴぎゃ!!(反省中) さん、こんにちは。
ご返信ありがとうございます。
ご返事遅くなりました。
試してみましたが一回目のソートが残らず二番のソートで並び替えになります。
何か設定がおかしいのでしょうか?
当方は2000バージョンです。
宜しくお願いします。

>hiro_kunさん、こんにちは。
>
>
>>sortでは第三条件までしかできないので
>
>Sortを複数回行うことで実現できます。
>
>
>'自動記録…
>'
>'アクティブなシートの "A1:E6"(ヘッダあり)
>'を昇順で並べ替えます(列番号が若いほど優先されます)。
>Sub Macro1()
>  Range("A1:E6").Select
>  With Selection
>    '最優先:D列, 2番目 :E列
>    .Sort _
>     Key1:=Range("D2"), Order1:=xlAscending, _
>     Key2:=Range("E2"), Order2:=xlAscending, _
>     Header:=xlGuess, OrderCustom:=1, Orientation:=xlTopToBottom
>    '最優先:A列, 2番目 :B列, 3番目 :C列
>    .Sort _
>     Key1:=Range("A2"), Order1:=xlAscending, _
>     Key2:=Range("B2"), Order2:=xlAscending, _
>     Key3:=Range("C2"), Order3:=xlAscending, _
>     Header:=xlGuess, OrderCustom:=1, Orientation:=xlTopToBottom
>  End With
>End Sub
>
>それでは。
 ───────────────────────────────────────  ■題名 : Re:並べ替えをしたいのです。  ■名前 : ぴぎゃ!!(反省中)  ■日付 : 02/11/19(火) 0:35  -------------------------------------------------------------------------
   hiro_kunさん、こんばんは。

>一回目のソートが残らず
すみません、この部分が理解できませんでした。

・No1802の表
 A B C  D  E
 a 1 11 201 15
 a 3 17 205 26
 b 1 11 201 51
 a 2 12 202 62
 b 2 11 206 52

・1回目[最優先:D列, 2番目:E列](条件は3つまでなのでまず第4・第5条件で並べ替え)
 A B C  D  E
 a 1 11 201 15
 b 1 11 201 51
 a 2 12 202 62
 a 3 17 205 26
 b 2 11 206 52

・2回目[最優先:A列, 2番目:B列, 3番目:C列](第1〜第3条件で並べ替え)
 A B C  D  E
 a 1 11 201 15
 a 2 12 202 62
 a 3 17 205 26
 b 1 11 201 51
 b 2 11 206 52

条件は3つまでですので、上記のとおり2回ソートを行っているのですが…
1回目の結果が異なる、ということでしょうか?


それと、並べ替えにSelectは不要ですので(頭使ってないのが…)、

Range("A1:E6").Select
With Selection

With Range("A1:E6")

に変更してください。


当方もExcel2000(9.0.6926 SP-3)です。

それでは。
 ───────────────────────────────────────  ■題名 : Re:並べ替えをしたいのです。  ■名前 : hiro_kun  ■日付 : 02/11/19(火) 10:32  -------------------------------------------------------------------------
   ▼ぴぎゃ!!(反省中) さん、こんにちは。

>>一回目のソートが残らず
>すみません、この部分が理解できませんでした。
こちらこそ、言葉たらずで済みません
>・No1802の表
> A B C  D  E
> a 1 11 201 15
> a 3 17 205 26
> b 1 11 201 51
> a 2 12 202 62
> b 2 11 206 52
>
>・1回目[最優先:D列, 2番目:E列](条件は3つまでなのでまず第4・第5条件で並べ替え)
> A B C  D  E
> a 1 11 201 15
> b 1 11 201 51
> a 2 12 202 62
> a 3 17 205 26
> b 2 11 206 52
>
>・2回目[最優先:A列, 2番目:B列, 3番目:C列](第1〜第3条件で並べ替え)
> A B C  D  E
> a 1 11 201 15
> a 2 12 202 62
> a 3 17 205 26
> b 1 11 201 51
> b 2 11 206 52
上記の結果になるようにしたかったんですが当方のソートの選び順が悪かったみたいです。組みなおします。

>条件は3つまでですので、上記のとおり2回ソートを行っているのですが…
>1回目の結果が異なる、ということでしょうか?

>それと、並べ替えにSelectは不要ですので(頭使ってないのが…)、
>
>Range("A1:E6").Select
>With Selection
>↓
>With Range("A1:E6")
>
>に変更してください。
心遣いありがとうございます。変数使用してRangeにて組んでます。
>
>当方もExcel2000(9.0.6926 SP-3)です。
>
>それでは。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 358