答案1
答案2
如果您希望總和位於每個組的第一行,您可以使用以下公式:
=IF(AND(M2="Flag",M1<>"Flag"),SUM(K2:INDEX(K2:INDEX(K:K,MATCH(1E+99,K:K)+1),MATCH(TRUE,INDEX(M2:INDEX(M:M,MATCH(1E+99,K:K)+1)="",),0)-1)),"")
分解一下:
兩者INDEX(K:K,MATCH(1E+99,K:K)+1)
找到 K 列中最後一個有數字的儲存格,並將其設定為引用範圍的範圍。
然後在 Sum 中,我們從同一行中的儲存格開始,K2 是相對的,隨著公式向下移動,引用也會向下移動。範圍中的結束儲存格使用另一個 INDEX/MATCH 設定。
這次,我們要找 M 列中公式所在行的第一個為空的儲存格。
IF() 只是使我們想要要求和的任何部分成為一個空字串。
如果您希望它位於群組的底部,請使用以下數組公式:
=IF(AND(M2="Flag",M3=""),SUM(INDEX($K$1:K2,IFERROR(MATCH(2,IF($M$1:M2="",1)),1)+1):K2),"")
作為陣列公式,退出編輯模式時必須使用 Ctrl-Shift-Enter 進行確認。如果操作正確,Excel 將包含{}
公式。
這次我們正在尋找當前行上方 M 中的最後一個空白空間來設定第一個。
如果下面的行有“Flag”,則 IFERROR 將處理標題行。