这是我目前使用的公式:
=query(IMPORTRANGE("XXXX","XXXXX!A:H"),
"select Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8
where Col1> date '"&TEXT(F1,"yyyy-mm-dd")&"' and Col3 = '"&B1&"' and Col4 = '"&D1&"'
order by Col1 desc",1)
该公式有效。 Col1包含输入日期。我只检索F1中列出的日期之后的值。 因此,Col3和Col3包含一些在单元格B1和D1中选择的属性。 Col5包含字符串(客户端名称)。客户名称可以在多行上重复。 我只想检索最新的。有关如何执行操作的任何想法?
并且,为了使问题更加有趣,是否为每个客户检索最早的行是同一主意?
这是link to demo sheet的详细信息,位于“唯一查询”标签中。
另一个挑战可能是每个客户端获取X个行,而不仅仅是最近的行。
答案 0 :(得分:2)
尝试:
IMemberResolver
=SORTN(QUERY(IMPORTRANGE("1LoHg53hzQvYtOLTcDwxLY8OrKVN4F7usX8YI41BtdWg", "Activity list!A:E"),
"where Col1 > date '"&TEXT(I2, "yyyy-mm-dd")&"'
and Col2 = '"&I3&"'
order by Col1 desc", 1), 99^99, 2, 4, 1)
答案 1 :(得分:1)
我将基于一个SQL表达式来实现此结果,但是不幸的是Google Sheets QUERY语言的表现力不强。这就是为什么生成的公式看起来有些混乱。
=query(
IMPORTRANGE("https://docs.google.com/spreadsheets/d/1LoHg53hzQvYtOLTcDwxLY8OrKVN4F7usX8YI41BtdWg/edit","Activity list!A:E"),
"select Col1, Col2, Col3, Col4, Col5
where Col1= date'"&
JOIN("' or Col1 = date '",
ARRAYFORMULA(TEXT(ARRAY_CONSTRAIN(
query(query(
"THE IMPORTED RANGE",
"select Col1,Col2,Col3,Col4,Col5
where Col1> date '"&TEXT(I2,"yyyy-mm-dd")&"' and Col2 = '"&I3&"'
order by Col1 desc",1),
"select MAX(Col1), Col4
group by Col4
order by MAX(Col1) desc
label MAX(Col1) ''", 0),
1000, 1),
"yyyy-MM-DD")
))&"'",1)
从内部开始的查询规范:
对于最老的提交,将MAX更改为MIN汇总函数的方法相同。
注意:这不适用于每天多次提交。
答案 2 :(得分:1)
我认为最简单的方法是在query()中使用Vlookup。不幸的是,它涉及到两次使用IMPORTRANGE(),但是我仍然认为它比其他一些可能的方法更有效。您可以在MK.A2样本页的“帮助”标签中找到它。
=ARRAYFORMULA(IFERROR(VLOOKUP(UNIQUE(query(IMPORTRANGE("1LoHg53hzQvYtOLTcDwxLY8OrKVN4F7usX8YI41BtdWg","Activity list!A:E"), "select Col4 where Col1> date '"&TEXT(I2,"yyyy-mm-dd")&"' and Col2 = '"&I3&"'
order by Col1 desc",1)),query(IMPORTRANGE("1LoHg53hzQvYtOLTcDwxLY8OrKVN4F7usX8YI41BtdWg","Activity list!A:E"), "select Col4,Col1,Col2,Col3,Col5 where Col1> date '"&TEXT(I2,"yyyy-mm-dd")&"' and Col2 = '"&I3&"'
order by Col1 desc",1),{2,3,4,1,5},0)))