他のExcelワークブックからデータにアクセスするための最良の方法


4

他のExcelワークブックに保存されているデータへの読み取り専用アクセスを取得するための最良の方法は何でしょう。私が知っている2つの可能性があり、それぞれ長所と短所があります。

オプション1)データを直接参照する

例:= [test1.xls] Sheet1!$ A $ 1

  • pro:ワークブックが開かれたときに更新されたデータ
  • pro:参照先のワークブックが閉じられていても機能する
  • con:操作はデータ駆動ではない
  • pro:すべてのスプレッドシートで機能し、セキュリティ制限はありません

オプション2)INDIRECTとADDRESSを使用してデータを参照する

例:= INDIRECT(ADDRESS(B7、B6、1、TRUE、B4))

B7は行インデックス、B6は列インデックス、B4はワークブック/ワークシート名を含みます。

  • pro:データの場所はデータ駆動型にすることができます
  • con:参照先の本が閉じていると動作しません
  • con:参照先の本を自動ロードするための回避策はデフォルトのマクロセキュリティレベルでは機能しません

回答:


2

これをあまり行わない場合、または例のように1つのセル値を必要とする場合は、オプション1が適しています。もしあなたが必要ならば:

  1. このようなことを頻繁にする
  2. ワークブック内で他に起こっている可能性があるものに基づいて動的なクエリを作成する(またはユーザー入力を取り込む)
  3. 大量のデータを取得するか、取得したデータをフィルタ/ソートします
  4. あなたがそれを提示する前にあなたが引き込んだデータを処理する

あなたが使用する1つ以上のマクロを書くことができます。 ADO 。あなたはあなたのスプレッドシートにExcel、他のデータベースまたはテキストファイルからデータを引っ張るのにExcelでADOを使うことができます。私はそれをトンで使います。そんなに、私は持っています 専用クラスモジュール 私の詳細を処理します。


1

テクニックがデータ駆動型かどうかが心配なのは、他のワークブックのデータが変更されたときに参照が古くなってしまうのが心配だからです。名前付き範囲を使用することで問題を回避できます。

名前付き範囲を作成するには: データを含むブックで、名前ボックス(セルの行と列が表示されている場所)をクリックしてデータを含むセルを選択し、名前を入力します。

範囲を参照する: 別のシートから名前付き範囲を参照するには

'[MyData.xls] Sheet1'!MyNamedRange

テーブルなどから特定の値が必要な場合は、vlookup、hlookup、indexなどのさまざまな検索機能を使用して特定の値を選択できます。

たとえば、 "Grocery"ワークシートの "Sales.xls"ワークブックに次のテーブルがあり、テーブル全体に対して "tableSales"という名前の範囲を定義したとします。

アイテム販売 バナナ343 ぶどう123 卵756

それから私は次のようにして別のワークブックで "卵"の売り上げ高を調べることができます。

= VLOOKUP( "Eggs"、 '[Sales.xls] Grocery'!tableSales、2、false)

(vlookupの最初のパラメータはルックアップ値、2番目はテーブルの範囲、3番目のパラメータは取得する列を指定します。4番目がtrueに設定されている場合は、近似一致を見つけようとします)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.