• 締切済み

エクセル あるコードを含む行ごと、他のシートに反映させたい。

こんばんは。 エクセルで以下のような表を作成しています。 [シート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]シートに反映させる方法があれば、 どうぞご教示をお願いします。 文中の至らぬ点はご指摘いただければ都度補足いたしますので、 よろしくお願いいたします。

みんなの回答

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

こんばんは! 参考になるかどうか分かりませんが・・・ ↓の画像のように表を作ってみました。 すべての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

bnm373737
質問者

お礼

tom04さん 早速のご回答ありがとうございます。 また、返事が遅くなり本当にすみません。 教えていただいた関数で、希望通りのことができました。 すばらしい。 ただ、それぞれの関数を調べ、個々のの意味はおおむね理解できたのですが、 全体がどういう意味なのかが理解できていません。 ですので、表を何行かずらしてみるとシートにうまく反映せず、 いろいろ式を変えてみましたが、うまく修正できない状態です。 また、このシートは共有で他の者も使用し、 関数が複雑すぎるといざというときに修正ができないため、今回は 別の方法で手を打とうと考えています。 何はともあれ回答いただき感謝しております。 ありがとうございました。

関連するQ&A