我正在使用以下函式來計算特定行的總和,如果在特定行的單元格中存在值,我想修改它以對不同的行求和,因為它正在遍歷序列。
=LET(duration, SEQUENCE(1,E2,COLUMN(K:K)),
projectedRevenueArray,INDEX($1:$11,{4;5;11},duration),
projectedRevenueRowSum, LAMBDA(x,INDEX(x,1) INDEX(x,2)-INDEX(x,3)),
actualRevenueArray,INDEX($1:$11,{6;11},duration),
actualRevenueRowSum, LAMBDA(x,INDEX(x,1)-INDEX(x,2)),
arrayToUse, IF(1, projectedRevenueArray,actualRevenueArray),
rowSumToUse, IF(1, projectedRevenueRowSum,actualRevenueRowSum),
BYCOL(arrayToUse,rowSumToUse))
現在我創建了一個固定為 1 的 IF 陳述句用于測驗目的,如果我將 1 更改為 0,那么它使用不同的陣列和 Sum 并按預期作業。此函式位于單元格 K12 中,并對 E2 中指定的月份的行數求和。
如果我僅在單元格 K6 中輸入一個測驗值,我想在計算中使用該行,而不是該列的第 4 行和第 5 行 - 一串列示一個月。
我嘗試了以下方法,但這使得所有列總和第 6 行,而不僅僅是 K 列:
arrayToUse, IF(K$6=0, projectedRevenueArray,actualRevenueArray),
rowSumToUse, IF(K$6=0, projectedRevenueRowSum,actualRevenueRowSum),
如果有幫助,這是我正在使用的資料示例:
| 1月20日 | 2月20日 | 20 年 3 月 | 4月-20日 | 5月20日 | 6月20日 | |
|---|---|---|---|---|---|---|
| 在職員工 | 4 | 8 | 10 | 10 | 8 | 4 |
| 額外人員 | ||||||
| 專案收入 | 80,000 英鎊 | 160,000 | 200,000 | 200,000 | 160,000 | 80,000 |
| 收入調整 | ||||||
| 實際收入 | 15,000 英鎊 | |||||
| 工資成本 | 14,000 英鎊 | 26,208 英鎊 | 34,292 英鎊 | 34,292 英鎊 | 28,875 英鎊 | 14,167 英鎊 |
| 軟體成本 | 0 英鎊 | 0 英鎊 | 0 英鎊 | 0 英鎊 | 0 英鎊 | 0 英鎊 |
| 商業成本 | 37 英鎊 | 37 英鎊 | 37 英鎊 | 37 英鎊 | 37 英鎊 | 37 英鎊 |
| 成本調整 | ||||||
| 總成本 | 14,037 英鎊 | 26,246 英鎊 | 34,329 英鎊 | 34,329 英鎊 | 28,912 英鎊 | 14,204 英鎊 |
| 專案利潤 | 963 英鎊 | -26245.74074 | -£34,329.07 | -34329.07407 | -28912.40741 | -14204.07407 |
uj5u.com熱心網友回復:
Lambda 使用不正確,您從未定義(x),因此您需要執行以下操作:
LAMBDA(x,INDEX(x,1) INDEX(x,2)-INDEX(x,3))(projectedRevenueArray)
定義了這種方式x,但在這里 LET 會更好:
LET(x,projectedRevenueArray,INDEX(x,1) INDEX(x,2)-INDEX(x,3))
然后 BYCOL 也被濫用了。VSTACK 是要使用的函式。
現在到實際的問題。您需要將一個與資料大小相同的陣列傳遞給 if:
IF(--INDEX($1:$11,6,duration)=0, projectedRevenueArray,actualRevenueArray)
我們一起得到:
=LET(duration, SEQUENCE(1,E2,COLUMN(K:K)),
projectedRevenueArray,INDEX($1:$11,{4;5;11},duration),
projectedRevenueRowSum, LET(x,projectedRevenueArray,INDEX(x,1) INDEX(x,2)-INDEX(x,3)),
actualRevenueArray,INDEX($1:$11,{6;11},duration),
actualRevenueRowSum, LET(x,actualRevenueArray,INDEX(x,1)-INDEX(x,2)),
arrayToUse, IF(--INDEX($1:$11,6,duration)=0, projectedRevenueArray,actualRevenueArray),
rowSumToUse, IF(--INDEX($1:$11,6,duration)=0, projectedRevenueRowSum,actualRevenueRowSum),
VSTACK(IFERROR(arrayToUse,0),rowSumToUse))

要僅回傳總和行,請使用:
=LET(duration, SEQUENCE(1,E2,COLUMN(K:K)),
projectedRevenueArray,INDEX($1:$11,{4;5;11},duration),
projectedRevenueRowSum, LET(x,projectedRevenueArray,INDEX(x,1) INDEX(x,2)-INDEX(x,3)),
actualRevenueArray,INDEX($1:$11,{6;11},duration),
actualRevenueRowSum, LET(x,actualRevenueArray,INDEX(x,1)-INDEX(x,2)),
IF(--INDEX($1:$11,6,duration)=0, projectedRevenueRowSum,actualRevenueRowSum))

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/522024.html
標籤:擅长excel公式
