Googleスプレッドシートのセルを別のドキュメントのセルにリンクするにはどうすればよいですか?


178

前月の数値に依存する毎月のスプレッドシートがあります。これらの値を切り取って貼り付けるのではなく、動的にインポートしたいと思います。これは可能ですか?どうすればいいのですか?


ちなみに、私は一度やったのでこれが可能であることを知っていますが、私はそれ以上情報やそれをやったシートを見つけることができません。私がそれを見つけたら、私は更新を投稿します。
ジェフイエーツ

回答:


183

IMPORTRANGE() 必要な機能のようです。

Googleスプレッドシートの関数リスト

Googleスプレッドシートでは、ImportRange関数を使用して、現在編集中のスプレッドシート内の別のワークブックを参照できます。ImportRangeを使用すると、1つ以上のセル値を1つのスプレッドシートから別のスプレッドシートにプルできます。独自のImportRange数式を作成するには、= importRange(spreadsheet-key、range)と入力します。10進数の区切りにコンマが使用されている言語では、コンマの代わりにセミコロンを使用して、式の引数を区切ります。

Spreadsheet-keyは、スプレッドシートURLのキー値であるSTRINGです。

範囲は、インポートするセルの範囲を表すSTRINGであり、オプションでシート名を含みます(デフォルトは最初のシートです)。必要に応じて範囲名を使用することもできます。

2つの引数が文字列である場合、それらを引用符で囲むか、文字列値を含むセルを参照する必要があります。

例えば:

= importrange( "abcd123abcd123"、 "sheet1!A1:C10") "abcd123abcd123"はターゲットスプレッドシートのURLの "key ="属性の値であり、 "sheet1!A1:C10"は希望する範囲です。インポートされます。

= importrange(A1、B1)セルA1には文字列ABCD123ABCD123が含まれ、セルB1にはsheet1!A1:C10が含まれます

注:ImportRangeを使用するには、ImportRangeがデータをプルするスプレッドシートに閲覧者または共同編集者として追加されている必要があります。そうしないと、「#REF!エラー:要求されたスプレッドシートキー、シートタイトル、またはセル範囲が見つかりませんでした」というエラーが表示されます。

「キー」は、もちろん、key=パラメータに一致するスプレッドシートのURL内の文字列です。

2つのスプレッドシートを作成してテストしました。最初のセルA1に、文字列を入れます。2番目のセルA1に=importRange("tgR2P4UTz_KT0Lc270Ijb_A","A1")、最初のスプレッドシートの文字列を表示しました。(キーは明らかに異なります。)

