Excel (Google Sheets) 公式仅在当前行之前查找范围内的值

Excel (Googel Sheets) formula to find value within range prior to current row only

  A|B|C|D|E  
------------------------------------  
#|Splr|Payment|Total|Bill|Balance  
------------------------------------  
1|S1|10,000|10,000| 8,000|2,000  
2|S1|12,000|14,000|15,000|-1,000  
3|S2|10,000|10,000| 9,500|500  
4|S1| 9,000| 8,000| 7,500|500  
5|S2| 8,000| 8,500| 6,500|2,000  

B       Current Payment     
C       B + E (of same supplier (last record in previous rows if any))  
D       Current Bill        
E       Total Bill  

我正在搜索一个公式(C 列中公式的 E 部分)来查找当前供应商到当前行的最后余额


编辑:实施您提供的公式(稍作修改)后,我面临着每个新供应商的#Ref 问题。 我在第 2 行(即第一个数据行)上使用的公式是 "=ArrayFormula(IF(ISNUMBER(INDEX($F1:F$2,MAX(IF(A2=$A1:A$2,ROW($A1:A $2)-1,0)))),$F1,0))" 而在第二行及以后是 "=ArrayFormula(IF(ISNUMBER(INDEX($F$2:F2,MAX(IF(A3=$A$2:A2,ROW($A$2:A2)-1,0)) )),$F2,0))" 其中 $F1 替换为 $F$Row#,$A1 替换为 $A$RowNo


下面的公式,将查找当前行的供应商,查看具有相同供应商的所有先前行,具有相同供应商的最低行(当前行之前),然后 return余额(E 列中的值)

在此示例中,公式将位于数据的第 6 行,或计算 table headers 后电子表格的第 7 行。

这也是一个数组公式,这意味着您必须将其粘贴到单元格中,然后点击 ctrl+shift+enter 提交公式。

=INDEX($E:E6,MAX(IF(A7=$A:A6,ROW($A:A6)-1,0)))

然后您可以将该单元格复制并粘贴到 table。

幸运的是,我已经使用 INDIRECT() 解决了我的问题。我使用的公式是 {=ArrayFormula(IFERROR(LOOKUP(2,1/(INDIRECT("A2:A"&ROW()-1)=A7),INDIRECT("E2:E"&ROW()-1)) ,0))}

此处 INDIRECT() 用于强制条件范围达到当前单元格的上一行。