|
▼学 さん:
こんにちは。私の地域は、暑いではなく、熱いです・・・。
皆さんの地域はいかがですか?
>↓のようなデータがあり、それをソートしたいのですが、
>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
アクティブシートに例題のようなデータを配置して確認して下さい。
|
|