根據另一列中的匹配以及第三列中第一次出現的不同值對一列中的值求和

根據另一列中的匹配以及第三列中第一次出現的不同值對一列中的值求和

我試圖找出基於公式的解決方案,根據匹配另一列中的值來對列中的值求和,但僅適用於第三列中不同出現的值。

這是一個簡化的電子表格範例:

這是一個非常基本的電子表格範例

我需要將F 列(A、B、C)中的字母與「字母」B 列相匹配,然後將「數字」C 列中的每個不同數字對「值」D 列中的值求和一次,並將該總和顯示在G 欄位「值的總和」。

正確的總和顯示在 G 列的儲存格中,但我沒有完成此操作的公式。任何幫助,將不勝感激!

答案1

對於這類問題,用數組來思考會有所幫助。

如果您可以獲得值(D 列)中的數字數組(列表),其中字母(B 列)等於「A」且數字已刪除重複項,則只需對數組求和即可得到答案。

這個表達式:

(B$2:B$12=F2)

True/False給出一個值數組,True其中 B 列 = "A".這個:

(C$2:C$12<>C$3:C$13)

True/False給出一個值數組,其中TrueC 列中的單元格不等於後面的單元格.因為您的重複項位於連續的儲存格中(如果情況並非總是如此,請在下面進行評論),因此該數組具有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

如果您能夠為資料新增列,則以下內容適用於給出的簡單範例:

  1. 添加公式以連接字母和數字。我在這個公式中使用了 A 列,即儲存格 A2:=B2&C2
  2. 將此公式向下拖曳以套用到儲存格 A2:A12
  3. 增加一個公式來測試每個字母和數字的串聯是否是第一個唯一的串聯。我已將 E 列用於此公式,即單元格 E2: =COUNTIF(A$2:A2,A2)
  4. 將此公式向下拖曳以套用到儲存格 E2:E12
  5. 在H2 中使用以下公式對字母匹配的值求和,但僅限於字母和數字的第一個串聯,即單元格G2: =SUMIFS($D$2:$D$12,$B$2:$B$12, F2 ,$E$2:$E$12,1)
  6. 將此公式向下拖曳以套用到儲存格 G2:G4

相關內容