関数を使用して異なるブックに時間表をまとめる方法

このQ&Aのポイント
  • 関数を使用して、異なるブックにまとめたい時間表を作成する方法を説明します。ブックAでは日付ごとに2行ずつ時間を入力したいと考えています。しかし、同じ日付がある場合には1行目の時間が2行目にも反映されてしまいます。これを解決するために、COUNTIF関数などを使用して2行目の時間も反映させる方法をお探しです。
  • ブックBには提出されたシートがまとめられており、同じ日付がある場合には2行目に増やされています。しかし、ブックAにまとめる際には1行目の時間が2行目にも反映されてしまうため、問題が発生します。この問題を解決するために、INDEX関数とMATCH関数を使用して日付をキーにしてまとめる方法を試みましたが、うまくいきませんでした。
  • ブックBのシートを加工せずに、ブックAだけで時間表をまとめたいと考えています。そのためには、COUNTIF関数などを使用して2行目の時間も反映させる必要があります。どのようにすればうまく実現できるかご教示いただけますか?
回答を見る
  • ベストアンサー

関数のみで異なるブックに時間表をまとめたい。

自宅にエクセルがないため手書き画像でしつれいします。 ・ブックA(時間表作成用ファイル)  日付は2行ずつあり、同じ日が二回ある人は1行目、2行目それぞれに時間を入れたい。 ・ブックB(各人から提出されたシートをまとめたファイル)  同じ日がある人は2行に増やして提出されてくる。 INDEX関数とMATCH関数を使い、日付をキーにしてブックAにまとめようと試したところ、同じ日付が無いところは入りましたが、同じ日付があるところ(画像6/1、6/2)は2行ともに同日付の1行目の時刻が反映されてしまいます。 countifなどでどうにかして2行目も反映できないでしょうか? ※ブックBのシートは加工せず、ブックAのみでまとめたいです。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (714/1476)
回答No.2

行数、列数が入っていませんが、A1から始まっていて、1行目がタイトルとします。 B2に入れます。 =IF($A2=INDEX([BookB.xlsx]池田!$A:$A,MATCH($A2,[BookB.xlsx]池田!$A:$A,0)+COUNTIF($A$1:A1,$A2)),INDEX([BookB.xlsx]池田!$B:$B,MATCH($A2,[BookB.xlsx]池田!$A:$A,0)+COUNTIF($A$1:$A1,$A2)),"") 但し、横にコピペできません。横のコピペできる式です。 =IF($A2=INDIRECT("[BookB.xlsx]"&B$1&"!A"&MATCH($A2,INDIRECT("[BookB.xlsx]"&B$1&"!A:A"),0)+COUNTIF($A$1:$A1,$A2)),INDIRECT("[BookB.xlsx]"&B$1&"!B"&MATCH($A2,INDIRECT("[BookB.xlsx]"&B$1&"!A:A"),0)+COUNTIF($A$1:$A1,$A2)),"") 数式作成途中経過です。入れる必要はありませんが、入れれは動きがわかります。メンテナンスの為載せておきます。 上の式。 D2 =MATCH($A2,[BookB.xlsx]松野!$A:$A,0)+COUNTIF($A$1:$A1,$A2) E2 =INDEX([BookB.xlsx]松野!$A:$A,D2) F2 =INDEX([BookB.xlsx]松野!$B:$B,D2) G2 =IF($A2=E2,F2,"") 下の式 D2 =MATCH($A2,INDIRECT("[BookB.xlsx]"&B$1&"!A:A"),0)+COUNTIF($A$1:$A1,$A2) E2 =INDIRECT("[BookB.xlsx]"&B$1&"!A"&D2) F2 =INDIRECT("[BookB.xlsx]"&B$1&"!B"&D2) G2 =IF($A2=E2,F2,"") 写真、光が当たりすぎて見にくいです。フラッシュを切った方がいいです。

umarinehorse
質問者

お礼

ご回答ありがとうございます。 上の式を使いましたところ、無事にまとめることができました! この表を作るに当たって勉強した関数だけでうまく作動したのがとても嬉しいです。 本日作成ファイル提出の締切だったため、取り急ぎ上の式を使いましたが、横にコピーできるINDIRECT関数の式も使い方を勉強したいと思います。 ありがとうございました。 追伸 写真が見づらくて申し訳ありませんでした。

その他の回答 (2)

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.3

