我正在使用 Google 表格并使用以下公式,没有任何问题:
=QUERY(Sheet!A:D,"select A, max(B) where not B is null group by A label A 'Client', max(B) 'Most Recent'")
显然,这是返回引用数据的 A 列和 B 列但是,我还想从 C 列返回相应的单元格。
使用此示例,我希望看到填充有“Pizza”(即来自 C3)的单元格 G2,等等。
我使用了正确的公式吗?我需要改变什么?
我正在使用 Google 表格并使用以下公式,没有任何问题:
=QUERY(Sheet!A:D,"select A, max(B) where not B is null group by A label A 'Client', max(B) 'Most Recent'")
显然,这是返回引用数据的 A 列和 B 列但是,我还想从 C 列返回相应的单元格。
使用此示例,我希望看到填充有“Pizza”(即来自 C3)的单元格 G2,等等。
我使用了正确的公式吗?我需要改变什么?
这是我所做的,最终奏效了。
在 E1 中,输入=unique(A:A)
以获取唯一客户端名称的列表。在 F2 中,输入
=query(A$2:D101, "select B,C,D where A ='"&F2&"' order by B desc limit 1")
并将此公式向下拖动。这将选择 A 值与 E2 匹配的所有行,并选择具有最大 B 值的行。
您不希望在这些查询的输出中有标题行,因此只需在标题行中添加所需的文本。
你试图做的不是很像 SQL,因为max(B)
它不指向任何特定的行:它只是所选行中 B 的最大值。这个值可以通过几行来获得,使得 C、D 的选择不明确。我不认为单个查询可以做到这一点。
这是一个带有unique
几个query
命令的实现。
在 E2 中,输入=unique(A:A)
以获取唯一客户端名称的列表。在 F2 中,输入
=query(A:D, "select B,C,D where A ='"&E2&"' order by B desc limit 1")
并将此公式向下拖动。这将选择 A 值与 E2 匹配的所有行,并选择具有最大 B 值的行。
您不希望在这些查询的输出中label B '', C '', D ''
包含标题行,因此在查询范围中添加或不包含标题行。
要在单个查询中同时选择 C 和 D,请展开select
子句
select A, max(B), C, D
然后需要在group by
子句中包含以下内容:
group by A, C, D
公式将是
=QUERY(A:D,"select A, max(B), C, D where not B is null group by A, C, D label A 'Client', max(B) 'Most Recent'")
这确实意味着唯一要组合在一起的行将是那些不仅 A 而且 C 和 D 相等的行。
一个可能的单一公式解决方案:
=ArrayFormula(IFERROR(VLOOKUP(UNIQUE(A2:A),SORT(A2:C,2,0),{1,2,3},0)))