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

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

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

こんにちは、エクセルで以下のように入力している場合、 同じコードの人ををグループと考えて、その代表者のあいうえお順 で並べ替えをする方法はありますでしょうか?? 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」の人にくっ付いてくるようにしたいのですが・・・ なにか方法があれば、どうかよろしくお願いします!

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

  • ベストアンサー
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

  • Excelについて

    担当者名 担当者コード 施設名 施設コード 納入日 数量 Aさん    10       たなか  1234    7/1    5       Bさん    11       さとう   2345    7/1    3 Cさん    12       すずき  3456    7/1    2 Aさん    10       たなか  4567    7/1    7 Dさん    13       いとう   5678    7/1    4   Dさん    13       いとう   6789    7/1    23 Cさん    12       すずき  7890    7/1    5 Bさん    11       なかだ  8901    7/1    6 という感じで1ヶ月分のデータがあります。(350件ほど) それを・・・ 担当者 施設名 7/1 7/2 7/3 7/4・・・ Aさん  たなか  12 Bさん  さとう   3 Bさん  なかだ  6 Cさん  すずき  7 Dさん  いとう   27 というようにカレンダー方式で集計したいのです。 同じ日に同じ施設名が何回も出てきたりするのですが、うまく集計できる方法はないでしょうか? 宜しくお願い致します。

  • エクセルでの順位づけ

    こんにちは 下のような表で、C列に順位をつけて、順位を出すのではなく、 名前を表示したい場合(5行目から7行目)は、どうしたらいいのか困っています。 この関数ならできるというのがありましたら、教えてください。 よろしくお願いします。     A列   B列   C列     (名前) (点) (順位) 1行目 いちろう  40    2 2行目 じろう   30    3 3行目 はなこ   50    1 5行目     第1位  はなこ 6行目     第2位  いちろう 7行目     第3位  じろう

  • エクセルでグループ分け

    お知恵を貸してくださいよろしくお願いします。 A:グループ名 B:性別 C:名前 が100人分横で入っています。 それを、グループごとに分けて、縦の一覧にしたいのです。   A B C 1 A 男 佐藤 2 C 女 山田 3 B 女 田中 4 A 女 鈴木   ↓(別シートに)   Aグループ   Bグループ   Cグループ 1 男 佐藤    女 田中    女 山田 2 女 鈴木 3 4 このように抽出して、並び替えることを関数をつかってできないでしょうか。よろしくご教示ください。

  • エクセルでこんな表を作成したいのですが。。。

    ちょっと教えて頂きたいのですが、エクセルで 下記のような表を作成したいのですが、 関数などを使ってうまくできればと思っております。 (名前は架空の人物ということでお願いします。。。) 【データ1】    A          B 1 あべしんぞう      外務大臣 2 こいずみじゅんいちろう 環境庁長官 3 ふくだたけお      官房長長官 というデータがあります。 もう1つ別のシートで 【データ2】     A          B 1 こいずみじゅんいちろう 空白 2 たなかまきこ      空白 3 おざわいちろう     空白 4 ふくだたけお      空白 5 のだせいこ       空白 というデータがあったとします。 【データ2】のBのA1を参照して、空白部分に、 【データ1】から検索してくるようにして、B1に 「環境庁長官」というようなデータを表示させたい場合、 どのような関数を使えばいいか教えていただけいますでしょうか。 お手数ですが、よろしくお願いします。 VLOOKUPを使ってみたのですが、 うまくできませんでした。。。

  • エクセル・1つのセルに入った漢字(カナ)の分け方

    エクセルにお強い方、教えてください>< A1のセルに、 山田 花子(ヤマダ ハナコ) とあるとします。 私は B1のセルに 山田 花子 C1のセルに (ヤマダ ハナコ) と、分けてデータ化させたいのですが、 どのようにマクロを組めばよいでしょうか? また、分け終わったC1の(ヤマダ ハナコ)に 置換を使って( )をとって、 カナ を かな に直すため、 PHONETICと書式のふりがな機能を使って直しても データにエラーは起きずに処理できるでしょうか? 最終的なデータとして A1セル→山田 花子(やまだ はなこ) B1セル→山田 花子 C1セル→やまだ はなこ としたいのです。 ご存知の方いらっしゃいましたら、教えてください。 宜しくお願い致します。

  • エクセルの表の合体

    2つの表A,Bがあります。AとBは同じフィールド名を持っています。 Aが持つIDとBが持つIDが重複する場合,BのレコードをAに上書きし,重複しない場合はそれぞれのレコードを用いて新しい表Cを作りたいのですが,方法がわかりません。 どなたかご教授お願いいたします。 例) A表 ID,苗字,名前 0,佐藤,一郎 1,田中,太郎 2,山田,翔太 3,上田,大作 5,加藤,正和 B表 ID,苗字,名前 0,宮元,賢治 1,田中,太郎 2,山田,翔太 4,山下,謙一 5,上山,浩二 C表 ID,苗字,名前 0,宮元,賢治 1,田中,太郎 2,山田,翔太 3,上田,大作 4,山下,謙一 5,上山,浩二

  • VBAエクセル 文字の一部を置き換える方法

    エクセル2003を使っています。 エクセルマクロで b6セルに名前が入力されています。その名前の2文字目を●に置き換えたいです。 鈴木 花子→鈴● 花子 星 光子→星● 光子 すずき はなこ→すず● はなこ ほし みつこ→ほし● みつこ (1)シートが100枚くらいありまして、シート名に”届”という文字が含まれているシートのb6セルを置き換える (2)a6に名前のかなが入力されているので、そこも3文字目、4文字目を●に置き換える というマクロを教えてください。 よろしくお願いします。

  • あるセルの文字列が条件で、あるセルに色を設定するには?(2)

    例えば、下のような表で      A      B      C       D      1   商品名   数量     名前    2   りんご     2     さとう 3   みかん     1     さとう     3 4   ぶどう     1     すずき 5   ばなな     2     すずき     3 6   みかん     3     たなか 7   りんご     2     たなか 8   ぶどう     2     たなか     4 「みかん」という商品名の時だけ、C列の重複している名前の一番下のセルに、黄色を設定したい場合は、どうしたらよいのでしょうか? つまり、セルC3とC8に色をかけたいのです。不可能でしょうか(-_-;)ちなみにD列は、重複している名前の一番下の行に合計が出る関数が入っています。一番下が難しいなら、みかんの商品があるうちの重複している名前(さとう・たなか)すべてに色がついてもかまいません。 どなたかいい方法があれば教えてください。よろしくお願いします(>_<)

  • Excel)SUMPRODUCT関数で・・・

    今まで困ったときにこちらで色々調べて答えを見出していた者です。 いつも参考にさせていただきありがとうございます。 ついに、うまいこと調べたいことが見つけ出せなくなってしまったため質問をさせてください。 ■基データ    A     B    C      D    ――――――――――――――――――――― 1 氏名   形式   内容    金額 2 やまだ   A   りんご   50,000 3 さとう   B   バナナ    8,000 4 やまだ  (A)  みかん  ▲30,000 5 すずき   B   もも     6,000 6 たなか   C   ぶどう    5,000 7 さとう  (B)  キウイ   ▲4,000 というデータがあるとします。(明細みたいなもの) これを氏名(A列)と形式(B)列の条件で金額(D列)の合計を 別の表(集計表みたいなもの)に結果を出したいと思っています。 以前こちらで調べて、「SUMPRODUCT」関数が適していると思い 試してみました。そして結果も得られていました。 ですが、条件がちょっと複雑になってしまい、その関数での 対応が可能かどうかお知恵をお貸しいただきたいと思います。 または、別の方法(ピボットテーブルは対象外とさせてください) がありましたらご教示下さい。よろしくおねがいします。 【今までの条件設定(結果表示したいセルへの入力式)】  <氏名がやまだで形式がAの場合の金額の合計>  =SUMPRODUCT(($A$2:$A$7="やまだ")*($B$2:$B$7="A"),$D$2:$D$7)   ※さとう・すずき・たなかもそれぞれ求めます。   ※形式B・Cもそれぞれ求めます。(そして当初は形式に「()」の表示はありませんでした。) 【条件の変更によって結果を求めたいこと】  ■氏名別は変わらず、形式は「()」のあるなし関わらず   [Aも(A)も同じ扱い]として金額の合計を求めたい。   上記の場合ですと、「やまだのA・(A)の合計値」と   「さとうのB・(B)の合計値」を算出する数式を知りたいです。 Bookの特徴ですが、   ・結果を出させるセルは同一シート内にあり、また印刷時は同一用紙に表示させる  ・結果を出させるセルは見栄えの問題で結合させてある という具合です。。。 何かよい方法はありますでしょうか? 宜しくお願いいたします。

  • GROUP BYを使ったSELECT文の総件数を求める方法

    【表A】 列1 | 列2  ----------- 山田 | A 山田 | A 田中 | A 田中 | B 田中 | C 木村 | A 木村 | A 木村 | B 上記で列1・列2をグループ化した件数を求めたいのですが、Oracleだと   SELECT COUNT(*) FROM (SELECT 列1,列2 FROM 表A GROUP BY 列1,列2) というSQL文で結果「6」が出力されますが、SQLServerではエラーとなってしまいます。 SQLServerで実現したい場合はどのように記述すればよろしいでしょうか?

専門家に質問してみよう