[A.xlsx]Sheet1!B2: =IFERROR(IF(INDEX([B.xlsx]池田!$B$1:$B$1000,SMALL(IF([B.xlsx]池田!$A$1:$A$1000=$A2,ROW(A$1:A$1000)),MOD(ROW(A1)-1,2)+1))="","",INDEX([B.xlsx]池田!$B$1:$B$1000,SMALL(IF([B.xlsx]池田!$A$1:$A$1000=$A2,ROW(A$1:A$1000)),MOD(ROW(A1)-1,2)+1))),"") [A.xlsx]Sheet1!C2: =IFERROR(IF(INDEX([B.xlsx]松野!$B$1:$B$1000,SMALL(IF([B.xlsx]松野!$A$1:$A$1000=$A2,ROW(B$1:B$1000)),MOD(ROW(B1)-1,2)+1))="","",INDEX([B.xlsx]松野!$B$1:$B$1000,SMALL(IF([B.xlsx]松野!$A$1:$A$1000=$A2,ROW(B$1:B$1000)),MOD(ROW(B1)-1,2)+1))),"") 【お断り】上式は何れも必ず配列数式として入力のこと

umarinehorse
質問者

お礼

ご回答いただきありがとうございます。 本日ファイル作成の期限だったため、取り急ぎで途中まで作っていた式を加工して提出いたしましたが、ご回答いただいた式も今後のために勉強させていただきたいと思います。 ありがとうございました!

  • kon555
  • ベストアンサー率52% (1751/3360)
回答No.1

現状の関数に、if関数での条件付けを工夫すればいけると思います。 ブックA側の1行目は現状のまま。2行目にif関数を入れ、ブックBで同日付が存在する場合は、対象とするセルを1つズラす。存在しない場合は空白にする、というような作りにすればいいかと。 同日付が存在するかについては、現在の関数で対象セルを捕まえる事は出来ているみたいなので、その1つ下との一致を確認すればいいでしょう。 ただ可能は可能なのですが、別ブック間を関数で渡すのは、ファイル移動やリネームで崩れる事もあり危険な使い方ではあります。 状況が許すなら、別ブックではなく1つのブックの別シートとしてまとめてしまうか、VBAでデータだけ写すようにするかした方がいいと思います。

umarinehorse
質問者

お礼

早速のご回答ありがとうございました。 ブックのリンク切れは確かにあり得る&危険なため、上司に相談してシートをまとめる許可をいただきました。ご助言いただきありがとうございました。

