Excel VBA質問箱 IV

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

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


65513 / 76734 ←次へ | 前へ→

【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

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

1 hits

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

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