反饋已提交

網絡繁忙

層次座標概念

一、概述

  1. FineReport的儲存格具有擴展屬性,一些報表中的值需要先定位擴展後的儲存格再進行運算才能得到。為了讓使用者可以進行這類運算,可以在公式中使用層次座標來定位儲存格。

  2. 層次座標分為兩大類:相對座標,絕對座標。本文會分別介紹兩類層次座標的基本格式和使用場景。

  3. 在使用層次座標的時候,可以設定條件來篩選儲存格。

二、相對座標的語法

1
基本格式。
  1. 先申明被定位的目標儲存格,方括號中的條件指定了在縱向和橫向上的偏移,透過左父格(以及目標儲存格本身)指定縱向的偏移,透過上父格(以及目標儲存格本身)指定橫向的偏移。

  2. 偏移的格式為1個父格對應1個偏移值,中間用冒號連接。如果用多個左父格指定縱向的偏移,用逗號隔開;如果用多個上父格指定橫向的偏移,也用逗號隔開。

  3. 縱向偏移和橫向偏移透過分號區分,分號左側是縱向的偏移,右側是橫向的偏移。如果只有縱向的偏移而沒有橫向的偏移,可以省略分號;但如果只有橫向的偏移而沒有縱向的偏移,不可省略分號。

  4. 相對座標中的偏移量,必須帶上+和-,表示向下(右)和向上(左)的偏移。

2021-07-22_9-19-55.png

2
公式示例:指定縱向的偏移。
  1. 假設A1、B1、C1中的資料列都縱向擴展,A1是B1的父格,B1是C1的父格。填入以下公式的儲存格在第1行,且左父格為C1。

公式

傳回值

A1[A1:+1]

A1縱向擴展出來的下1個值。

A1[A1:-1]

A1縱向擴展出來的上1個值。

C1[B1:-1]

B1縱向擴展出來的上1個值對應的C1的值。

3
公式示例:指定橫向的偏移。
  1. 假設A1、A2、A3中的資料列都橫向擴展,A1是A2的父格,A2是 A3的父格。填入以下公式的儲存格在第A列,且上父格為A3。

公式

傳回值

A1[;A1:+1]

A1橫向擴展出來的後1個值。

A1[;A1:-1]

A1橫向擴展出來的前1個值。

A3[;A2:-1]

A2橫向擴展出來的前1個值對應的A3的值。

三、絕對座標的語法

1
基本格式。
  1. 絕對座標的格式和相對座標類似,區別在於,冒號後面的值代表絕對的位置,而非相對的偏移位置。

  2. 如果絕對位置為正數,表示第幾個,不加+(建議不加+,從而和相對座標區別開來);如果絕對位置為負數,複數前要加上!,表示倒數第幾個。

2021-07-22_9-21-32.png

2
公式示例:指定縱向的位置。
  1. 假設A1、B1、C1中的資料列都縱向擴展,A1是B1的父格,B1是C1的父格。

公式

傳回值

A1[A1:1]

A1縱向擴展出來的第1個值。

A1[A1:!-1]

A1縱向擴展出來的最後1個值。

C1[B1:1]

B1縱向擴展出來的第1個值對應的C1的值。

C1[A1:2,B1:3]

A1縱向擴展出來的第2個值對應的B1擴展出來的第3個值對應的C1的值。

3
公式示例:指定橫向的位置。
  1. 假設A1、A2、A3中的資料列都橫向擴展,A1是A2的父格,A2是A3的父格。

公式

傳回值

A1[;A1:1]

A1橫向擴展出來的第1個值。

A1[;A1:!-1]

A1橫向擴展出來的最後1個值。

A3[;A2:1]

A2橫向擴展出來的第1個值對應的A3的值。

A3[;A1:2,A2:3]

A1橫向擴展出來的第2個值對應的A2擴展出來的第3個值對應的A3的值。

四、其他常用用法

場景

公式

傳回值

絕對座標

A1[!0]

A1擴展出來的所有值。

傳回值的型別是陣列。

絕對座標

A1[!0]{A1!=3}

A1擴展出來的不等於3的所有值。

傳回值的型別是陣列。

相對座標

$A1

A1擴展後對應位置上的值,跟隨A1的擴展方向擴展。

五、定位縱向擴展的儲存格

1
新建資料集【ds1】。
  1. 新建資料庫查詢。

  2. 使用SQL。

