Power Query中把一個表格分成多個表格的辦法

例如這樣一個問題,學校運動會的報名表,格式如下:

Power Query中把一個表格分成多個表格的辦法

我們需要按照比賽項目分成8個表格,每個表中又要按照性別年級分組:

Power Query中把一個表格分成多個表格的辦法

Power Query能不能做到?

如果你掌握了Power Query的兩個小技能,你就能夠按照上述的要求來拆分表格:



我就不帶你去複習了,自己點開看就可以了,我們來說這個表格的處理過程:

數據整理

目前這個表格肯定不適合做數據源,我們要做降維處理,逆透視,另外設計班級順序排列,我們先做個小表放在邊上備用:

Power Query中把一個表格分成多個表格的辦法

我們後期需要用這個數字來排列順序,先做好準備。

逆透視:

我習慣用Power BI Desktop中的Power Query因為能夠智能聯想輸入,寫函數比較方便,用Excel中的Power Query也是一樣的,不過你最好把網頁打開,放到Power Query官方文檔這裡,方便查找M函數。從文件,把班級這個表和報名表加載到Power Query中:

Power Query中把一個表格分成多個表格的辦法

刪除其他沒用的列,選中運動項目列,逆透視,結果如下表:

Power Query中把一個表格分成多個表格的辦法

自定義列合併班級姓名:

Power Query中把一個表格分成多個表格的辦法

提取年級:我們直接用班級列來提取

Power Query中把一個表格分成多個表格的辦法

合併查詢年級序號:因為漢字排序會亂,數值排序才準確

Power Query中把一個表格分成多個表格的辦法

然後我們用這個新的序號升序排序一下:

Power Query中把一個表格分成多個表格的辦法

注意,我在每一步的處理過程中都會把不用的列隨手刪除。

分組

先做一個大的分組,直接按照運動項目分組即可,聚合選擇所有行:

Power Query中把一個表格分成多個表格的辦法

這時候我們就得到了8個表,當然這八個表還不是我們最終需要的表格:

Power Query中把一個表格分成多個表格的辦法

定義表格處理函數

我們需要取出其中一個表來做一個自定義函數,變成最終的那樣的表格,初學者到這裡就有點蒙,怎麼取出其中一個表,很簡單,建一個空查詢輸入:

=報名表[計數]{0}

Power Query中把一個表格分成多個表格的辦法

  • 報名表:總表
  • [計數]:引用的列的名稱
  • {0}:引用的行號,0代表第一行

我們要這個基礎上做分組編號,分組依據是性別與班級,我們之前講過,如果記不住添加索引這個函數,就先添加一列索引,複製這個函數備用:

Power Query中把一個表格分成多個表格的辦法

然後分組:

Power Query中把一個表格分成多個表格的辦法

這樣選擇之後,再來修改公式:

Power Query中把一個表格分成多個表格的辦法

把這部分用添加索引函數替換修改:

Power Query中把一個表格分成多個表格的辦法

然後對這個表展開做透視:透視列時選姓名班級那一列,聚合選不聚合

Power Query中把一個表格分成多個表格的辦法

透視結果如下:

Power Query中把一個表格分成多個表格的辦法

看到沒有這時年級順序是亂序的,我們用序號來做排序就可以了:

Power Query中把一個表格分成多個表格的辦法

可以整理一下,把序號列刪除:班級改成年級這樣基本符合我們的結果要求了。

Power Query中把一個表格分成多個表格的辦法

在這個查詢上右鍵創建函數:

Power Query中把一個表格分成多個表格的辦法

提示時點擊創建:

Power Query中把一個表格分成多個表格的辦法

輸入函數名稱:

Power Query中把一個表格分成多個表格的辦法

還會有個提示,點擊確定:

Power Query中把一個表格分成多個表格的辦法

Power Query中把一個表格分成多個表格的辦法

把參數T添加到下面兩個位置中,就可以了,其他的都不變。這個函數的作用就是把前面沒有處理好的表,轉換成結果表格。

使用函數修整表格

回到報名表自定義列引用函數處理表格:

因為原本計數列中的值就是表格,直接用來作為函數的參數

Power Query中把一個表格分成多個表格的辦法

這時候自定義裡面的八個表格,就是我們需要的表格了:

Power Query中把一個表格分成多個表格的辦法

最後一步,提取結果表格

還好項目不多,一個一個的提取就好了

Power Query中把一個表格分成多個表格的辦法

後面的只要複製第一個,修改行號就可以了:

Power Query中把一個表格分成多個表格的辦法

如果是在Excel中就要選擇加載哪個表格,哪個不加載。

這個方法雖然有點笨拙,但是項目少的情況下,還是可以達成目的的。


分享到:


相關文章: