今天的需求有點燒腦,但是學會合理設置輔助列,問題就變得非常容易解決。
整個年級的成績表,表格的布局是以班級為單位,列出所有人的成績,每個班級下面有個匯總成績。
如果需要在不改變表格布局的情況下,給每個班級的成績按降序或升序排序,難道要分別選中每個班級的區域,一次次排序?有沒有辦法一次性排序?
案例:
在下圖 1 中,如何分別對每個班級的成績按從高到低和從低到高排序?
解決方案 1:按分類降序排序
1. 在「班級」前面增加輔助列,按如下方式構建數據:在每個分類的最後一行和分類匯總前面填寫「1」
2. 在 E2 單元格輸入以下公式,下拉複製公式:
=SUM(A2:$A$18)
公式釋義:
這個公式是用於計算 A 列的當前行至末行區域的總和請注意:第一個參數需要相對引用,而第二個參數要絕對引用,這樣向下拖動公式的時候,起始行會動態變化,而末行固定不變
3. 將 F 列作為排序輔助列,在 F2 中輸入以下公式,向下拖動複製公式:
=E2*10^6+D2
公式釋義:
E2*10^6:用 E 列的數值乘以一個數量級足夠大的數字,此處為 10 的 6 次方,這樣可以使得需要排序的區域處於同一個大的數據區間=E2*10^6+D2:用上述數據加上分數,用於排序
4. 現在只要對 F 列執行降序排序,就可以在不改變班級列表及小計的情況下,按班級內的排名,將分數從高到低排序:
選中 B 至 F 列的表格區域 --> 選擇菜單欄的「數據」-->「排序」
在彈出的排序對話框中,按以下方式設置 --> 點擊「確認」:
勾選「數據包含標題」主要關鍵字:選擇「排序列」排序依據:選擇「數值」次序:選擇「降序」
這就是排序後的效果,在保持表格布局不變的前提下,實現了每個班級的降序排序。
解決方案 2:按分類升序排序
1. 要按升序排序的話,最大的區別在於「班級」前面輔助列的數據構建上:在每個分類的第一行數據前面填寫「1」
2. 在 E2 單元格輸入以下公式,下拉複製公式:
=SUM($A$2:A2)
公式釋義:
計算 A 列的起始行至當前行區域的總和請注意:第一個參數需要絕對引用,而第二個參數要相對引用,這樣向下拖動公式的時候,起始行固定不變,而末行會動態變化
3. 將 F 列作為排序輔助列,在 F2 中輸入以下公式,向下拖動複製公式:
=E2*10^6+D2
公式釋義:
跟降序的公式原理一樣,給需要排序的區域設置不同的數據區間;將每個數據區間加上分數,用於排序
4. 現在只要對 F 列執行升序排序,就可以在不改變班級列表及小計的情況下,按班級內的排名,將分數從低到高排序:
選中 B 至 F 列的表格區域 --> 選擇菜單欄的「數據」-->「排序」
在彈出的排序對話框中,按以下方式設置 --> 點擊「確認」:
勾選「數據包含標題」主要關鍵字:選擇「排序列」排序依據:選擇「數值」次序:選擇「升序」
同樣,在保持表格布局不變的前提下,實現了每個班級的升序排序。