答案1
對於這類問題,用數組來思考會有所幫助。
如果您可以獲得值(D 列)中的數字數組(列表),其中字母(B 列)等於「A」且數字已刪除重複項,則只需對數組求和即可得到答案。
這個表達式:
(B$2:B$12=F2)
True/False
給出一個值數組,True
其中 B 列 = "A".這個:
(C$2:C$12<>C$3:C$13)
True/False
給出一個值數組,其中True
C 列中的單元格不等於後面的單元格.因為您的重複項位於連續的儲存格中(如果情況並非總是如此,請在下面進行評論),因此該數組具有False
值的額外出現位置,並且本質上它會過濾掉重複項。將這兩個數組相乘:
(B$2:B$12=F2)*(C$2:C$12<>C$3:C$13)
將值轉換True/False
為 1 和 0,並給出一個數組,其中我們想要的位置為 1。使用此數組作為logical_test
中的IF()
,並將 D 列作為value_if_true
:
IF((B$2:B$12=F2)*(C$2:C$12<>C$3:C$13)>0,D$2:D$12)
傳回 D 列中存在 1 的值的數組,並散佈在False
存在 0 的位置。現在我們可以對數組求和。從 G2 向下填充的該公式給出瞭如下所示的結果。
=SUM(IF((B$2:B$12=F2)*(C$2:C$12<>C$3:C$13)>0,D$2:D$12))
請注意,這是一個陣列公式,必須使用 來輸入CTRLShiftEnter。
答案2
如果您能夠為資料新增列,則以下內容適用於給出的簡單範例:
- 添加公式以連接字母和數字。我在這個公式中使用了 A 列,即儲存格 A2:=B2&C2
- 將此公式向下拖曳以套用到儲存格 A2:A12
- 增加一個公式來測試每個字母和數字的串聯是否是第一個唯一的串聯。我已將 E 列用於此公式,即單元格 E2: =COUNTIF(A$2:A2,A2)
- 將此公式向下拖曳以套用到儲存格 E2:E12
- 在H2 中使用以下公式對字母匹配的值求和,但僅限於字母和數字的第一個串聯,即單元格G2: =SUMIFS($D$2:$D$12,$B$2:$B$12, F2 ,$E$2:$E$12,1)
- 將此公式向下拖曳以套用到儲存格 G2:G4