Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11494 / 13646 ツリー ←次へ | 前へ→

【15780】セル内の1桁目のみでソート 04/7/6(火) 15:32 質問[未読]
【15796】Re:セル内の1桁目のみでソート ichinose 04/7/6(火) 17:36 回答[未読]
【15799】Re:セル内の1桁目のみでソート 04/7/6(火) 19:08 お礼[未読]

【15780】セル内の1桁目のみでソート
質問    - 04/7/6(火) 15:32 -

引用なし
パスワード
   こんにちは。
↓のようなデータがあり、それをソートしたいのですが、
A  B  C   
0630 046 901567
0701 056 815528
0630 046 915200
0630 046 163522
0630 115 152968
0705 056 162000
0702 046 520001
0630 046 920006

1.A列昇順、
2.B列昇順、
3.C列の上1桁で降順、
4.C列昇順
という条件(特に条件3から4)でソートをするには
どのようにしたらよいのでしょうか?

※ソート後↓
A  B  C   
0630 046 901567
0630 046 915200
0630 046 920006
0630 046 163522
0630 115 152968
0701 056 815528
0702 046 520001
0705 056 162000

ご教授よろしくお願いします。
                              学

【15796】Re:セル内の1桁目のみでソート
回答  ichinose  - 04/7/6(火) 17:36 -

引用なし
パスワード
   ▼学 さん:
こんにちは。私の地域は、暑いではなく、熱いです・・・。
皆さんの地域はいかがですか?

>↓のようなデータがあり、それをソートしたいのですが、
>A  B  C   
>0630 046 901567
>0701 056 815528
>0630 046 915200
>0630 046 163522
>0630 115 152968
>0705 056 162000
>0702 046 520001
>0630 046 920006
>
>1.A列昇順、
>2.B列昇順、
>3.C列の上1桁で降順、
>4.C列昇順
>という条件(特に条件3から4)でソートをするには
>どのようにしたらよいのでしょうか?
>
>※ソート後↓
>A  B  C   
>0630 046 901567
>0630 046 915200
>0630 046 920006
>0630 046 163522
>0630 115 152968
>0701 056 815528
>0702 046 520001
>0705 056 162000
>
>ご教授よろしくお願いします。
>                              学
問題点は、

 1. >3.C列の上1桁で降順、
 2. セルのソートはキーが3つしか指定できない点
ですよね!!

1.は、D列を作業領域にとりましょう。
ここに「=value(mid(c1,1,1))」なんて入れると上1桁が表示されるので
これをソート対象にします。

2.は、こういうのは、パターンが決まっていて、
 最初にB列、D列、C列をキーにソート
 次にA列でソートします。
これをコードにすると、

'================================================================
Sub main()
  Dim rng As Range
  Set rng = Range("a1", Cells(Rows.Count, 1).End(xlUp))
  With rng
   With .Offset(0, 3)
     .Formula = "=value(mid(c1,1,1))"
     .Value = .Value
     End With
   With .Resize(, 4)
     .Sort Key1:=Range("B1"), Order1:=xlAscending, Key2:=Range("D1") _
      , Order2:=xlDescending, Key3:=Range("C1"), Order3:=xlAscending, Header _
      :=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _
      , SortMethod:=xlPinYin
     .Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
      :=xlPinYin
     End With
   .Offset(0, 3).Value = ""
   End With
End Sub

アクティブシートに例題のようなデータを配置して確認して下さい。

【15799】Re:セル内の1桁目のみでソート
お礼    - 04/7/6(火) 19:08 -

引用なし
パスワード
   ▼ichinose さん:
>こんにちは。私の地域は、暑いではなく、熱いです・・・。
>皆さんの地域はいかがですか?
ここはまだ「暑い」でいけそうです。クーラーでキンキンに冷えておりますが・・・。

>問題点は、
>
> 1. >3.C列の上1桁で降順、
> 2. セルのソートはキーが3つしか指定できない点
>ですよね!!
その通りです。そこがさっぱり考えつきませんでした。
実際に試してみて、おかげさまでうまくいきました!

ichinoseさん、勉強になりました。どうもありがとうございました。
                                  学

11494 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free