如何使用帶有另一列的鍵的函數來完成一列

如何使用帶有另一列的鍵的函數來完成一列

我正在嘗試計算數千名學生的加權平均值。

我可以依序為各個學習者執行此操作(求和)。

問題是我不知道如何同時為數千名學生做到這一點。

每個學生的成績數不同,每個年級的權重也不同。

我發現的只是根據學生代碼對資料進行排序。只要密鑰相同,試圖使給定的公式對我有意義,它就會重複。

請幫助我如何做到這一點

在此輸入影像描述

答案1

至少有兩種簡單的方法可以做到這一點。兩者都「過濾」所需的值,然後進行算術運算。

一種是直接的,使用SUMPRODUCT()您看起來滿意的值,但對值清單進行過濾,以便選擇合適的項目進行處理。它用於FILTER()選擇符合條件的行,然後FILTER()再次用於從內部結果中選擇列FILTER()

=SUMPRODUCT(  FILTER(  FILTER(B1:D12, B1:B12=I1),  {0,1,0}),  FILTER(  FILTER(B1:D12, B1:B12=I1),  {0,0,1}))

如所呈現的公式假設找出輸入單元格為 I1 供學生尋找。當然,列的範圍是數千,而不是 12。

然而,為了處理“THOUSANDS”,可以根據需要簡單地使用第一列,只需將位址變更為一個範圍即可。或者,如果一個(看起來可能)在說“數千”時也表示“全部”,則可以使用UNIQUE()其第三個參數集來FALSE提取這些“數千”中每個學生姓名的單個實例的列表。然而,即使創建該數組,似乎也不能僅用於I1#捕獲整個結果。我認為這是由於查找範圍的長度不同以及UNIQUE().

FILTER()實際上為其中包含的行建立一個 TRUE/FALSE 結果清單。這裡的「技巧」是,您可以透過直接鍵入該清單來取得所需的列(例如:{0,1,0} 以選擇第二列)。儘管您絕對可以透過使公式動態化的方式來建立這些數組,但硬編碼實際上很有用。在這裡,永遠不需要。

請記住,可以用來INDEX()選擇要用於SUMPRODUCT()的陣列的列。就我個人而言,我認為這更容易,但沒有太大區別。

就這麼多。一種更老式的方法,適用於相當舊版本的 Excel,只需進行範圍比較來「過濾」資料並將其呈現給SUMPRODUCT()

=SUMPRODUCT(  IF(B1:B12=I1, C1:C12, 0),  IF(B1:B12=I1, D1:D12, 0)  )

函數中的每個數組都由 ' 提供,IF()它只是將查找範圍與該行的 I 列單元格進行比較(是的,這兩種方法都不是SPILL公式,因此您必須向下複製到I 列中延伸的範圍UNIQUE())並傳回將兩列資料放入函數的參數中。

直接、清晰、簡單,多年來易於理解和維護。應該很快,因為它使用簡單的 TRUE/FALSE 測試,而不是函數。這兩種方法都沒有使用SPILL其列中的功能SUMPRODUCT(),因此兩者都沒有優勢。

但這個僅使用您顯然熟悉的功能,所以為什麼不呢?

實際上,令人討厭的部分是列出獨特的學生名單,SPILL以便該任務也能很好地發揮作用。

相關內容