1. 程式人生 > >如何實現按照計算後的結果排序

如何實現按照計算後的結果排序

在做分組報表統計時,我們經常會被要求按照資料升序或降序排序。在 group 函式的引數中,我們可以指定分組後對組的排序表示式,這樣報表展現時能夠直接根據該表示式進行排序了。我們先來看一個簡單的例子,如下圖所示:

imagepng

其中,A1 表示式為:=ds1.group(貨主地區, 貨主地區!=null; 貨主地區;ds1.sum( 數量 * 單價))

意思是:在根資料集 ds1 中取出貨主地區不為空的資料,並按照貨主地區進行分組,分組後求出每組的總價 sum(數量 * 單價),然後按照這個彙總值對組進行升序排列。

分組排序後的效果如下圖所示:

imagepng

但是有些時候,某些單元格的資料可能是通過其他單元格計算後的結果,這樣就無法通過 group 函式的引數來指定了,例如下圖這樣:

imagepng

報表 D2 單元格的資料是根據前兩個單元格相減計算後的結果,這時就無法通過 group 函式來完成排序控制操作了,那麼有什麼方法能夠實現依據這樣計算出來的單元格結果進行排序呢?

(苦思冥想中····)額,我可以做一個排名,但是排序要怎麼做呢?

Bingo··答對了一半,就是需要先排名哦。

下面由我給大家詳細講解一下實現流程:

1)首先按照上圖中展現的報表格式,在 A 列左邊和下邊分別插入行、列,並且給報表追加一列。形成如下如所示的樣式:

imagepng

2)然後在 A3 中寫表示式 =to(1,count(B2{}))。

    3)在 F2 單元格中按照 E2 單元格的資料計算排名, 寫入表達 =count(E2[`0]{E2<$E2})+1。如下圖所示:

imagepng

A3 中的表示式是為了控制該行進行縱向擴充套件,有幾個地區就擴充套件幾行,這樣報表在展現時就會在下方增加一片資料區域,並且第一列是 1、2、3 這種編號形式。而 F2 單元格則是根據實際金額做了對應的排名,出來的值也是 1、2、3 的形式。這樣,就可以根據排名對資料進行選擇了。

4)在 B3 單元格中寫入表示式:=B2{F2==$A3}。

這個表示式的意思是:從 B2 單元格中取數,但是取數時加上了限定條件:F2(排名)單元格的值等於這一行的 A3(序號)單元格的值,也就是從 B2 單元格中按照排名順序取出對應的地區放在 B3 單元格中。預覽的效果如下圖所示:

imagepng

其餘 C3、D3、E3 幾個單元格的情況類似:

imagepng

然後再將沒用的行列隱藏掉,就能夠實現我們的的需求了,即按照單元格表示式的計算結果進行排序展現,結果如下:

imagepng

【總結一下:】

在上面的示例中,表示式:=B2{F2==$A3} 是【層次座標】的用法。主要是在進行報表設計時,單元格尚未進行擴充套件,但是其它某些單元格的表示式往往需要對這個單元格擴充套件後的單元格進行精確定位並運算。

  【層次座標】的具體使用方法可以看一下我們的教程裡面的 12.3.2 章節。

好啦,<( ̄▽ ̄)/> 按照上面操作步驟,根據計算後的結果排序就完成啦。小夥伴們是否學會了呢?趕緊下載我們的潤乾報表設計器操練起來吧!



作者:Spoiled
連結:http://c.raqsoft.com.cn/article/1533716965785?r=xiaohuihui
來源:乾學院
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。