- ベストアンサー
エクセルのデータベースについて
エクセルの表を項目ごとに振り分けたいのですが、関数などを使おうとしてもいまいちひらめきません。 何か良い方法がありましたらお教えください。 具体的に行いたいことは・・・ 区分 氏名 区 分 A あ A B C A い あ え か A う → い お B え う B お C か という感じで区分ごとに振り分けしたいと思っています。 データは400個ほどあり、区分も細かいので何か良い方法があればよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
どんなに区分が増えても、データが増えても式を変える必要もなく、比較的分かり易く単純な方法として作業列を作って対応する方法を提案します。目障りでしたら作業列は最後に非表示にすればよいでしょう。 例えばシート1のA2セルから下方に区分名が、またB2セルから下方に氏名があるとします。 作業列は離れた列で構いません。例えばE2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",A2&COUNTIF(A$2:A2,A2)) 次にシート2にお求めの表を作るとします。 A2セルから横のセルにはA,Bなどの区分名を入力します。 A3セルには次の式を入力して右方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(OR(COUNTIF(Sheet1!$E:$E,A$2&ROW(A1))=0,A$2=""),"",INDIRECT("Sheet1!B"&MATCH(A$2&ROW(A1),Sheet1!$E:$E,0)))
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! すでに回答は出ているみたいですが・・・ 他の方法の一例です。 画像の表のような配置で、説明させていただきます。 こちらも配列数式になってしまいますので。 ↓の数式をD2セルにコピー&ペーストして =IF(COUNTIF($A$2:$A$7,D$1)>=ROW()-1,INDEX($B$2:$B$7,SMALL(IF($A$2:$A$7=D$1,ROW($A$1:$A$6)),ROW()-1)),"") F2キーを押すか、数式バー内を一度クリックした後に Shift+Ctrl+Enterキーを押してください。 そうすると数式の前後に { } マークが入り、配列数式になりますので それを行方向と列方向にオートフィルでコピーすれば 希望に近い形にならないでしょうか? 以上、参考になれば幸いです。m(__)m
A B C D E F 1 区分 氏名 区分 2 A あ A B C 3 A い あ え か 4 A う い お 5 B え う 6 B お 7 C か 8 1.セル D3 に次の[条件付き書式]を設定 数式が =ISERROR(D3) フォント色 白 2.セル D3 に次の配列数式を入力 {=INDEX($B$2:$B$500,SMALL(IF($A$2:$A$500=D$2,ROW(A$2:A$500),""),ROW(A1))-1)} 3.セル D3 を右方および下方にドラッグ&ペースト
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 仮に元データはA:B列、F:H列の1行目は区分コードを設定とします。 (1)F2に=IF(COUNTIF($A:$A,F$1)>ROW(A1)-1,INDEX($B:$B,SMALL(IF($A$2:$A$400=F$1,ROW($A$2:$A$400),99999),ROW(A1))),"")を設定、縦横に必要分コピー 尚、配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。 (2)F:H列コピー→貼り付け先で「形式を選択して貼り付け」→値を選択→OK
お礼
みなさまご回答ありがとうございます。 おかげさまで無事解決することが出来ました。 エクセル初心者の私にも出来る方法があったとは感激です。 失礼ながら、ポイントは私に合っていた方法をご教授いただいた方にお付けいたしましたことをお詫びさせていただくとともに、、失礼ながら、お礼を一箇所にまとめさせていただきました。