電子書籍の厳選無料作品が豊富!

こんにちは、エクセルで以下のように入力している場合、
同じコードの人ををグループと考えて、その代表者のあいうえお順
で並べ替えをする方法はありますでしょうか??

A列にコード、B列に名前、C列に振り仮名が振ってあります。
001、002などでグループ分けして、グループごとの
それぞれの人にabcを割り当てています。
合計で2000人くらいグループは400程度あります。

001a  山田太郎  やまだたろう
001b  山田花子  やまだはなこ
001c  岡本一郎  おかもといちろう
002a  鈴木健二  すずきけんじ
002b  佐藤優子  さとうゆうこ
003a 宮元博   みやもとひろし
004a 田中ゆうじ たなかゆうじ
004b 原 桂子  はら けいこ
005a 伊藤裕美  いとうゆみ
005b 内田芳樹  うちだよしき

現在はコード順に並んでいますが、これを代表者(aのついている人)
を基準にして、「あいうえを順」にならべかえることはできますか??

005a 伊藤裕美  いとうゆみ
005b 内田芳樹  うちだよしき
002a  鈴木健二  すずきけんじ
002b  佐藤優子  さとうゆうこ
004a 田中ゆうじ たなかゆうじ
004b 原 桂子  はら けいこ
003a 宮元博   みやもとひろし
001a  山田太郎  やまだたろう
001b  山田花子  やまだはなこ
001c  岡本一郎  おかもといちろう

と、このように並べ替えたいのですが・・
代表者(aの人)をあいうえお順に並べ替えると、bcd・・・の
人はあいうえお順に関係なく同じグループの「a」の人にくっ付いてくるようにしたいのですが・・・
なにか方法があれば、どうかよろしくお願いします!

A 回答 (3件)

Fig-1


   A    B       C      D   E
1  CODE NAME    PHONETIC     TEMP1 TEMP2
2  001a 山田太郎  やまだたろう   001  a
3  001b 山田花子  やまだはなこ   001  b
4  001c 岡本一郎  おかもといちろう 001  c
5  002a 鈴木健二  すずきけんじ   002  a
6  002b 佐藤優子  さとうゆうこ   002  b
7  003a 宮元博   みやもとひろし  003  a
8  004a 田中ゆうじ たなかゆうじ   004  a
9  004b 原 桂子  はら けいこ   004  b
10 005a 伊藤裕美  いとうゆみ    005  a
11 005b 内田芳樹  うちだよしき   005  b
12

D2: =LEFT(A2,3)
E2: =RIGHT(A2,1)
範囲 D2:E2 を下方に複写

[オートフィルタ]を設定して、E列を“a”で抽出した結果が Fig-2 です。

Fig-2
   A     B       C      D    E
1  CODE▼ NAME▼   PHONETIC▼   TEMP1▼ TEMP2▼
2  001a  山田太郎  やまだたろう  001   a
5  002a  鈴木健二  すずきけんじ  002   a
7  003a  宮元博   みやもとひろし 003   a
8  004a  田中ゆうじ たなかゆうじ  004   a
10 005a  伊藤裕美  いとうゆみ   005   a


[オートフィルタ]を掛けたまま(Fig-2の状態)で全範囲 A1:E10 を、C列の昇順で[並べ替え]えます。さらに、セル F2 に式 =SUBTOTAL(3,E$2:E2) を入力して、此れを下方に複写した結果が Fig-3 です。

Fig-3
   A     B       C      D    E    F
1  CODE▼ NAME▼   PHONETIC▼   TEMP1▼ TEMP2▼ TEMP3
2  005a  伊藤裕美  いとうゆみ   005   a      1
5  002a  鈴木健二  すずきけんじ  002   a      2
7  004a  田中ゆうじ たなかゆうじ  004   a      3
8  003a  宮元博   みやもとひろし 003   a      4
10 001a  山田太郎  やまだたろう  001   a      5


[オートフィルタ]を掛けたまま(Fig-3の状態)で範囲 D2:F10 を選択して、此れを何処かの空き地(例えばセル K1)に[値の貼り付け]た結果を Fig-4 に示します。

Fig-4
  K  L M
1 005 a 1
2 002 a 2
3 004 a 3
4 003 a 4
5 001 a 5


[オートフィルタ]を解除して、セル F2 に式 =VLOOKUP(D2,K$1:M$5,3,FALSE)+(E2<>"a")*ROW()/10000 を上書き入力して、此れを下方に複写した結果が Fig-4 です。

Fig-4
   A    B       C      D   E   F
1  CODE NAME    PHONETIC     TEMP1 TEMP2 TEMP3
2  005a 伊藤裕美  いとうゆみ    005  a      1
3  001b 山田花子  やまだはなこ   001  b   5.0003
4  001c 岡本一郎  おかもといちろう 001  c   5.0004
5  002a 鈴木健二  すずきけんじ   002  a      2
6  002b 佐藤優子  さとうゆうこ   002  b   2.0006
7  004a 田中ゆうじ たなかゆうじ   004  a      3
8  003a 宮元博   みやもとひろし  003  a      4
9  004b 原 桂子  はら けいこ   004  b   3.0009
10 001a 山田太郎  やまだたろう   001  a      5
11 005b 内田芳樹  うちだよしき   005  b   1.0011
12


