• ベストアンサー

エクセルでの表作成について

エクセルを使って勤怠一覧を管理しています。 シート1のA1には所属部門名・B1には氏名、そしてC3には残業時間が入力されています。 この一覧をシート2のA2からC2には総務部・残業時間・氏名を表示。 そして、1行空けてE1からG1には営業部・残業時間・氏名を表示するように表を作成したいのですが、エクセルの機能を使って簡単にシート2にこれらの表を作成する事は可能でしょうか。 ご存じの方、いらっしゃればご教授願います。

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

  • ベストアンサー
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

>シート2のA2からC2には総務部 >1行空けてE1からG1には営業部 この総務部と営業部は「シート1」のどこに有った物でしょうか? また、 A2からC2には総務部 E1からG1には営業部 と、一行ずれているのも不自然な感じがしますが、何か理由が有るのでしょうか?

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 間違っていたらごめんなさい。 ↓の画像のようにSheet1に所属部署が混在しているデータがあり それをSheet2のように振り分けて表示したい! と言うことだと解釈させていただいての回答になりますが・・・ 順番が逆になりますが、まずデータに基づいて氏名を表示させ その氏名から残業時間と、所属部署を表示させるようにしています。 (同姓同名がある場合は考えていません) あらかじめ書いておきますが、Sheet2のC2・G2の二つのセルは 配列数式になってしまいますので 下の数式をコピーした後にF2キーを押すか、数式バーを一度クリックして 編集可能にした後に Shift+Ctrl+Enterキーを押してください。 数式の前後に{ }の記号が入り配列数式になります。 まず、Sheet2のC2セルに(配列数式) =IF(COUNTIF(Sheet1!$A$2:$A$8,$A$1)>=ROW(A1),INDEX(Sheet1!$B$2:$B$8,SMALL(IF(Sheet1!$A$2:$A$8=Sheet2!$A$1,ROW($A$1:$A$7)),ROW(A1))),"") B2セルに =IF(C2="","",INDEX(Sheet1!$C$2:$C$8,MATCH(C2,Sheet1!$B$2:$B$8,0))) A2セルに =IF(C2="","",INDEX(Sheet1!$A$2:$A$8,MATCH(C2,Sheet1!$B$2:$B$8,0))) 同じく、G2セルに(配列数式) =IF(COUNTIF(Sheet1!$A$2:$A$8,$E$1)>=ROW(A1),INDEX(Sheet1!$B$2:$B$8,SMALL(IF(Sheet1!$A$2:$A$8=Sheet2!$E$1,ROW($A$1:$A$7)),ROW(A1))),"") F2セルに =IF(G2="","",INDEX(Sheet1!$C$2:$C$8,MATCH(G2,Sheet1!$B$2:$B$8,0))) E2セルに =IF(G2="","",INDEX(Sheet1!$A$2:$A$8,MATCH(G2,Sheet1!$B$2:$B$8,0))) としてA2~G2セルを範囲指定 → オートフィルで下へコピー これで画像のような表になるはずです。 尚、Sheet1の元データは8行までしか作っていませんので このような数式になりますが、データが多い場合は 範囲指定をアレンジしてみてください。 以上、長々と失礼しました。 参考になれば幸いですが、 的外れなら読み流してくださいね。m(__)m

関連するQ&A