- 締切済み
エクセル あるコードを含む行ごと、他のシートに反映させたい。
こんばんは。 エクセルで以下のような表を作成しています。 [シート1] A列 B列 C列 D列 1 コード 担当 日付 ・・・ --------------------------------------- 2 S679 山田 9/1 ・・・ 3 S679 田中 9/2 ・・・ 4 S680 山田 9/2 ・・・ 5 S679 鈴木 9/4 ・・・ ・ ・ ・ また、[S679]・[S680]というシートを作成し、 [シート1]のA列にコードを入力するごとに、該当のシートに行ごと データを反映させる方法はありますでしょうか。 上の例でいくと、 [S679]シートには A列 B列 C列 D列 1 コード 担当 日付 ・・・ --------------------------------------- 2 S679 山田 9/1 ・・・ 3 S679 田中 9/2 ・・・ 5 S679 鈴木 9/4 ・・・ というように。 [シート1]にデータを入力するごとに、 該当コードの列のデータを[S679]・[S680]シートに反映させる方法があれば、 どうぞご教示をお願いします。 文中の至らぬ点はご指摘いただければ都度補足いたしますので、 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 参考になるかどうか分かりませんが・・・ ↓の画像のように表を作ってみました。 すべてのSheetのA列を作業列とさせてもらっています。 Sheet2の A2セルは配列数式になりますので =IF(COUNTIF(Sheet1!$B$2:$B$1000,"S679")>=ROW(A1),INDEX(Sheet1!$A$2:$A$1000,SMALL(IF(Sheet1!$B$2:$C$1000="S679",ROW($A$1:$A$999)),ROW(A1))),"") という数式を入れて、Shift+Ctrl+Enterキーを押すと 数式の前後に{ }マークが入り配列数式になります。 この画面の数式をそのままコピー&ペーストする場合は 貼り付けただけではエラーになると思いますので 貼り付け後にF2キーを押すか、数式バー内で一度クリックし、編集可能にした後に Shift+Ctrl+Enterキーです。 そして、B2セルを(配列数式ではありません) =IF($A2="","",VLOOKUP($A2,Sheet1!$A$2:$D$1000,COLUMN(B1),0)) として日付のD2セルまでオートフィルでコピーします。 最後にA2~D2セルを範囲指定し、D2セルのオートフィルハンドルの(+)マークで 下へコピーすると画像のSheet2のような感じになります。 尚、Sheet3も同様の操作でOKですが、 数式が少し違うので書いておきます。 Sheet3のA2セル(配列数式)に =IF(COUNTIF(Sheet1!$B$2:$B$1000,"S680")>=ROW(A1),INDEX(Sheet1!$A$2:$A$1000,SMALL(IF(Sheet1!$B$2:$B$1000="S680",ROW($A$1:$A$999)),ROW(A1))),"") B2セルはSheet2ど同じ数式になると思います =IF($A2="","",VLOOKUP($A2,Sheet1!$A$2:$D$1000,COLUMN(B1),0)) 尚、数式は1000行目まで対応できるようにしています。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m
お礼
tom04さん 早速のご回答ありがとうございます。 また、返事が遅くなり本当にすみません。 教えていただいた関数で、希望通りのことができました。 すばらしい。 ただ、それぞれの関数を調べ、個々のの意味はおおむね理解できたのですが、 全体がどういう意味なのかが理解できていません。 ですので、表を何行かずらしてみるとシートにうまく反映せず、 いろいろ式を変えてみましたが、うまく修正できない状態です。 また、このシートは共有で他の者も使用し、 関数が複雑すぎるといざというときに修正ができないため、今回は 別の方法で手を打とうと考えています。 何はともあれ回答いただき感謝しております。 ありがとうございました。