我们有谷歌电子表格,其中包含人们记录的数据以及按照此格式记录的数据。
每个家伙都有一个带有他名字的电子表格,有可能在一天内没有任何活动。
我想创建一个主日志记录表,其中包含遵循以下格式的所有人的活动:
您可以在此处找到此电子表格的链接: https://docs.google.com/spreadsheets/d/1cgbWgWDe9Ec1t6Af33ICZObQwiJJyLHxOmFJDCoY6As/edit?usp=sharing
如果在其中一个人活动中出现更改,我希望这个“主表”能够自动生成和动态。所以我想我需要脚本?
然而我找不到办法做到这一点......
答案 0 :(得分:1)
我没有太多时间来解释这一点,但下面的公式将为“Bob”和“Robert”添加一列,并为每组数据添加并将两个集合作为一个数组,将其返回到查询并排序日期列的结果。区域之间存在差异,您的样本表要我使用;正常使用时,和我在使用的地方,在数组定义中:{range1,range2} vs {range1 \ range2}
=QUERY(
{ARRAYFORMULA({IF(ISBLANK(Bob!A3:A);;"Bob") \Bob!A3:G});
ARRAYFORMULA({IF(ISBLANK(Robert!A3:A);;"Robert") \Robert!A3:G})};
"select * where Col1 <> '' order by Col2")
把它放在A2的单元格中,你很好。您也可以使用IMPORTRANGE()从不同的工作表中提取数据。
编辑: 在上面的答案中,我错过了数据在OP希望堆叠的每一行上有3组值。为此,我们为初始数据嵌套query()函数,并在每个函数中返回相应的列:
=QUERY(
{
QUERY(
{
ARRAYFORMULA({IF(ISBLANK(Bob!A3:A);;"Bob") \Bob!A3:G});
ARRAYFORMULA({IF(ISBLANK(Robert!A3:A);;"Robert") \Robert!A3:G})
};
"select Col1, Col2, Col3, Col4 where Col1 <> ''"; 0);
QUERY(
{
ARRAYFORMULA({IF(ISBLANK(Bob!A3:A);;"Bob") \Bob!A3:G});
ARRAYFORMULA({IF(ISBLANK(Robert!A3:A);;"Robert") \Robert!A3:G})
};
"select Col1, Col2, Col5, Col6 where Col1 <> ''"; 0);
QUERY(
{
ARRAYFORMULA({IF(ISBLANK(Bob!A3:A);;"Bob") \Bob!A3:G});
ARRAYFORMULA({IF(ISBLANK(Robert!A3:A);;"Robert") \Robert!A3:G})
};
"select Col1, Col2, Col7, Col8 where Col1 <> ''"; 0)
};
"select * order by Col2"; 0)
这只返回第一组查询中包含有效数据的行,然后在最后一次查询中对它们进行排序。