• ベストアンサー

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

エクセルで別ファイルにデータを反映させる方法を教えて下さい。 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/7940)
回答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

  • エクセル(Exccel)をWebページ保存した時

    すみません。 エクセルで100名分の出勤サイクル表を作成しました。 これをウェブページとしてサーバーに保存し、 複数のPCから同時に閲覧できるように考えています。 縦方向に部署と氏名、横方向に日付けと曜日の表なんですが、 20人目くらいから日付と曜日が隠れてしまって使いづらい状況です。 エクセルで、よい方法があればご教示願います。

  • エクセルについて教えてください。

    エクセル2002を使用しています。 上に日付と曜日、左に項目といった表を作っています。各日に左の項目ができたかできなかったかを日の欄に○や×で記入していく表です。 そこで、2つほど教えてください。 1、日付の欄は縦書きに書式設定しています。2桁の数字が縦に並ぶように表示されます。つまり、10の1と0が縦に並びます。これを横に並ばせる方法はないでしょうか? 2、月を変えたら曜日も変わるといった関数はないのでしょうか? よろしくおねがいします。

  • エクセルのデーターを反映させるには?

    先日も同じような質問をしたのですが、もう少し分かりやすく説明して質問させていただきます。 エクセルで日程表から請求書へデーターを反映させたいのですが・・・ 日付  ○○さん   △△さん  □□さん 10/1  A店 500  B店 500  C店 1000 10/2  C店 500  A店 500  A店 500 10/8  A店 200  C店 300  B店 1000 10/9  B店 300  A店 200  C店 500 とあります。この日程表から人ごと、場所ごとの請求書を作成します。 ので、上記の場合全部で9枚の請求書が必要です。例えば○○さんのA店への場合 10/1  500 10/8  200 合計  700円 という請求書です。これを日程表から反映させて作成したいのです。 どのような方法でできるのでしょうか?

  • エクセルで入力データを反映させたい

    こんにちは エクセルで表を作成しています。 例ですが A1~A20は氏名を入力 B1~M20に各月の入力欄を作成 N1~N20に結果を表示 B1~B20のどこかに○が入力されたら、N1に○を表示 以下(2~20)の所でも同様にさせたいです こういったことをさせる関数を教えて下さい

  • エクセル2000 別ファイルへの抽出について

    エクセル2000 別ファイルへの抽出について 「a」というファイルに一ヶ月分 縦に日付、曜日。横に20ほどの項目の来客数を入力しています。 「b」というファイルに平日を 「c」というファイルに土日を それぞれ表示したいのです。 当方初心者のため、「a」ファイルのb6から「b」ファイルへ移す時に +'[a.xls]9'!$b$6 という感じに「+」でひとつひとつ地道にやっています。 なぜか[$]でくくられてしまい ドラックでコピーも出来ずに困ってしまいました。 12ヶ月分作成しなければいけないので 地道な作業では追いつかなくなってしまいました。 どのようなやり方があるのかすら わからない状態ですが どのような計算式にしたらいいのか教えて下さい。 説明がわかりにくくてスミマセン。 フィルタすら知らない初心者なもので<(_ _)> 既存の表があり、表を変更することは出来ないのです。 参考になるかはわかりませんが画像を添付いたします。 大変お手数ですが、よろしくお願い致します。

  • 罫線を自動的に引く方法についてご教示下さい

     ご教示下さい。  エクセルで月の行事計画表を作成してます。 横に日付、縦に20名程の氏名を入れています。シートを開けば当日の日付から氏名分の最終セルまでの全体を罫線で自動的に囲む方法がありますか。  下のような行事計画で、今日が3日であれば、シートを開けば3日から会議までのセルの周り(列の周り)を青の罫線で自動的に囲んでくれる方法です。  もちろん4日になると4日の日の列をかこんでいる形になります。  また、縦横を入れ替えた(縦に日付、横に氏名)行事計画表もあるのですが、同じように当日を罫線で囲んでくれる方法も併せてお願いできればと思います。 よろしく、ご教示下さい。    1日 2日 3日・・・31日 A氏   ・  ・  出張  ・・・  ・   ・   ・   ・   ・・・  ・   ・  ・   ・   ・・・ M氏   ・  ・  会議  ・・・

  • Excelのデータを他のExcelに反映さえる

    Excel初級者で本を見てもわからないので教えてください。 毎日、出荷一覧表を作成していていて、(雛型に名前を付けて保存しています。) 表の一部を他のExcelの台帳に日付順に反映させられたらと考えているのですが、 そのようなことは可能でしょうか?  

  • エクセルのコピー方法について教えて下さい。

    エクセルについての質問です。1つのシートに1日の日程表を作りました(日付・曜日が上段にあって、下の段には商品の金額一覧表があります)。それを、1つのシートで横にコピーして1年分作成したいのです。日付・曜日は例えば5月11日(月)から始めるなら、上段をドラッグすると5月12日(火)に変わります。下の段はコントロールキーを押したままドラッグすると金額はそのままでコピーできます。それはできるのですが、元の表の余白を設定し直していて、又エクセルですので、横にコピーした時に元の表と同じようにコピーできなくて、少しずつズレがでます。1つのシートで1年分同じようにコピーする方法を教えて下さい。

  • エクセルのbook間のリンクについて

    現在、エクセルで表を作っているのですが、なかなか思うようにいきません。どなたか、わかるかたがおられましたら、教えてください。 Aブック(毎日作成)とBブック(毎月の合計)があります。Aブックは1日から31日まで毎日作成し、その日の日付を名前にして保存しています。「A5月1日」のような感じです。Aブックには毎日20箇所のセルに数字を打ち込んでいます。 Bブックには、横の列に1日から31日までの日付が、縦の行は1から20まであります。 ここで、Bブックに、その日付ごとにAブックの20箇所のセルの数字をリンクさせたいのですが、毎日Aブックの名前が変わる(「A5月1日」「A5月2日」・・・)ため、なかなかうまくいきません。しかも、Bブックは毎月作るため、月が変わる度に、リンク先を変更しています。 何か、このリンクの作業を楽にする手段はないでしょうか?

  • カレンダー作成 別シートよりデータ反映

    目的は仕事で何日に誰が休むむかを一目で知りたくてエクセルで作成したカレンダーを作りました(縦型日付表示) 現在は届けの用紙が来たらカレンダーに手打ちしてます。 (シート1) 種類は名前に色分けをしたかったので種類を入れてます。       (上手く作成できたら種類によって名前に色わけとかしたくて種類を作りました)        横に名前が出るようにしてます。同じ日に休みの人が増えれば HIJKと横に続きます。   A      B    C      D     E      F     G 1 日付   曜日  名前   種類  名前   種類 2 1日         桃    有給  (みかん)   (休み) 3 2日 4 3日 以下日にちは月末まであります。 別のシート(シート2)で作成したデータを反映させたいのですが同じ日付でデータがある場合 どうすれば反映されるのでしょうか?ためしにD3にカウント式(=COUNTIF($A$3:$A3,$A3))を入れて 順番をつけてみました。   A      B    C      D 1 日付  名前  種類  カウント 2 5/1  桃    有給   1 3 5/3  奈々   半日   1 4 5/1  みかん 休み   2 以下休み届けなどが出されたら随時追加します。 わからないなりにネットで見て数式を入れてみました。 シート1のC2に =IF(ISERROR(VLOOKUP(A2,シート2!$A:$C,2,0)),"",VLOOKUP(A2,シート2!$A:$C,2,0)) C3に =IF(ISERROR(VLOOKUP(A2,休み!$A:$D,3,0)),"",VLOOKUP(A2,休み!$A:$D,3,0)) 入力すると始めの 5/1 桃 有給はカレンダーにあがるのですが5/1 みかん 休みを出せません あまりエクセルなどに詳しくなく、他の数式なども活用できるのかこういう表がそもそもエクセルでできるのかも勉強不足でわかりません。なんだかマネて作成したらあまりに長くて引数が足りませんみたいな表示がでました。 お手数をおかけしますが、教えていただけたら嬉しいです。よろしくお願い致します。

専門家に質問してみよう