首页 > 解决方案 > Google 表格 - 使用 ARRAYFORMULA 并基于另一个字段的值增加单元格值

问题描述

我有一个正在创建的电子表格,并且我有一个 ARRAYFORMULA 用于根据另一个字段增加字段的数量。我的公式看起来像这样(注意:我的行从第 4 行开始,这就是为什么有 ROW(A4:A)-3):

=ARRAYFORMULA(IF(ROW(A4:A) = 4, 1, IF(B4:B = 1, ROW(A4:A)-3, (ROW(A4:A)-3)-(B4:B - 1))))

我正在做的是创建组(A),然后有一个序列计数器(B),它是组内的行数。我希望结果看起来像这样,A 刚刚从它停止的地方开始(注意:B 是手动输入的):

一个
1 1
2 1
3 1
3 2
3 3
4 1
5 1

但是,我的结果是这样的:

一个
1 1
2 1
3 1
3 2
3 3
6 1
7 1

我知道 ROW 让我得到行号,但是当我尝试使用 INDEX 公式时:

=ARRAYFORMULA(IF(ROW(G4:G) = 4, 1, IF(H4:H = 1, INDEX(G4:G, ROW(G4:G)-1, 1) + 1, INDEX(G4:G, ROW(G4:G)-1, 1)))

要获得前一个单元格的实际值,我会不断闪烁,就像它卡在某种无限循环中一样。我知道我可能在没有 ARRAYFORMULA 的情况下就可以做到这一点,但是,这个电子表格将被共享并包含许多其他公式,我只是不希望人们不得不从上面的行中剪切和复制并将公式全部搞砸。我正在与非技术人员打交道,他们需要一些东西才能非常简单地工作。

示例: https ://docs.google.com/spreadsheets/d/1FqndR4oTm_uaO7aUxYSgb3p0bZ6yBz-KnjUAD8kctd4/edit?usp=drivesdk

标签: arraysgoogle-sheetsgoogle-sheets-formulatransposecumulative-sum

解决方案


利用:

=ARRAYFORMULA(COUNTIFS(A4:A, A4:A, ROW(A4:A), "<="&ROW(A4:A)))

在此处输入图像描述


撤销:

=ARRAYFORMULA(MMULT(TRANSPOSE((SEQUENCE(COUNTA(B4:B))<=
 SEQUENCE(1, COUNTA(B4:B)))*IF(INDIRECT("B4:B"&COUNTA(B4:B)+ROW(B4)-1)=1, 1)), 
 SEQUENCE(COUNTA(B4:B))^0))

在此处输入图像描述


推荐阅读