関連するQ&A

  • ブック間でデータの移植をしたい(Excel2000)

    関数なら少しわかるけど,マクロはさっぱりなので質問します。 ブックが2つあります。 BOOK1はそれぞれシート名に個人名が入っていて, 1行目には科目名,A列には日付が入っています。 入力されているデータはその科目の点数が数値で入っています。 BOOK2は,ファイル名が日付(例:030115.xls)で1シートで構成されており, ある日の試験の成績がA列に個人名,B列以降に科目毎の点数が入っています。 (シート名はsheet1のまま) 次から次へと提出されるBOOK2のデータを BOOK1の個別シートに集めていきたいのですが... 関数でできればそれに越したことはありませんが, マクロででもできれば嬉しいです。 急ぎなので勉強をしている時間がなく,助けて下さい! わからないことがあればなるべく早く補足します。

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

    添付の画像のように、表1(シート)の社員別に日付と定時の労働時間と、残業時間の書いてあるデータを表2(シート)の該当する社員の該当する日に関数により反映されるようにしたいのですが、関数で可能でしょうか? 表1は下にずらっとデータとして打ち込んでいきます。 表2はB2の黄色い部分がリストになっていて、月が変わるようになっていて、そこを変えると日付情報が変わるようにしてあります。 ※表2の4行目の日付は表示形式により“日”だけ表示しています。 説明不足かもしれませんが、どうぞよろしくお願いします。

  • エクセル2つのブック列の比較 VBAや関数について

    Aと言うブックとBと言うブックがあるとして、 Aのブックは共有ファイルではなく、Zサーバー上にあるエクセルファイルです。 Aのブックに色々な人が行の挿入、商品名の書き換え等をしていて、いつ挿入されたのかが分からないため、VBAや関数を使って調べたいのですが、 Aのブックは10シートあり、サイズ別で行も並べられているため、新しい情報を特定するのが困難です。 BのブックはAと同じシート名を作り、必要箇所だけコピーしているデータです。(オリジナルブック) やりたいことは、Aのブックから探してBのブックに追加されていない情報、一致していない情報があれば、色を付けてわかりやすくするか、Bのブックの新しいシートに結果を出すようなことがしたいのですが、可能でしょうか? AのブックはA列-IC列まであるのですが、必要な部分は全シートB列(商品コード)とE列(商品名)のみです。 Bのブックには同じシート名にして、A列に商品コード、B列に商品名としております。 AのブックのB列、E列を参照して、BのブックのA列、B列になければ、結果を表示したいです。 もし出来る方法があれば、教えてほしいです。 今はシートごとに左右比較して、見ていってるのですが、10シートの中に、行数は2000行くらいあるため、それで半日おわってしまいます。 もし分かるかた、マクロを組める方がいれば教えて頂きたいです。宜しくお願い致します。

  • 日付を基準に 形式の違う表にデータを反映させたい

    Windows8.1を使っています。 新しい職場でデータ入力等の仕事なのですが、同じデータの入力なのに、入力する表のパターンが違うため 二度手間・三度手間なことをしています。 1つの表に入力したデータが、自動で別の表に反映させることができないかと思い、ご相談です。 自分でなんとか・・・と思いましたが、どこをどうして良いのか分からず・・・よろしくお願いいたします。 エクセルで、全く形式の違う表が別々のBookにあります。 Book(1)のシート1には、A列をあけてB列に上から日付が並んでます。 この時、同じ日付のデータ入力が多数あるので、同じ日付で12行あります。 その下に翌日の日付が12行、またその下に12行・・・といった感じです。 Book(1)シート1    A  B    C      D      E  F  G   H   I     J     K    L  M・・ 1                    2014年7月                        2  ×  日付  得意先  現場  × ×  ×  名前1  ◆  ◆  名前2  ◆  ◆ ・・   3  ×  7/1   山    田中邸           ✓  TRUE  1  ✓  TRUE  1       4  ×  7/1   海    鈴木邸                       ✓   TRUE   2      5  ×  7/1   川    林邸            ✓  TRUE  2                  ~~~~~~~~ 14 ×  7/1                                            15 ×  7/2                                            16 ×  7/2                                            同じ日付12行に、得意先・現場を入力。名前の列にはチェックボックスを作り、チェックしたら右横のセルに反映します。7/1のH3にチェックをしたら、◆I3はTRUEになり、◆J3に「1」と反映するようにしました。 A・E・F・G列は、また違う書式に反映するデータを入力しているので、ここでは「×」としました。 同じ日付で12行ありますが、その日の現場数が5件なら5行、10件なら10行の入力です。 このシート1の表を基に、Book(1)のシート2には、シート1のチェックボックスの結果が反映するようにしました。 チェックボックスにチェックをしてTRUEになった行の「日付」「得意先」「現場」を、名前ごとに見られるような表です。(これは、作っておくと後々楽かなあという軽い気持ちで作りました。)   Book(1)シート2     A     B      C      D     E      F      G     H      I  ・・・   1 日付  得意先  現場   日付  得意先  現場  日付  得意先  現場・・・・  2 7/1      山    田中邸   7/1    山     田中邸                   3 7/1      川    林邸      7/1    海     鈴木邸                   4  5 ものすごく見づらくて分かりづらいと思いますが、Book(1)のシート1のH3にチェックをしたら、シート1のB3・C3・D3のデータが シート2のA・B・C列に反映します。シート1のK列にチェックしたら シート2のD・E・F列に。シート1のN列にチェックしたら シート2のG・H・I列に。 シート1の名前1さんのデータは、シート2のABC列、名前2さんはDEF列、名前3さんはGHI列、といった感じです。 問題はここからで、このBook(1)のデータをBook(2)の表に自動で反映できないものかと。。。 Book(2)の表がまた全然違う表なんです。 Book(2)     A      B     C     D      E      F      G      H    I    J    K   1 2 3   日付   曜日    名前1   名前2   名前3   名前4    名前5   名前6 4  6/21 5   6/22 6  6/23 ~~~~~~~~~ 14  7/1 15  7/2 16  7/3 このBook(2)の日付と名前の交わるセルに、Book(1)シート1もしくはシート2の「得意先」「現場」のデータを反映させたいのです。 Book(1)シート1もしくはシート2の日付と Book(2)の日付を連動させて・・・ ややこしいんですが、Book(1)は日付が1日~末日。Book(2)は21日~翌20日。 Book(1)は一月分のデータ(あるのはシート1・シート2くらい)、Book(2)は一年分のデータ(シートが月で分かれていて、シートが2014.1 2014.2 2014.3 2014.4・・・というようになっています。 Book(2)は昔からこの表でやってきたので、基本の形は変えたくないようです。 ただ、Book(2)の表は入力するセルが各一つしかないので、見た目は同じようにしながら作り直そうかと思ってます。 どうか、ご指導・アドバイス等お願いいたします。 知識がないばっかりに、分かりづらく、説明も下手くそですみません。 そして、画像の貼付に何度も失敗し、手入力の見づらい画面ですみません(T T))

  • エクセル関数

    エクセル2010を使っていますが、1つのシートAには販売時の日付、品番、数量、単価、販売額が記されており、同一ファイル内には別のシートBで指定した日付の売上明細を表記したいと思っていますが、うまく関数が組めません。どのような関数を組めば表記できますでしょうか?ちなみにシートAは1か月継続して使うため最大ラインがおおよそ1000行くらいで、シートBは最大50行くらいの表記が可能である必要があります(A5~A55行目) 指定した日付の売上明細(シートB)に表記が必要なので品番、数量、金額になります 指定する日付ですが、シートBの先頭行A1かB1に日付を入力し、A5行目から開始しようと思っています。A5は品番、B5は数量、C5は数量、D5は単価、D6は合計を表記したいと思っています

  • エクセル関数 支出管理のやり方

    エクセルの関数について質問です。 支出に関する表を作成しているのですが 例えば シート1のA行に1か月分の日付を入れて、B行に預金額の流れを管理します。 シート2のA行に預金額、B行に個々の支払期限日、C行に残高を入れて管理をします。 支払期限日は毎月違うので、シート2のB行に入れた日付がシート1のA行の日付と同じ日付だった場合 シート1の同じ日付になる列に、シート2の同じ日付のC行の残高が自動入力されるようにしたいのですが いくら調べても、関数がわかりません。 分かる方が居たら教えてください。 お願いします。

  • 抽出一覧表の作成

    Excel関数の質問です Sheet1 A1:C1 行に日付があります A列には A2 社長名 A3 部長名 A4 課長名 があります それぞれの予定が簡記されています Sheet2 において A2 社長名 A3 部長名 A4 課長名 B1に日付を入力すると、その日の各人の日程を表記する方法 列と行が逆でしたらVLOOKUP関数でできるのですが、上記の場合 何か良い関数をご存知の方はご教授お願いいたします HLOOKUPにつては使用方法がうまくいきません

  • Excelの別々のブックから関数を呼び出したい

    簡単なVBAマクロなら今まで作ったことがあるものの 関数の引渡し等がさっぱりで、 且つプロシージャ???とかヘルプを見ても言葉の 障害で意味が理解しにくくて困ってます。(苦笑 なのでVBAは初心者そのものです。 (大昔C言語は多少かじったけど忘れましたね・・) 出来るのかどうか分かりませんが、 ブックAを操作中にブックBをオープンします。 それからAとBの各シートの情報をやりとりする、 こんな感じのプログラムを作りたいと思っています。 ブックAからブックBの関数(プロシージャ?)を 呼び出すことは出来るのでしょうか? 出来るのなら簡単なサンプルをお願いします。

  • IF関数だと思うのですか、お教えください。

    IF関数だと思うのですか、お教えください。 エクセルのブックひとつを1か月分として作っていて、ブック内のワークシート ひとつずつが1日分となっています。 1か月分はワークシートが6月ならば30日で30個。 その状況で、6月1日のワークシートのセルA1に平成22年6月1日と入力した場合 2日から30日までのワークシートのA1に自動で日付を入れられるようにするには どうすればよいでしょうか? 前担当者がA1に日付を手動で入れるとB1曜日が出るようにはしていて、それを参考に わたしもIF関数を入力できるかと試みてみましたが出来ませんでした。 どなたかお助けください

  • Book間のデータ転記を自動化したい

    Book A からBook Bへ毎日データをコピーしています、これを自動化できないでしょうか? Book A      A    B    C    D 1 会社名1  data11 data12 data13 2 会社名2  data21 data22 data23 3 会社名3  data31 data32 data33 Book B     A    B    C    D 1 日付1  data11 data12 data13 2 日付2  data14 data15 data16 3 日付3  data17 data18 data19 Book A は1日につき1ファイルづつ毎日増えていきます会社数は日によって違いますが大体40~50くらですデータ数は1行につき15個で一定です。 Book B は会社ごとにシートが作ってありBook Bの中に約35シート入っています。 少し説明がわかりにくいかもしれませんが、やりたいことは毎日Book Aというファイルを渡されるのでその中から主な会社35社のデータを会社別に日付順にしたいのでBook Bへ手作業でコピーしています、毎日のことなので結構大変です自動でコピーできないでしょうか? それとも何か別の方法でもっとスマートに処理できますか?

専門家に質問してみよう