• ベストアンサー

Excel 微妙に違う2つのシートのデータをリンクさせる

ある程度 同じデータのブック1とブック2があり、 ブック1は祭日などデータが無い日も日付があり、行が確保されていますが、 ブック2は祭日などデータが無い日は行が抜いてあります。 A列:日付、B列:曜日 C列:データ1、D列:リンクを入れる 04.11.22 月 56  =[ブック2.xls]シート1!H2 04.11.23 火  04.11.24 水 50  =[ブック2.xls]シート1!H3 04.11.25 木 52  =[ブック2.xls]シート1!H4 04.11.26 金 49  =[ブック2.xls]シート1!H5 04.11.29 月      04.11.30 火 A~C列はブック1、2とも同じデータです。(現在ブック1は1400行、ブック2は1300行くらい) D列にブック2のH列のデータを表記したいのですが、ドラッグなどでは行がずれてしまいます。 関数かマクロなど、何か良い方法を教えて下さい。 下記のことにも対応できれば更に便利なのですが・・。 ブック2のH列は時々J列とか他の列(表範囲内)に移動します。 そしてたまにはブック2のシート1もブック1に移動したりブック2に戻したりもします。

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

  • ベストアンサー
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

LOOKUP関数でいいかと。 =VLOOKUP(検索値,他のブックのセル範囲,参照列数,TRUE) 使い方がわからないならヘルプで確認して下さい。 後半の移動するというのは無理です。あらゆる状況を想定して自動で追尾させるようにVBAでかなり作りこむ必要がありますが、そんな労力をかけるぐらいならそもそも移動なんかさせなければいいだけかと思います。コピーだけではだめなんでしょうか?

now2150
質問者

お礼

回答、ありがとうございます。 =IF(ISNA(VLOOKUP(...)),"",VLOOKUP(...))でできました。 VLOOKUP関数は使ったことはあったのですが、頭が固く気付かなくて・・。 シートの移動を追尾させるようなVBAは手間がかかるんでは、 LOOKUP関数で式を入れ直した方がはるかに簡単ですね。 コピーに関してはブックがかなり重くなり、シートを幾つか別ブックにした状態ですので厳しいのです。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

データの多い方にデータを持ってくる場合、少ない方にない行でエラーが出ます。 それで、Sheet1とSheet2があってSheet2がデータが少ない場合は Sheet1のD列とかに =IF(ISERROR(VLOOKUP(A3,Sheet2!$A$1:$D$1000,2,FALSE)),"",VLOOKUP(A3,Sheet2!$A$1:$D$1000,2,FALSE)) と入れて、エラーが出るのを防ぎます。 Sheet2のB列(第三引数を2)を取ってきましたが、C列は3、D列は4でとって来れます。 もう1つ上記は同一ブックの別シート間ですが、別ブックの場合は、ブック名を仮にaa4.xlsとして =IF(ISERROR(VLOOKUP(A1,'C:\My Documents\[aa4.xls]Sheet1'!$A$1:$D$1000,2,FALSE)),"",VLOOKUP(A1,'C:\My Documents\[aa4.xls]Sheet1'!$A$1:$D$1000,2,FALSE)) のようになります。

now2150
質問者

お礼

回答、ありがとうございます。 詳しい説明で参考になりました。

関連するQ&A