web-dev-qa-db-ja.com

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

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

176
Jeff Yates

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を使用するには、Viewerまたは共同作業者として、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の「クロスブック参照式」の50の制限が削除されます( Googleサポート(h/t- ヤコブヤントゥインストラ

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

179
ale

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

つかいます

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

の代わりに

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

29
0blivious

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

10

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

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

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

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

等.

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

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

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

  • スクリプトエディターを開きます( "ツール"-> "スクリプト"-> "スクリプトエディター")
  • 次のような関数を提供します(チェックなしで、これを改善する必要がありますが、一般的な考えは得られます)。
 function 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」パラメーターにあります。

' spreadsheet services 'のドキュメントに、トピックに関する詳細情報が記載されています。

2
akira