• ベストアンサー

Excel 別ファイルからのデータ抽出

OfficeXP-Excelにて質問させて頂きます。 以下のような異なるファイルが2つあります。 ------------------- [ファイルA]     A         B     C     D     E     F    G 1    No.           1            2           3 2    氏名         山田         田中        佐藤 3             送付日 受領日  送付日 受領日 送付日 受領日 4   2007年04月分   4/2  4/27   4/3  4/26   4/2  4/25 5   2007年05月分   5/1  5/30   5/1  5/31   5/2  5/30                   ・                                     ・                   ・ (1行目・2行目のB:C、D:E、F:Gは結合されています。) ------------------- [ファイルB-シート2007/5]     A     B     C     D 1   2007年05月分 2     ←空白行 3   No.    氏名  送付日  受領日 4   1    山田 5   2    田中 6   3    佐藤                   ・                                     ・                   ・ ------------------- [ファイルA]のA4以降の『2007年**月分』のデータ『送付日』と『受領日』を [ファイルB]のセル[A1(2007年**月分)]と『No.』が一致する『送付日(C4~)』『受領日(D4~)』に 関数などを用いて抽出したいのです。 1年分のデータを1つの表にまとめて格納している[ファイルA]に対し[ファイルB]は各月のデータをシート毎に分けてあります。 [ファイルB]で元になるシートを作成しておき、毎月その元シートをコピーし[A1]の日付だけを変更すれば自動的に必要なデータを引っ張ってくるように出来ますでしょうか? 説明が解り辛ければ補足致しますので、何卒ご教示宜しくお願いします。

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

  • ベストアンサー
  • nobu555
  • ベストアンサー率45% (158/345)
回答No.1

両ファイルを開いた状態で それぞれ以下の数式を入力してください。 尚、仕様と異なる点は、適宜変更してください。 送付日は、セルC4に入力 =OFFSET([ファイルA.xls]シート2007年!$A$3,MATCH($A$1,[ファイルA.xls]シート2007年!$A:$A,0)-3,MATCH($A4,[ファイルA.xls]シート2007年!$B$1:$G$1,0)+0) 受領日なら、セルD4に入力 =OFFSET([ファイルA.xls]シート2007年!$A$3,MATCH($A$1,[ファイルA.xls]シート2007年!$A:$A,0)-3,MATCH($A4,[ファイルA.xls]シート2007年!$B$1:$G$1,0)+1) 後は、必要な分下にコピーしてください。

Dona1d
質問者

お礼

早速のご回答有難うございます。 ご教示いただき、自分のファイルに適用しようとしたのですが、#N/Aのエラーが出てしまいます。 2点、教えて頂きたいのですが… 1.[=OFFSET([ファイルA.xls]シート2007年!$A$3,……]の[A3]は空白セルですが、構わないのでしょうか? 2.MATCH関数後の[-3]・[+0]・[+1]は何を意味しているものなのでしょうか? お手数をお掛けしますが宜しくお願いしますm(_ _)m

その他の回答 (2)

noname#204879
noname#204879
回答No.3

File_A.xls を開いた状態で、File_B.xls の Sheet“2007年05月分”のセル B4、C4 に次式を入力して、セル C4 をセル D4 に複写した後、範囲 B4:D4 を下方にズズーッと複写すればOKかと。 B4: =IF(ISNA(MATCH(A4,[File_A.xls]Sheet1!$1:$1,0)),"",INDEX([File_A.xls]Sheet1!$2:$2,1,MATCH(A4,[File_A.xls]Sheet1!$1:$1,0))) C4: =IF(ISNA(MATCH($A4,[File_A.xls]Sheet1!$1:$1,0)),"",VLOOKUP($A$1,[File_A.xls]Sheet1!$A$4:$G$10,MATCH($A4,[File_A.xls]Sheet1!$1:$1,0)+COLUMN(A1)-1,FALSE))

Dona1d
質問者

お礼

回答有難うございました。 B4の名前部分は見事うまくいったのですが…C4でエラーが出てしまいます(TДT) 例として書いた表と元の表はさほど変わりませんが、項目量とデータ量が違う為、本来の表に当てはめるすべがどうも理解できていないようです。 こちらも同じくもう少し考えてみます。 有難うございました。

Dona1d
質問者

補足

こちらの式もその後、出来ました。 [COLUMN関数]は使用した事が無かったので勉強になりました。 今回の事で自分の無知さがよぉ~く解りました。 これからもっと勉強しようと思います。 ご指導、有難うございましたm(_ _)m

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.2

>2点、教えて頂きたいのですが… 1について A3は、OFFSET関数を用いたとき基準となるセルを意味しますので、 特に気にしないでください。 詳しくは、ヘルプを参照してください。 2について MATCH関数で求めたセル位置を、OFFSET関数に用いたときの補正値です。 >#N/Aのエラーが出てしまいます。 上記を、踏まえて色々調整してみてください。

Dona1d
質問者

お礼

再度、回答有難うございます。 この週末ずっと頭を抱えてみたのですが、どうしてもエラーが出てしまいます。 例に書いた表の通りのファイルを作成したらうまく行くのですが、コレを本来の表に当てはめるOFFSETの補正値部分が理解できず(>_<)。。。 もう少し考えてみます。 有難うございましたm(u_u*)m

Dona1d
質問者

補足

その後、無事出来ました(*^O^*) 煮詰まっている時は盲点から抜け出せない物ですね。。。 頭を切替えてから挑戦したら理解出来てしまった(^^;) 週末を潰してしまったので複雑な心境ですが、お陰ですっきり致しました。 色々有難うございました!

関連するQ&A