• ベストアンサー

エクセルで別ファイルにデータを反映させる方法

エクセルで別ファイルにデータを反映させる方法を教えて下さい。 Book1 A4~縦に氏名 B2~横に日付 B3~横に曜日となっていて、出勤日に○をつけています。 Book2 横に日付及び曜日 縦に出勤日に○の入っている人の名前を1ヶ月の表として作成したいのですが その方法があれば教えて下さい。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答1です。 Book1のシート1は先に述べた表であるとして、Book2のシート1ではA2セルには次の式を入力して下方にオートフィルドラッグします。 =INDEX([Book1]Sheet1!$B$2:$AF$2,ROW(A1)) また、B2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",TEXT(A2,"aaa")) これでA列には日付がB列には曜日が表示されますね。 C2セルには次の式を入力して横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COLUMN(A1)>COUNTIF(INDEX([Book1]Sheet1!$B$1:$AF$500,1,ROW(A1)):INDEX([Book1]Sheet1!$B$1:$AF$500,500,ROW(A1)),"○"),"",INDEX([Book1]Sheet1!$A$1:$A$500,SMALL(IF(INDEX([Book1]Sheet1!$B$1:$AF$500,1,ROW(A1)):INDEX([Book1]Sheet1!$B$1:$AF$500,500,ROW(A1))="○",ROW($A$1:$A$500),""),COLUMN(A1)))) 先に述べたように式を確定する段階ではCtrl+Shift+Enterで確定します。

rei_dax
質問者

お礼

ご連絡が遅くなり申し訳ございません。 2つも教えて頂き、ありがとうございます。 これで何とか表ができそうです。ありがとうございました。 頑張って作成してみます。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

簡単な関数の組み合わせだけで計算してみます。 状況: Book1.xlsのSheet1に今の勤務表がある 準備: Book1.xlsのSheet2に次の通り作成する B4: =IF(Sheet1!B4="○",ROW(),"") シート1の表範囲と同じ範囲にコピーしておく 作成: Book1と同じように2行目3行目を作る B4: =IF(ROW(B1)>COUNT([Book1.xls]Sheet2!B:B),"",INDEX([Book1.xls]Sheet1!$A:$A,SMALL([Book1.xls]Sheet2!B:B,ROW(B1)))) と記入し,右に下にコピーして入れておく。 数式の作成中は勿論Book1を開いておく必要がある。 #注意 Book1とBook2にデータを分けて作成したい場合,COUNTIFを使う方法は,ブックを作成後に改めてBook2だけを開いて確認しようとすると全部エラーになるので,注意が必要です。

rei_dax
質問者

お礼

ご連絡が遅くなり申し訳ございません。 色々なやり方があるんですね。 注意事項、ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

元のデータはBook1のシート1に有り、A4セルから下方に氏名が、B4セルから横方向および下方に○が入力されるものとします。 お求めの表はBook2のシート1に表示させるとして、B1セルには次の式を入力してB2セルまでオートフィルドラッグしたのちに横方向にもオートフィルドラッグします。 =[Book1]Sheet1!B2 これでBook1と同じ日付と曜日が1行目と2行目に表示されますね。 そこでB3セルには次の式を入力します。 =IF(OR(COUNTIF([Book1]Sheet1!B$1:B$500,"○")=0,ROW(A1)>COUNTIF([Book1]Sheet1!B$1:B$500,"○")),"",INDEX([Book1]Sheet1!$A$1:$A$500,SMALL(IF([Book1]Sheet1!B$1:B$500="○",ROW(A$1:A$500),""),ROW(A1)))) この式を確定するに当たってはCtrl+Shiftキーを押しながらEnterキーを押します。これで式の両側には{  }が付いた形の式になります。 次にB3セルの式を横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 これで出勤日に○の入っている人の名前が日付ごとに表示されます。 なお、Book1は勿論、事前に立ち上げておくことが必要です。

rei_dax
質問者

お礼

早速のご回答ありがとうございます。 無事、これで作成できました。 ただ、横にするととてもデータが長くなることに気づいてしまい、 縦に日付 横に氏名を出すには、 どこを修正したらよいのかも教えて頂ければ幸いです。 お手数をお掛けいたしますが、宜しくお願い致します。

関連するQ&A