【发布时间】:2018-01-23 20:11:38
【问题描述】:
我有一个关于优化我在 Google 表格中使用的公式的问题:
=ARRAYFORMULA(
IF(
IFERROR(
MATCH($B2 & A2, ($B$1:B1) & ($A$1:A2), 0),
0
) = 0,
1,
0))
该公式通过计算列 A (ID) 中的所有唯一值(假设它出现在列 B(日期)的日期范围内)来计算列 C(计数)中的输出。
请注意计数值只有 0 和 1,并且仅当 ID 在日期范围内首次出现时才会显示 1。
下面的示例数据。
ID Date Count
138 Oct-13 1
138 Oct-13 0
29 Oct-13 1
29 Nov-13 1
138 Nov-13 1
138 Nov-13 0
问题是,一旦我要解析超过 10000 行,公式就会变得缓慢,并且需要一个多小时才能完成计算。我想知道是否有人对如何优化这个公式有建议,所以我不需要让它运行这么长时间。
谢谢,
【问题讨论】:
-
只是为了澄清一下,这个公式的目的是在 Count 中放入多个
1s 等于唯一(ID,Date)对的数量吗?换句话说,对 Count 列求和会产生唯一(ID、Date)对的数量吗? -
抱歉没有早点澄清。它是在日期范围内第一次出现 ID 时放置
1。例如,如果 id138在Oct-13中出现 4 次,则唯一会出现的1出现在当月出现 id138的第一行,其余的将返回0直到下个月出现。 -
啊。工作表是否按日期排序?
-
是的。最旧的日期在顶部降序到最新。
-
日期相同的行是否按ID排序?如果不是,他们会是吗?
标签: optimization google-sheets array-formulas