Power Query中使用List.Accumulate函數做分組操作

在Excel中對於分數評級,最簡單快捷的辦法就是用VLOOKUP函數了,評級的條件可以使用做好的評級表格,也可以直接用數組寫在公式內部。

Power Query中使用List.Accumulate函數做分組操作

或者這樣:

Power Query中使用List.Accumulate函數做分組操作

在Power Query中我們用什麼辦法才能做到這樣的分級呢?

List.Accumulate

List.Accumulate函數每次從給定的數組中取出兩位:

  • x:起始值
  • y:終止值

這是不是正符合我們的要求,只要我們的分數落在xy之間,我們就可以給出一個評級,我們來測試一下:

我們先做一個評級標準的表格:

Power Query中使用List.Accumulate函數做分組操作

我們用分數這一列來做為List.Accumulate函數的第一參數,第二參數從0開始:

Power Query中使用List.Accumulate函數做分組操作

可能看不太清楚,我把自定義列的公式複製出來:

List.Accumulate(T[分數],0,(x,y)=>if [分數]>=x and [分數]

就像我們開始時描述的一樣,[分數]>=x and [分數]

有了這個結果再來返回文字描述就簡單多了。

List.PositionOf

List.PositionOf函數可以返回一個列表元素在列表中的位置,然後我們根據這個位置找到對應的文本描述:

Power Query中使用List.Accumulate函數做分組操作

我們來看具體的公式:

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中的數據處理方式其實更直接。

"


分享到:


相關文章: