我有两个单独的Google电子表格文档,我们称之为Tom和Jerry。它们包含相同的表,但其中包含不同的数据。例如:
汤姆:
SERIE RATING
Friends 5
Suits 4
Ray Donavon 2
杰里:
SERIE RATING
Game of Thrones 5
Black Mirror 3
Breaking Bad 5
现在我想将它们合并到不同的Google电子表格中,然后输入:
=QUERY(
{
QUERY(
IMPORTRANGE("DOCUMENT_ID_TOM";"RANGE_DATA_NAME");"SELECT * WHERE Col1 <>''"
);
QUERY(
IMPORTRANGE("DOCUMENT_ID_JERRY";"RANGE_DATA_NAME");"SELECT * WHERE Col1<>''"
)
};"SELECT *"
)
现在我掌握了所有数据:
Friends 5
Suits 4
Ray Donavon 2
Game of Thrones 5
Black Mirror 3
Breaking Bad 5
然而,在查询中丢失的是现在我不知道是谁评价了什么。所以我的首选结果是这样的:
Tom Friends 5
Tom Suits 4
Tom Ray Donavon 2
Jerry Game of Thrones 5
Jerry Black Mirror 3
Jerry Breaking Bad 5
现在我不想在汤姆和汤姆的文件中添加无用的列。 Jerry包含简单的每行复制的名称。必须有另一种方式,所以我可以在公式中使用它。所以问题是:
如何在Google Spreadsheet矩阵中添加名称列?
答案 0 :(得分:1)
汤姆和杰瑞参与时,我怎么能不去寻找答案呢?
将其置于工作表的单元格H1中将导致列H具有与列A相同的值,I作为B,J作为C AND,具有在列K中放置“Tom”(不带引号)的附加功能:
={A1:C,ARRAYFORMULA(IF(ISBLANK(A1:A),,"Tom"))}
因此我们对Importrange函数进行了一些更改并得到:
={IMPORTRANGE("DOCUMENT_ID_TOM", "sheet1!A1:C"),
ARRAYFORMULA(
IF(
ISBLANK(
IMPORTRANGE("DOCUMENT_ID_TOM", "sheet1!A1:A")
)
,,"Tom")
)
}
所以我们应该能够将你的公式用于将Tom和Jerry添加到导入的范围数组中,甚至可以简化公式:
=QUERY(
{
{
IMPORTRANGE("DOCUMENT_ID_TOM", "sheet1!A1:C"),
ARRAYFORMULA(
IF(
ISBLANK(
IMPORTRANGE("DOCUMENT_ID_TOM", "sheet1!A1:A")
)
,,"Tom"
)
)
};{
IMPORTRANGE("DOCUMENT_ID_JERRY", "sheet1!A1:C"),
ARRAYFORMULA(
IF(
ISBLANK(
IMPORTRANGE("DOCUMENT_ID_JERRY", "sheet1!A1:A")
)
,,"Jerry"
)
)
}
}
, "Select * where Col2 <> ''"
)
请注意,我没有使用命名范围来最小化各种范围的使用,但也因为命名范围不会增长。创建范围时,它将转到工作表中的最后一行。
在{}中使用逗号和分号确定是将值添加到数组的末尾还是创建新列。有关详情,请参阅help on Arrays。