反饋已提交
網絡繁忙
FineReport的儲存格具有擴展屬性,一些報表中的值需要先定位擴展後的儲存格再進行運算才能得到。為了讓使用者可以進行這類運算,可以在公式中使用層次座標來定位儲存格。
層次座標分為兩大類:相對座標,絕對座標。本文會分別介紹兩類層次座標的基本格式和使用場景。
在使用層次座標的時候,可以設定條件來篩選儲存格。
先申明被定位的目標儲存格,方括號中的條件指定了在縱向和橫向上的偏移,透過左父格(以及目標儲存格本身)指定縱向的偏移,透過上父格(以及目標儲存格本身)指定橫向的偏移。
偏移的格式為1個父格對應1個偏移值,中間用冒號連接。如果用多個左父格指定縱向的偏移,用逗號隔開;如果用多個上父格指定橫向的偏移,也用逗號隔開。
縱向偏移和橫向偏移透過分號區分,分號左側是縱向的偏移,右側是橫向的偏移。如果只有縱向的偏移而沒有橫向的偏移,可以省略分號;但如果只有橫向的偏移而沒有縱向的偏移,不可省略分號。
相對座標中的偏移量,必須帶上+和-,表示向下(右)和向上(左)的偏移。
假設A1、B1、C1中的資料列都縱向擴展,A1是B1的父格,B1是C1的父格。填入以下公式的儲存格在第1行,且左父格為C1。
公式
傳回值
A1[A1:+1]
A1[A1:-1]
A1縱向擴展出來的上1個值。
C1[B1:-1]
B1縱向擴展出來的上1個值對應的C1的值。
假設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的值。
絕對座標的格式和相對座標類似,區別在於,冒號後面的值代表絕對的位置,而非相對的偏移位置。
如果絕對位置為正數,表示第幾個,不加+(建議不加+,從而和相對座標區別開來);如果絕對位置為負數,複數前要加上!,表示倒數第幾個。
假設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的值。
假設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的擴展方向擴展。
新建資料庫查詢。
使用SQL。
拖入資料列。將【ds1】中的供應商ID分別拖入A2、B2,在A1、B1中輸入表頭。
在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。
在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个。
在Sheet1中檢視預覽結果,可以對比上述步驟中的預期結果進一步理解公式的含義。
拖入表格STSCORE。
新建一個Sheet。在Sheet2中,將【ds2】的【COURSE】和【GRAGE】拖入B1和B2,擴展方向改為橫向。在A1和A2中輸入表頭。
在B3和B4中插入公式,在A3和A4中輸入文字,文字的內容用來指示B3和B4中的公式。
B3
B2[;B1:-1]
獲取上一個COURSE的GRADE。
B2[;B2:+1]
獲取下一個COURSE的GRADE。
在C7中插入公式,在C6中輸入文字,文字的內容用來指示C7中的公式。
C7
B2[;B1:!-1]
獲取最後一個COURSE的GRADE。
在Sheet2中檢視預覽結果,可以對比上述步驟中的預期結果進一步理解公式的含義。
新建一個Sheet。在Sheet3中,將【ds2】的【CLASSNO】拖入B2,擴展方向為縱向;將【ds2】的【COURSE】拖入C1,擴展方向為橫向;將【ds2】的【GRADE】拖入C2,將【資料設定】設定為【匯總】→【求和】。
在E6中插入公式,在E5中輸入文字,文字的內容用來指示E6中的公式。
預期結果预期结果
E6
C2[B2:!-2;C1:2]
獲取倒數第二個班級的第二個Course的Grade,即Class3的Math總分)。
在Sheet3中檢視預覽結果,可以對比上述步驟中的預期結果進一步理解公式的含義。
下載範本。
Hierarchical Cell Indexing.7z
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