• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルでグループを決めて並べ替えできるか)

エクセルでグループを決めて並べ替えできるか

このQ&Aのポイント
  • エクセルでグループを決めて並べ替えをする方法はありますか?
  • エクセルで振り仮名によるグループ分けをしている場合、代表者のあいうえお順に並べ替えることは可能でしょうか?
  • エクセルで名前とコードが入力されている場合、グループごとに代表者を基準にしてあいうえお順に並べ替えることはできますか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#204879
noname#204879
回答No.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

miyu1980
質問者

お礼

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

その他の回答 (2)

  • char_cat
  • ベストアンサー率45% (22/48)
回答No.2

マクロでやると出来そうです。 ーーーーーーーーーーーーーーーーーーーーーーーー 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人で上手くいくか保障は出来ませんけど・・・。(^^;

miyu1980
質問者

お礼

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

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 その並べ替えの規則が見えてきません。 >あいうえお順に関係なく同じグループの「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個までです。

miyu1980
質問者

お礼

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

関連するQ&A