- ベストアンサー
エクセル リストから抽出
部署毎に名簿リストがあります。 別シートでは個人名と他の情報があります。これには部署名がないので、 個人名の行に部署名を入れたいのですが、リストから呼び込むことは できますか? 名簿リストは下記のようになっています。 部署1 部署2 部署3 名前a 名前b 名前c 名前d 名前e 名前f 別シート 名前a 他情報 部署名(←ここに自動で入れたい) 名前b 他情報 部署名(←ここに自動で入れたい) 名前a 他情報 部署名(←ここに自動で入れたい) 名前は重複する可能性があります。 マクロは全く経験がありません。 どなたかご教授ください。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 名簿リストをsheet1のA1:J10範囲、別シートをsheet2とします。 尚、名簿リストに名前重複は無いものとしています。 C1に=IF(COUNTIF(Sheet1!$A:$J,A1),INDEX(Sheet1!$1:$1,1,SUMPRODUCT((Sheet1!$A$1:$J$10=A1)*(COLUMN(Sheet1!$A$1:$J$1)))),"")を設定、下方向にコピー
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
>マクロは全く経験がありません ということだが、関数でも関数の組み合わせとその意味は相当難しいので、 普通の関数でも内部では何をしているかわからなくても使うのと同じように、何をしているかわからなくても下記をやってみてください。 ーーー ツールーマクローVBEの画面で挿入ー標準モジュールで出る画面に Function fnd(a) c = Worksheets("Sheet1").Range("A1:J10").Find(what:=a).Column fnd = Worksheets("Sheet1").Cells(1, c) End Function をコピペする。 A-J列間での部署で、各部10人以内とした例。 (していることは、メニューの編集ー検索にある、検索に当たるFindを実行しており、Findは文字列(=この場合氏名を探すもの。Columnで見つかった列を採る) ーー 例データ Sheet1のA-D列 部署1 部署2 部署3 部署4 名前a 名前b 名前c 名前x 名前d 名前e 名前f 名前y 名前g 名前h 名前i 名前z Sheet2で A列 B列(結果) 名前a 部署1 名前b 部署2 名前a 部署1 名前e 部署2 名前g 部署1 名前f 部署3 名前z 部署4 B1には =Fnd(A1)と入れて下方向に式を複写。
お礼
できました!素晴らしい!! 教えていただいたマクロも全く理解不能です。 初め上手くいかなくてあせりましたが、無事思った通りの表が完成 しました。 このマクロの意味がわかるまで調べてみようと思っています。 助かりました。ありがとうございました。 どちらの回答も私が思った通りの表が完成しましたので、早い順に ポイントをつけました。ご了承ください。
お礼
できました!素晴らしい!! 教えていただいた関数は全く理解不能なので、まずこの関数式?の 意味がわかるまで調べてみようと思っています。 ありがとうございました。