全範囲 A1:F11 を、F列の昇順で[並べ替え]えた結果が Fig-5 です。

Fig-5
   A    B       C      D   E   F
1  CODE NAME    PHONETIC     TEMP1 TEMP2 TEMP3
2  005a 伊藤裕美  いとうゆみ    005  a      1
3  005b 内田芳樹  うちだよしき   005  b   1.0003
4  002a 鈴木健二  すずきけんじ   002  a      2
5  002b 佐藤優子  さとうゆうこ   002  b   2.0005
6  004a 田中ゆうじ たなかゆうじ   004  a      3
7  004b 原 桂子  はら けいこ   004  b   3.0007
8  003a 宮元博   みやもとひろし  003  a      4
9  001a 山田太郎  やまだたろう   001  a      5
10 001b 山田花子  やまだはなこ   001  b    5.001
11 001c 岡本一郎  おかもといちろう 001  c   5.0011
12
    • good
    • 2
この回答へのお礼

ありがとうございます。
なるほど、こういうやり方があるのですね。
まさに、求めていたものです。
うまくいきました!!

今後もよろしくお願いします!

お礼日時:2007/05/29 00:55

マクロでやると出来そうです。


ーーーーーーーーーーーーーーーーーーーーーーーー
Sub 並べ替え()
Dim データ(9, 2)
データ数 = 10
コード桁 = 3
リーダーの印 = "a"

Sheets("Sheet1").Select
Range("A1").Select

For I = 0 To データ数 - 1

データ(I, 0) = Cells(I + 1, 1)
データ(I, 1) = Cells(I + 1, 2)
データ(I, 2) = Cells(I + 1, 3)

Next I

Sheets("Sheet2").Select
Range("A1").Select

For I = 0 To データ数 - 1

If Right(データ(I, 0), 1) = リーダーの印 Then
Selection = データ(I, 0)
ActiveCell.Offset(0, 1).Range("A1") = データ(I, 1)
ActiveCell.Offset(0, 2).Range("A1") = データ(I, 2)

ActiveCell.Offset(1, 0).Range("A1").Select
End If
Next I
Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin

Range("A1").Select


For J = 0 To データ数 - 1
比較データ = Selection
For I = 0 To データ数 - 1

If データ(I, 0) <> 比較データ And Left(データ(I, 0), コード桁) = Left(比較データ, コード桁) Then
ActiveCell.Offset(1, 0).Range("A1:C1").Select
Selection.Insert Shift:=xlDown
ActiveCell.Select
Selection = データ(I, 0)
ActiveCell.Offset(0, 1).Range("A1") = データ(I, 1)
ActiveCell.Offset(0, 2).Range("A1") = データ(I, 2)

データ(I, 0) = ""
データ(I, 1) = ""
データ(I, 2) = ""
End If

Next I
ActiveCell.Offset(1, 0).Range("A1").Select

Next J
End Sub
ーーーーーーーーーーーーーーーーーーーーーーーーーー
このマクロは10名のデータを処理します。
グループの数字の文字数は3桁で揃っている必要があります。
リーダーの印はa(半角の小文字a)です。
A列にコード、B列に名前、C列に振り仮名です。
Sheet1にタイトル行なしで、データを置き、
Sheet2に並べ替えたデータを落とし込みます。

人数分で処理するには、Dim データ(9, 2)の
9のところを人数マイナス1の数字に置き換えてください。

データ数 = 10 (この人数を変更してください。)
必要があれば以下も修正
コード桁 = 3 
リーダーの印 = "a"

一度試してみてください。10人分では上手く出来ました。
2000人で上手くいくか保障は出来ませんけど・・・。(^^;
    • good
    • 0
この回答へのお礼

ありがとうございます。
正直マクロはよく分からないのです・・・
使ったことも無くて・・
マクロ少し勉強して、今度試して見ます!!
折角の貴重なご意見を試すことができなくて申し訳ないです。

お礼日時:2007/05/29 00:53

こんばんは。



その並べ替えの規則が見えてきません。

>あいうえお順に関係なく同じグループの「a」の人にくっ付いてくるようにしたい


たとえば、以下のようにして、タイトル行を振っておいて、

コード  名前  ふりがな  コード1

コード1のところに、

=MID(A2,1,LEN(A2)-1)+(123-CODE(RIGHT(A2,1)))/100
このような数式を入れれば、


001a  山田太郎  やまだたろう  1.26
001b  山田花子  やまだはなこ  1.25

となります。

データ-並べ替え

最優先されるキー
コード1  降順

2番目に優先されるキーで、
ふりがな  昇順

とすれば、それに近くなります。
ただ、コードは、5 の次に、2 が来ることはありえません。
あくまでも、5, 4, 3, 2, 1 の序列は変わりません。

なお、末尾字は、a,b,c, 小文字であることを前提としています。また、26個までです。
    • good
    • 0
この回答へのお礼

お答えいただきありがとうございます。
試してみましたが私の思い描いたものとは少し異なりました。
説明が下手で申し訳ないです。
今後もよろしくお願いします。

お礼日時:2007/05/29 00:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!