反饋已提交
網絡繁忙
有時使用者希望在同一張報表中,可以實現分組動態排序且互不影響的效果。例如當點選華東的銷量時,華東的銷量改變排序,華北的銷量不受到影響;當點選華北的銷量時,華北的銷量改變排序,華東的銷量不受到影響。如下圖所示:
第一步:根據「地區」的數量定義成一個陣列長度,用陣列中的元素儲存對應分組的升降冪(正數 1 為升冪,負數 -1 為降冪)。
第二步:當點選銷量時,先刪除陣列中點選位置對應的值,再將變為相反數的值插入到陣列中對應的位置。
第三步:設定擴展後排序,先獲取點選位置對應的陣列中的值,再乘以「銷量」所在分組中儲存格的值,按正負數的升冪改變排序。
建立普通報表,建立資料庫查詢 ds1,寫入 SQL 語句:SELECT * FROM 銷量 where 產品='蘋果汁'。
合併 A1~D1 儲存格,將「地區」資料欄拖入儲存格 A1,A2~D2 儲存格輸入如下圖所示標題,A3~D3 儲存格拖入對應的資料欄。
將 A3 儲存格左父格設定為 A1。自行設定表格樣式,最終效果如下圖所示:
選中 D2 儲存格,給其新增一個「超級連結>動態參數」,參數名為 a,參數值選擇「公式」類型,輸入公式:JOINARRAY(ADD2ARRAY(REMOVEARRAY(IF(LEN($a) = 0, RANGE(COUNT(A1[!0]))*0, SPLIT($a, ",")), &A1, 1), IF(INDEXOFARRAY(SPLIT($a, ","), &A1) = 1, -1, 1), &A1),",")
動態參數的作用是點選「銷量」時,能按照公式定義的規則傳回參數,再根據參數進行排序。
公式說明如下:
1)步驟一:IF(LEN($a) = 0, RANGE(COUNT(A1[!0]))*0, SPLIT($a, ","))
2)步驟二:REMOVEARRAY(步驟一結果, &A1, 1)
3)步驟三:ADD2ARRAY(步驟二結果, IF(INDEXOFARRAY(SPLIT($a, ","), &A1) = 1, -1, 1), &A1)
4)步驟四:JOINARRAY(步驟三結果,",")
步驟如下圖所示:
選中 A3 儲存格,設定「擴展後排序」,選中「升冪」,輸入公式為:D3 * INDEXOFARRAY(split($a, ","), &A1)。
INDEXOFARRAY(split($a, ","), &A1) 表示使用 &A1 獲取點選的分組的位置,傳回用逗號分割的字串陣列中的這個位置的值,即為 1 或 -1。
再用 D3 儲存格的值乘以 1 或 -1,按正數升冪時,銷量欄即為「升冪」,按負數升冪時,銷量欄即為「降冪」。
儲存報表,點選「分頁預覽」,效果與 1.1 節預期效果一致。
App 端和 HTML5 端均支援,效果如下圖所示:
點選下載範本:分組內排序互不干擾.cpt
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