我试着理解这个自动增量公式,我的同事写的。我理解数组公式通常是如何工作的,也理解countifs。
屏幕上的公式:=ARRAYFORMULA(COUNTIFS(ROW(B2:B), "<="&ROW(B2:B)))
我很清楚为什么行(B2:B)(COUNTIFS中的1 1param)作为一个范围工作得很好。它应该是一个范围,而不仅仅是行函数返回的数字。
我一直试图找到答案,阅读文件,但没有任何帮助。
例如,我认为第4行的公式如下(如果我们从ARRAYFORMULA中分离出来):
COUNTIFS(ROW(B4:B),“<=”&ROW(B4:B)
4,“<=4”
我需要理解这段代码,而不是其他解决方案。

发布于 2022-11-15 18:04:50
理解ARRAYFORMULA工作方式的最好方法是写下等效的下拉公式。
等效的拖曳公式:
=ARRAYFORMULA(COUNTIFS(B2:B, B2:B, ROW(B2:B), "<="&ROW(B2:B)))是
=ARRAYFORMULA(COUNTIFS($B$2:$B, B2, ROW($B$2:$B), "<="&ROW(B2)))
=ARRAYFORMULA(COUNTIFS($B$2:$B, B3, ROW($B$2:$B), "<="&ROW(B3)))
=ARRAYFORMULA(COUNTIFS($B$2:$B, B4, ROW($B$2:$B), "<="&ROW(B4)))
...(我们只需要ARRAYFORMULA,因为ROW($B$2:$B)是一个数组公式,这意味着如果您键入一个单元格而不包装它一个数组启用函数,它只会计算ROW($B$2)__)。
如果我们回忆一下COUNTIFS参数:
=COUNTIFS(criteria_range1, criterion1, criteria_range2, criterion2)我们可以看到,在下拉公式中,默认情况下期望得到一个range的每个参数都成为一个绝对引用,而在默认情况下不需要一个范围的每个参数,只是一个递增每一行的值。
对于任何其他函数,这都是正确的:如果函数的参数在默认情况下期望有一个范围,那么当我们在ARRAYFORMULA()中包装它时,这个范围在整个计算过程中保持不变,这意味着数组公式在任何时候都会看到该范围内的每个值。哪些增量,因此只有在该特定行的数组公式中才能看到,是那些本机不期望范围的参数。
这似乎是一个显而易见的观察,但我相信这就是为什么很多人对这个公式的工作方式感到困惑的原因。
如果您理解这个概念,那么您还可以了解公式的其他变体是如何工作的:
=ARRAYFORMULA(COUNTIFS(B2:B, B2:B, ROW(B2:B), "<"&ROW(B2:B)))
=ARRAYFORMULA(COUNTIFS(B2:B, B2:B, ROW(B2:B), ">="&ROW(B2:B)))
=ARRAYFORMULA(COUNTIFS(B2:B, B2:B, ROW(B2:B), ">"&ROW(B2:B)))https://stackoverflow.com/questions/74444118
复制相似问题