用于列出给定列的每日 运行 计数的每个单元格公式
Per-cell formula for tabulating daily running counts of a given column
跟进:
我怎样才能达到与...相同的结果...
giv[ing] a running count of Issues for a given day. In other words: the output should enumerate each Issue for a given date (returning blank if Issue is blank), and then start again at 1 for the first issue in a subsequent date
...但是不 使用 ArrayFormula?即我想在每一行中都有一个公式,但输出的值与第 J
列相同。原因是 iOS 应用程序在我每次打开这个电子表格时都会崩溃,因为我有 ArrayFormula 在那里。
Sample spreadsheet,查看“每行公式方法”选项卡:
- 第
B
列包含日期
- 第
E
列包含每个问题的 T 恤尺码严重性
- 第
F
列包含 E 列的数字转换
- 列
G
包含该行中是否存在问题的二进制输出
- 列
I
包含 ArrayFormula 方法:
=ArrayFormula(IF(F3:F="",,MMULT((ROW($B3:$B)>=TRANSPOSE(ROW($B3:$B))) * EXACT($B3:$B,TRANSPOSE($B3:$B))^1, ($G3:$G)^1)))
- 第
L
栏将第 J
栏中的尝试与第 I
栏中的真实来源进行了核对
最简单的事情就是这样:
=IF(F3="",,
INDEX(
MMULT(
(ROW(B:B)>=TRANSPOSE(ROW(B:B))) *
EXACT(B:$B,TRANSPOSE(B:B)),
G:G
),
ROW(F3)-2
)
)
...如果您对每一行的 MMULT
ing 都满意的话。不过,我可以看到对于大型数据集来说这会变慢,假设 Sheets 实际上是每行计算一次。当然,如果将 MMULT
结果记忆为另一个 sheet 并使用该范围,效率会更高。
记忆MMULT()
我们可以创建一个新的sheet(我称之为“备忘录”)来记忆,或者cache,MMULT()
所以它只需要计算一次。
=ArrayFormula(MMULT(
(ROW('Formula per row method'!B3:B)>=TRANSPOSE(ROW('Formula per row method'!B3:B))) *
EXACT('Formula per row method'!B3:$B,TRANSPOSE('Formula per row method'!B3:B)),
'Formula per row method'!G3:G
))
那么你原来的公式就变成了:
=IF(F3="",,
INDEX(
Memo!A:A,
ROW(F3)-2
)
)
但是,我不确定这是否适合你,因为你说 ArrayFormula()
没有用。不过,它可能会破坏您的原始用例,因此值得一试。
跟进
我怎样才能达到与...相同的结果...
giv[ing] a running count of Issues for a given day. In other words: the output should enumerate each Issue for a given date (returning blank if Issue is blank), and then start again at 1 for the first issue in a subsequent date
...但是不 使用 ArrayFormula?即我想在每一行中都有一个公式,但输出的值与第 J
列相同。原因是 iOS 应用程序在我每次打开这个电子表格时都会崩溃,因为我有 ArrayFormula 在那里。
Sample spreadsheet,查看“每行公式方法”选项卡:
- 第
B
列包含日期 - 第
E
列包含每个问题的 T 恤尺码严重性 - 第
F
列包含 E 列的数字转换
- 列
G
包含该行中是否存在问题的二进制输出 - 列
I
包含 ArrayFormula 方法:
=ArrayFormula(IF(F3:F="",,MMULT((ROW($B3:$B)>=TRANSPOSE(ROW($B3:$B))) * EXACT($B3:$B,TRANSPOSE($B3:$B))^1, ($G3:$G)^1)))
- 第
L
栏将第J
栏中的尝试与第I
栏中的真实来源进行了核对
最简单的事情就是这样:
=IF(F3="",,
INDEX(
MMULT(
(ROW(B:B)>=TRANSPOSE(ROW(B:B))) *
EXACT(B:$B,TRANSPOSE(B:B)),
G:G
),
ROW(F3)-2
)
)
...如果您对每一行的 MMULT
ing 都满意的话。不过,我可以看到对于大型数据集来说这会变慢,假设 Sheets 实际上是每行计算一次。当然,如果将 MMULT
结果记忆为另一个 sheet 并使用该范围,效率会更高。
记忆MMULT()
我们可以创建一个新的sheet(我称之为“备忘录”)来记忆,或者cache,MMULT()
所以它只需要计算一次。
=ArrayFormula(MMULT(
(ROW('Formula per row method'!B3:B)>=TRANSPOSE(ROW('Formula per row method'!B3:B))) *
EXACT('Formula per row method'!B3:$B,TRANSPOSE('Formula per row method'!B3:B)),
'Formula per row method'!G3:G
))
那么你原来的公式就变成了:
=IF(F3="",,
INDEX(
Memo!A:A,
ROW(F3)-2
)
)
但是,我不确定这是否适合你,因为你说 ArrayFormula()
没有用。不过,它可能会破坏您的原始用例,因此值得一试。