(関数の形式は、ロケールに依存するかもしれないフランスでは、式はカンマで有効ではありませんので、あなたは、セミコロンでそれを交換する必要があります。=importRange("tgR2P4UTz_KT0Lc270Ijb_A";"A1")

ノート:

  1. Googleは現在、スプレッドシートごとに50の「クロスブック参照式」という厳しい制限を設定しています。出典:Googleドキュメント、スプレッドシート、スライドのサイズ制限(h / t JJ Rohrer

  2. 「新しい」Googleスプレッドシート(​​間もなく標準になります)は、50の「クロスワークブック参照式(Googleサポート(h / t Jacob Jan Tuinstra」という50の制限を削除します

  3. 「新しい」Googleスプレッドシートでは、URL全体をキーとして使用します(Googleサポート(h / t  Punchlinern


3
@Al:はい!それでおしまい!ありがとう。
ジェフイエーツ

+1おっ!インラインバージョンがあることに気づきませんでした。もう1つのオプションは、Google Appsスクリプトを使用することです。SpreadsheetApp.openById([ID])。getRange()を使用する関数を作成し、それでローカル範囲を設定します。
エヴァンプライス

3
スプレッドシートごとに50に制限されることに注意してください(Googleの厳しい制限):support.google.com/drive/answer/37603
ja

4
新しいGoogleスプレッドシート(​​まもなく標準になる)で、50の制限が削除されました:support.google.com/drive/answer/3093340
hl=ja

4
また、新しいGoogleスプレッドシートでは、URL全体をキーとして使用します。さらに、最初に関数を入力するときに、要求されたシートへのアクセスを許可するように求められます。
パンチライン

29

参考までに、他のスプレッドシート内の別のシートを参照する場合は、シート名を再引用しないでください。

つかいます

=importRange("tgR2P4UTz_KT0Lc270Ijb_A","Sheet Name!A1:A10")

の代わりに

=importRange("tgR2P4UTz_KT0Lc270Ijb_A","'Sheet Name'!A1:A10")


6
ありがとう。これをコメントとして他の回答に追加するか、単にその回答を編集する必要があります。
スタッドギーク

10

新しいインターフェイスで=は、セルに入力するだけで、他のシートに移動して目的のセルを選択できます。手動で行う場合、または古いインターフェイスを使用している場合は、単に行うことができます=Sheet1!A1。ここSheet1で、はシートの名前で、A1気になるシート上のセルです。これはMicrosoft Excelと同じです。


6
シート名に空白が含まれている場合は、「この他のシート」を使用してください!A1
akira

12
質問で尋ねたように、まったく異なるドキュメントからはどうですか?
ジェフイエーツ

@jeffごめんなさい。あなたは本文で「ドキュメント」に言及しなかったので、何らかの理由で、私の頭の中で「シート」と思った。私の知る限り、別のドキュメントに動的にリンクすることはできません。しかし、複数のドキュメントではなく複数のシートを使用することもできます。その時点で、私が提案したことを実行できます。これが、まさにこの理由で、私が毎月の財政を運営する方法です。
ベンジャミンポラック

それは大丈夫です:)私は私が実際にそれを自分でやったが、私は忘れてしまったと私はそれでやったシートを見つけることができないようにそれを行う方法があります知っている。
ジェフ・イェーツ

これは投稿された質問には答えません-それは同じドキュメントの他のシートについて話している。
ブレンダン

4

Insert-> Define new rangeを使用してこの構文を見つけました

他のスプレッドシートを参照する範囲:

A列全体:「名前にスペースを含むスプレッドシート」!

B列全体:「名前にスペースを含むスプレッドシート」!B:B

その後、次のように使用できます。

=COUNTIF('First Page'!B:B, "valueToMatch")

1
これは、スプレッドシートの外部を参照するためにも可能ですか?
ジェイコブヤントゥインストラ

@JacobJanTuinstraスプレッドシートの「外側」とはどういう意味ですか?
トムRoggero

6
さて、IMPORTRANGE関数は別のスプレッドシートからデータをインポートできます。範囲の設定は、スプレッドシート内でのみ可能です。それが私が外で意味したことです。
ジェイコブヤントゥインストラ

これは投稿された質問には答えません。同じドキュメント内の別のシートを参照する方法を説明しているだけです。
ブレンダン

IMPORTRANGEジェイコブが言ったように@brendan使用。
トムロジェロ

2

ここに私がそれをした方法があります(「importrange()」を再実装しました):

  • スクリプトエディターを開きます( "ツール"-> "スクリプト"-> "スクリプトエディター")
  • 次のような関数を提供します(チェックなしで、これを改善する必要がありますが、一般的な考えは得られます)。
関数REMOTEDATA(inKey、inRange){

  var outData;  
  var ss = SpreadsheetApp.openById(inKey);

  if(ss){
     outData = ss.getRange(inRange).getValues();
  }

  return outData;
}
  • スプレッドシートで次のような式を使用します。
= SUM(REMOTEDATA( "key"、 "SheetName!A1:A10"))

「key」はドキュメントのキーです。ドキュメントURLの「key = xyz」パラメーターにあります。

スプレッドシートサービス」のドキュメントには、トピックに関する詳細情報が記載されています。


4
既存の機能を使用するのではなく、これを自分で実装する利点は何でしょうか?
ジェフイェーツ

1
@Jeff Yates:なし、importrange()を知らなくても実装しました。スポーツマンシップ、あなたは知っていますか?すべての方法で
アキラ

1
残念ながら、スプレッドシートのカスタム関数を使用して、もはや他のスプレッドシートを開くことができませんSpreadsheetApp.openById()SpreadsheetApp.openByUrl()- > developers.google.com/apps-script/guides/sheets/...
フランチェスコVadicamo

-2

クエリを使用して非常に簡単な方法で行いました。たとえば、ABCとXYZの2つのシートがあり、A1からC30までの範囲をAbcからXYZにインポートし、範囲を表示するセルをクリックして、これを記述します:

=QUERY(ABC!A1:C30)

注:シート名にスペースが含まれている場合、もちろん次のように記述します。

=QUERY('ABC 1'!A1:C30)


7
OPは別のドキュメントからセルをインポートする方法を尋ねました。できるQUERY
ヴィダールS.ラムダル

4
@ VidarS.Ramdalそれができる、それが必要importrange("abcd123abcd123", "sheet1!A1:C10")例えば、=query(importrange("abcd123abcd123", "sheet1!A1:C10"));-)
Fuhrmanator
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.