• 締切済み

エクセルのブックとシートを動的にリンクさせるには?

お世話になります。エクセル初心者です。現在はWindowsXPでエクセル2003を使用しています。 皆様のお知恵をお借りしたくこちらに質問させていただきます。 エクセルファイル内の各シートから集約用に作ったシートにVLOOKUP等で集積させて数値の推移を図るファイルを作っています。 データ量が多くかつ、書式を少なめに使っているのですが、エクセルの書式等が認識できる許容範囲を超えてしまい、やむおえず一部データを同じフォルダ内に別ブックを作ってそちらに分割保管(Aというファイルがデータ集積表示用なのですが、Aに入れたい各データのシートが許容オーバーで入りきらず、Bというデータだけを入れた別エクセルファイルを作り、一定の量が溜まったらCというデータだけを入れたファイルを作るという形を取ります(保管するためにやむ終えずこの形を取る事になっています))する事にしました。 (※古い2003を使っていて恐縮ですが、まだまだWindows7に会社が切り替えてエクセルも最新版にしてくれる見込みがありません。。。) そこで、以下の通り入力、ブックが同じフォルダ内保管されていると仮定し、試みているのですが、「INDIRECT」だとブックが閉じている際に開けない事が調べているうちに分かりました。 私としてやりたいことは (1)A1に検索値 (2)B1にブック名(任意のローカルフォルダに保管されている前提。ゆくゆくは会社の共有しているサーバー内に格納して誰でも開ける場所に保管するつもりです、この式を入れているこの集積表示用データもB1以下に記載されるブック達と同じ場所に保管します) (3)C1にシート名(B1のブック名内にあるシート名、シート名は連番になって続いています) (4)D1にC1で指定したシート内を検索するための列番号 <現在試みている式(F1から下の行に同じ式を1つずつずらして入れていきます)> =IF(ISERROR(VLOOKUP($A$1,INDIRECT("\●●●\←ここには任意のファイル場所が書いてあるとしてください["&B1&".xls]"&C1&"!$A:$AD"),$D$1,FALSE)),"",VLOOKUP($A$1,INDIRECT("\●●●\←ここには任意のファイル場所が書いてあるとしてください["&B1&".xls]"&C1&"!$A:$AD"),$D$1,FALSE)) 月毎にBとCは1行ずつずらして値を1つずつ増やして上記式もBとCだけ1行ずつずらして書いていく方式をとっていくという形です。 ずらしてく毎にBとCの行の値が1つずく更新され、ブックとシートを上手く検索して反映させたいと思っていますが、何か上手くやれる方法はないでしょうか? (BとCのファイル名はもちろん番号が1つずつずれるように作っています。) VBAを使う方法があるのかな・・・?とも思っているのですが、なにぶん初心者なものでそのあたりが全くちんぷんかんぷんで困っています。。。 INDIRECTはブックが開いていないと反映されない事も調べて判明致しました。 どなたかお助けいただけないでしょうか? 新しいやり方やもっといい式があるという方、アイディアを拝借できれば幸いです。 VBAであればこういう風に出来るというやり方もあれば学びたいと思っています。 お粗末な内容ですがご指導お願い致します。 ※不足している情報等あればおっしゃってください。 出来れば来週中に仕上げていかなくてはいけないデータの為、大変身勝手な事を言っているのを承知しておりますが、どなたか宜しくお願いいたします。

みんなの回答

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

>エクセルの書式等が認識できる許容範囲を超えてしまい 「ブックを分けた」ことが発端となって、今のもつれた状況が発生しています。 複数の出自の異なるブックから、シートをかき集めてきた場合などで、ご相談の状況がしばしば発生します。 手順: まっさらのブックを一冊用意する 元のデータの一つを選び、「セル範囲を」コピー、新しいブックに形式を選んで貼り付けの「数式」で貼り付ける 同様に他のデータも「セル範囲をコピー」して、新しいブックに形式を選んで貼り付けの「数式」で貼り付けて、全部のデータを1冊のブックに全て集める 集めたブックを保存、必要な数式を組み直して作成する。 いま問題が起きているブックから、「コピーしてタダ貼り付ける」「シートごと持ってくる」などは絶対に行わないのがポイントになります。 必要な書式関係は、上記手順で1つのブックに集めた後に、改めて手作業で施します。絶対にコピーして持ってきてはいけません。

関連するQ&A