2021-07-22_9-39-40.png

2
使用相對座標。
  1. 拖入資料列。將【ds1】中的供應商ID分別拖入A2、B2,在A1、B1中輸入表頭。

  2. 在C2:F2中插入公式,在C1:F1中輸入文字,文字的內容用來指示C2:F2中的公式。

儲存格

插入公式

預期結果

C2

A2[A2:-1]

上一個A2的值,也就是上一個供應商ID。

D2

B2[B2:-1]

上一個B2的值,也就是上一個產品名稱。

這邊每個組別是單獨計算的(共享同一個A2的值算作一個組),所以每組內的第1個值會為空。

E2

if(&B2>1,B2[B2:-1],B2[A2:-1,B2:!-1])

如果&B2>1也就是組內序號不為1的時候,就執行B2[B2:-1],獲取上一個產品名稱;如果組內序號為1的話,就執行B2[A2:-1,B2:!-1],獲取上一個供應商ID的最後一個產品名稱。(這裡是相對座標和絕對座標混用了)

F2

A2[A2:+1]

下一個A2的值,也就是下一個供應商ID。

2021-07-22_9-48-07.png

3
使用絕對座標。
  1. 在B4:B7中插入公式,在A4:A7中輸入文字,文字的內容用來指示B4:B7中的公式。

单元格

插入公式

预期结果

B4

A2[A2:2]

A2扩展的第2个值,也就是第二个供應商ID。

B5

B2[A2:2,B2:1]

第二个供應商ID中的第一个產品名稱。

B6

B2[!0]

所有的產品名稱。

B7

B2[!0]{A2!=2}

所有產品名稱 ,但对应的供應商ID不是第2个。

2021-07-22_9-52-38.png

4
資料分析預覽。
  1. 在Sheet1中檢視預覽結果,可以對比上述步驟中的預期結果進一步理解公式的含義。

2021-07-22_9-53-12.png

2021-07-22_9-55-37.png

六、定位橫向擴展的儲存格

1
新建資料集【ds2】。
  1. 新建資料庫查詢。

  2. 拖入表格STSCORE。

2021-07-22_10-43-17.png

2
設計報表。
  1. 新建一個Sheet。在Sheet2中,將【ds2】的【COURSE】和【GRAGE】拖入B1和B2,擴展方向改為橫向。在A1和A2中輸入表頭。

2021-07-22_10-00-56.png

3
使用相對座標。
  1. 在B3和B4中插入公式,在A3和A4中輸入文字,文字的內容用來指示B3和B4中的公式。

单元格

插入公式

預期結果

B3

B2[;B1:-1]

獲取上一個COURSE的GRADE。

B4

B2[;B2:+1]

獲取下一個COURSE的GRADE。

2021-07-22_10-03-40.png

4
使用絕對座標。
  1. 在C7中插入公式,在C6中輸入文字,文字的內容用來指示C7中的公式。

单元格

插入公式

預期結果

C7

B2[;B1:!-1]

獲取最後一個COURSE的GRADE。

2021-07-22_10-06-30.png

5
資料分析預覽。
  1. 在Sheet2中檢視預覽結果,可以對比上述步驟中的預期結果進一步理解公式的含義。

2021-07-22_10-24-52.png

七、定位雙向擴展的儲存格

1
設計報表。
  1. 新建一個Sheet。在Sheet3中,將【ds2】的【CLASSNO】拖入B2,擴展方向為縱向;將【ds2】的【COURSE】拖入C1,擴展方向為橫向;將【ds2】的【GRADE】拖入C2,將【資料設定】設定為【匯總】→【求和】。

2021-07-22_10-32-43.png

2021-07-22_10-35-23.png

2
使用絕對座標。
  1. 在E6中插入公式,在E5中輸入文字,文字的內容用來指示E6中的公式。

单元格

插入公式

預期結果预期结果

E6

C2[B2:!-2;C1:2]

獲取倒數第二個班級的第二個Course的Grade,即Class3的Math總分)。

2021-07-22_10-37-45.png

3
資料分析預覽。
  1. 在Sheet3中檢視預覽結果,可以對比上述步驟中的預期結果進一步理解公式的含義。

2021-07-22_10-39-10.png

下載範本。

Hierarchical Cell Indexing.7z

附件列表


主題: 報表專題
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