在Excel中對於分數評級,最簡單快捷的辦法就是用VLOOKUP函數了,評級的條件可以使用做好的評級表格,也可以直接用數組寫在公式內部。
或者這樣:
在Power Query中我們用什麼辦法才能做到這樣的分級呢?
List.Accumulate
List.Accumulate函數每次從給定的數組中取出兩位:
- x:起始值
- y:終止值
這是不是正符合我們的要求,只要我們的分數落在xy之間,我們就可以給出一個評級,我們來測試一下:
我們先做一個評級標準的表格:
我們用分數這一列來做為List.Accumulate函數的第一參數,第二參數從0開始:
可能看不太清楚,我把自定義列的公式複製出來:
List.Accumulate(T[分數],0,(x,y)=>if [分數]>=x and [分數]
就像我們開始時描述的一樣,[分數]>=x and [分數] 有了這個結果再來返回文字描述就簡單多了。
List.PositionOf
List.PositionOf函數可以返回一個列表元素在列表中的位置,然後我們根據這個位置找到對應的文本描述:
我們來看具體的公式:
T[評級]
{List.PositionOf(T[分數],
List.Accumulate(T[分數],0,(x,y)=>if [分數]>=x and [分數]
這樣就看的很清楚,T[評級]就是我們要找的評級文本列,後面的大括號就是行號,這個行號要通過List.PositionOf函數來獲得。
List.PositionOf函數:
- 第一參數用的就是T[分數],評級標準表格中的分數列
- 第二參數用的就是上面的List.Accumulate函數返回的結果
函數的含義就是返回List.Accumulate函數返回的結果在T[分數]這個列表中的位置。
我們最終得到的評級的結果與LOOKUP函數得到同樣的結果。
在Power Query中的數據處理方式其實更直接。
"閱讀更多 EXCEL數據處理與分析 的文章