添加具有 sheet 原始名称的列以合并 sheet

Add column with sheet name of origin to merged sheet

将此公式合并,然后按日期过滤,范围从不同的 sheet 到主 sheet :

=QUERY({'Class 1'!A3:I14;'Class 2'!A3:I14}
,"SELECT Col1, Col3, Col4, Col5, Col6, Col7, Col8, Col9 WHERE (Col1 >= date '" & TEXT(TODAY(),"yyyy-MM-dd") & "' AND Col1 <= date '" & TEXT(TODAY()+9,"yyyy-MM-dd") & "')", FALSE)

公式是这样计算的:Grabs ranges from Class 1 and Class 2 sheet秒。然后它过滤第一列中从今天到 9 天后的结果。对于每个筛选结果,右侧从第三列到第九列的所有内容都会显示。

在 Master sheet 中,我需要添加一个包含 class 的列(也就是每个结果的来源 sheet 的名称)所以可以从中理解class待测同学来自

Sheet of example

尝试:

=ARRAYFORMULA(QUERY(
 {'Class 1'!A3:A14\ 'Class 1'!X3:X14&"Class 1"\ 'Class 1'!C3:I14; 
  'Class 2'!A3:A14\ 'Class 2'!X3:X14&"Class 2"\ 'Class 2'!C3:I14};
 "select Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9
  where Col1 >= date '"&TEXT(TODAY();   "yyyy-MM-dd")&"' 
    and Col1 <= date '"&TEXT(TODAY()+9; "yyyy-MM-dd")&"'"; 0))

其中 X 列为空

使用 IFARRAYFORMULA 为第一个 sheet 添加 class 名称并为第二个 sheet 应用相同的模式。

应用上述内容的一种非常粗略的方法:

=ArrayFormula(QUERY({
'Class 1'!A3:I14,IF(N('Class 1'!A3:I14),"Class 1");
'Class 2'!A3:I14,IF(N('Class 2'!A3:I14),"Class 2")
},"SELECT Col1, Col10, Col3, Col4, Col5, Col6, Col7, Col8, Col9 WHERE (Col1 >= date '" & TEXT(TODAY(),"yyyy-MM-dd") & "' AND Col1 <= date '" & TEXT(TODAY()+9,"yyyy-MM-dd") & "')", FALSE))

N returns 一个数字否则什么都不返回。它在上面的公式中起作用,因为第一列包含 Google 工作表将它们作为序列号处理的日期。

请注意 SELECT 子句也进行了修改,它显示 Col10 作为第二列。