如何将Google Spreadsheets中的单元格链接到另一个文档中的单元格?


178

我有一个每月电子表格,它依赖于上个月的数据。我想动态导入这些值,而不是剪切和粘贴它们。这可能吗?我该怎么做?


顺便说一句,我知道这是有可能的,就像我曾经做过的那样,但是我再也找不到信息或我做的工作表了。如果找到它,我将发布更新。
杰夫·耶茨

Answers:


183

IMPORTRANGE() 似乎是您想要的功能。

Google电子表格功能列表中

使用Google Spreadsheets,您可以使用ImportRange函数引用当前正在编辑的电子表格中的另一个工作簿。ImportRange允许您将一个或多个单元格值从一个电子表格拉到另一个电子表格中。要创建自己的ImportRange公式,请输入= importRange(spreadsheet-key,range)。对于使用逗号进行十进制分隔的语言,请使用分号(而不是逗号)来分隔公式中的参数。

Spreadsheet-key是一个STRING,它是电子表格URL中的键值。

范围是一个STRING,表示要导入的单元格范围,可以选择包括工作表名称(默认为第一张工作表)。如果愿意,还可以使用范围名称。

假设这两个参数均为STRING,则需要将其用引号引起来,或引用其中包含字符串值的单元格。

例如:

= importrange(“ abcd123abcd123”,“ sheet1!A1:C10”)“ abcd123abcd123”是目标电子表格URL上“ key =”属性中的值,而“ sheet1!A1:C10”是所需的范围被导入。

= importrange(A1,B1)单元格A1包含字符串ABCD123ABCD123,单元格B1包含sheet1!A1:C10

注意:为了使用ImportRange,您需要作为查看器或协作者添加到ImportRange从中提取数据的电子表格中。否则,您将收到以下错误:“ #REF!错误:未找到请求的电子表格键,工作表标题或单元格范围。”

当然,“键”是电子表格网址中与key=参数匹配的字符串。

我只是通过创建两个电子表格对其进行了测试。在第一个单元格A1中,我输入了一个字符串。在第二个单元格的A1中,我放进去=importRange("tgR2P4UTz_KT0Lc270Ijb_A","A1"),它显示了第一个电子表格中的字符串。(您的密钥显然会有所不同。)

(函数的格式取决于您的语言环境在法国,这个公式并不用逗号有效的,所以你需要用分号来代替它。=importRange("tgR2P4UTz_KT0Lc270Ijb_A";"A1")

笔记:

  1. Google目前为每个电子表格设置了50个“跨工作簿参考公式”的硬性限制。来源:Google文档,表格和幻灯片大小限制(小时JJ Rohrer

  2. “新的” Google电子表格(即将成为标准)删除了50个“跨工作簿参考公式”的50个限制(Google支持(h / t Jacob Jan Tuinstra

  3. 在“新” Google表格中,您还将整个URL用作密钥(Google支持(h / t  Punchlinern


3
@Al:是的!而已!谢谢。
杰夫·耶茨

+1哇!我没有意识到有一个在线版本。另一个选择是使用Google Apps脚本。创建一个使用SpreadsheetApp.openById([ID])。getRange()的函数,并设置一个本地范围。
Evan Plaice

3
可能值得注意的是,您(每个电子表格?)最多只能使用50个(Google的硬限制):support.google.com/drive/answer/37603?
hl=zh

4
在新版Google Spreadsheet(即将成为标准)中,已删除了50个限制:support.google.com/drive/answer/3093340?
hl = zh-

4
另外,在新的Google表格中,您将整个URL用作键。此外,当您首次输入该功能时,系统还会提示您授予对所请求工作表的访问权限。
Punchlinern

29

仅供参考,如果您要引用该其他电子表格中的其他工作表,则该工作表名称不应重新引用:

采用

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

代替

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


6
谢谢。您应该将此添加为其他答案的注释,甚至只是编辑该答案。
studgeek

10

在新界面中,您只需键入=单元格,然后转到另一页并选择所需的单元格即可。如果要手动执行操作或使用旧界面,只需执行即可=Sheet1!A1,其中Sheet1是工作表的名称,A1是您关心的该工作表上的单元格。这与Microsoft Excel相同。


6
如果工作表名称中包含空格,请使用“其他工作表”!A1
akira 2010年

12
正如我在问题中所问的,从完全不同的文档中呢?
杰夫·耶茨

@jeff抱歉;您没有在正文中提及“文档”,由于某种原因,在我的脑海中,我想到了“床单”。据我所知,您不能动态链接到另一个文档。但是您可以使用多个工作表,而不是多个文档,这时您可以执行我建议的操作。正是由于这个原因,这就是我经营自己的每月财务的方式。
本杰明·波拉克

这没关系:)我知道有办法做到这一点,因为我已经做实际上它自己,但我忘了,我找不到我薄板做进去。
杰夫·耶茨

这不能回答发布的问题-它是在讨论同一文档中的其他工作表。
brendan '18

4

我使用插入->定义新范围找到了这种语法

参考其他电子表格的范围:

整个A栏:“名称中包含空格的电子表格”!A:A

整个B栏:“名称中包含空格的电子表格”!B:B

等等

然后,您可以将其用作:

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

1
也可以在电子表格外部引用吗?
Jacob Jan Tuinstra

@JacobJanTuinstra你是什么意思在电子表格的外面?
汤姆·罗杰罗

6
好的,该IMPORTRANGE功能可以从另一个电子表格导入数据。设置范围仅意味着(可能)在电子表格中。那就是我在外面的意思。
Jacob Jan Tuinstra

这不能回答发布的问题-只是描述如何引用同一文档中的另一张纸。
brendan '18

@brendan用法IMPORTRANGE如Jacob所说。
汤姆·罗杰罗

2

这是我的操作方法(重新实现了“ importrange()”):

  • 打开脚本编辑器(“工具”->“脚本”->“脚本编辑器”)
  • 提供这样的功能(不做任何检查,这有待改进,但您可以理解):
函数REMOTEDATA(inKey,inRange){

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

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

  返回outData;
}
  • 在电子表格中使用以下公式:
= SUM(REMOTEDATA(“ key”,“ SheetName!A1:A10”))

“密钥”是文档的密钥,可以在文档URL的“ key = xyz”参数中找到它。

电子表格服务 ” 文档提供了有关该主题的更多信息。


4
自己实现而不使用现有功能的好处是什么?
杰夫·耶茨

1
@Jeff Yates:没有,我只是在不知道importrange()的情况下实现了它。运动精神,你知道吗?只是因为我可以:)
akira

1
不幸的是,电子表格自定义功能无法使用SpreadsheetApp.openById()SpreadsheetApp.openByUrl()-> developers.google.com/apps-script/guides/sheets/…
Francesco Vadicamo

-2

我通过使用Query进行了非常简单的操作,例如,我有2张工作表ABC和XYZ,并且我想将A1到C30的范围从Abc导入XYZ,单击要显示范围的单元格,并编写以下代码:

=QUERY(ABC!A1:C30)

注意:如果工作表名称中包含空格,那么您当然可以这样写:

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


7
OP询问如何从另一个文档导入单元格。能QUERY做到吗?
Vidar S. Ramdal

4
@ VidarS.Ramdal它可以,但是需要importrange("abcd123abcd123", "sheet1!A1:C10")例如=query(importrange("abcd123abcd123", "sheet1!A1:C10"));-)
Fuhrmanator 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.