以下是我正在使用的电子表格:
(表单顶部)
(同一张,低于输出)
https://docs.google.com/spreadsheets/d/1-DrhZKYM2Kk4qDS1Koqz9eYy1L35JXIeyat61A2v0JQ/edit?usp=sharing
我正在使用QUERY函数填充摘要表中的相应Feed,并且需要将从A24开始的数据放入。
以下是我在单元格C6中使用的公式(在整个汇总表中使用了类似的公式):
=QUERY($A$24:$D$57, "Select D Where B='ENQ' and A='2/27/14 - Thu'")
这得到了正确的信息,但是公式需要被编辑为在其使用的每个单元格中都是唯一的。问题是无法用“A ='2/27/14-Thu'”快速填充单元格太具体了。
我试图将其设置为:
如何编写QUERY函数以将这些值称为变量,而不是使用原始函数中的文字字符串?
答案 0 :(得分:7)
您可以让您的公式引用输出的A列中的索引,而不是'ENQ'
等固定字符串。例如,您可以在单元格C4中更改公式:
=QUERY($A$24:$D, "Select D Where B='" & $A4 & "' and A='2/27/14 - Thu'")
^^^^^^^
&符号(&
)用于连接字符串段。
请注意,由于源数据扩展到工作表数据范围的底部,我们可以放弃指定底行。范围$A$24:$D
将包含所有行,因此它会自动调整为其他源数据。
要比较日期,两个值都必须是日期。 “2/27/14 - 星期四”未被识别为源数据表中的日期,但作为文本,即使您已将数字格式设置为日期。因此,请确保将所有源数据更改为在A列中包含实际日期。
您仍可以按自己喜欢的方式格式化日期 - 请参阅此屏幕截图。 A2的内容现在是正确的日期,“2/27/2014”,但格式设置为显示“mm / dd / yy - DDD”。只要数据是日期,就可以使用电子表格TEXT
函数构建查询,以yyyy-mm-dd格式解释日期。
在源列中添加日期,您可以使用todate()
标量函数告诉QUERY
将源中的日期转换为查询日期,date
用于将以下文字字符串(从C2)视为日期的关键字。
单元格C4的结果函数是:
=QUERY($A$24:$D , "Select D Where B='" & $A4 & "'and todate(A) = date '" & TEXT($C$2,"yyyy-MM-dd") & "'")
^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
同样,对于D4:
=QUERY($A$24:$D , "Select C Where B='"&$A4&"'and todate(A) = date '"&TEXT($C$2,"yyyy-MM-dd")&"'")
您可以改进E列中的计算,以处理列C或D中出现的#N/A
结果:
=if(isna(C12*D12),0,C12*D12)