反饋已提交

網絡繁忙

分組內排序互不干擾

一、概述

  1. 使用場景:有時使用者希望在同一張報表中,可以實現分組動態排序且互不影響的效果。

二、範例

1
資料準備。
  1. 建立普通報表,建立資料庫查詢,寫入 SQL 語句:SELECT * FROM 銷量 where 產品='蘋果汁'。如下圖所示。


image.png

 

2
報表設計。
  1. 設定表格樣式,如下圖所示。


image (1).png

 

3
設定動態參數。
  1. 選中 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),",") 。如下圖所示。

  2. 動態參數的作用是點擊【銷量】時,能按照公式定義的規則傳回參數,再根據參數進行排序。公式說明如下表所示。


image (2).png

 

步驟

公式

公式分解

說明

步驟一

IF(LEN(a) = 0, RANGE(COUNT(A1[!0]))*0, SPLIT(a, ",")) 

LEN($a) = 0

初始化報表時,參數 【a】 為空,即長度等於 0,第一次點擊後即被指派。

RANGE(COUNT(A1[!0]))*0

合計 A1 儲存格擴展的值,定義一個長度與值同等的陣列,乘以 0 是為了避免第一次點擊排序時參數值均發生變化。

SPLIT($a, ",")

參數在傳遞過程中會被自動處理成字串,所以這裏還要使用 【SPLIT】 將參數 【a】 用逗號分割成字串陣列。

步驟二

REMOVEARRAY(步驟一結果, &A1, 1)

REMOVEARRAY(步驟一結果, &A1, 1)

使用 【&A1】 獲取點擊的分組的位置,然後在步驟一傳回的陣列中,在該位置刪除一個值,並傳回刪除後的陣列。即刪除了陣列中點擊位置對應的值。

步驟三

ADD2ARRAY(步驟二結果, IF(INDEXOFARRAY(SPLIT($a, ","), &A1) = 1, -1, 1), &A1)

INDEXOFARRAY(SPLIT($a, ","), &A1) 

使用 【&A1】 獲取點擊的分組的位置,傳回用逗號分割的字串陣列中的這個位置的值。

IF()

使用 【IF】 來判斷陣列的值,用 【1】 和 【-1】 達到變換順序的目的。即每次點擊都將原值變為相反值。

ADD2ARRAY()

使用 【&A1】 獲取點擊的分組的位置,在步驟二傳回的陣列中的該位置,插入變為相反值陣列中的所有元素,再傳回該陣列。

步驟四

JOINARRAY(步驟三結果,",")

JOINARRAY(步驟三結果,",")

動態參數不能傳回陣列型別的陣列,所以需要使用陣列函式將步驟三結果轉化成一個由逗號作為分隔符的字串。

 

4
設定擴展後排序。
  1. 選中 A3 儲存格,設定【擴展後排序】,選中【升冪】,輸入公式:D3 * INDEXOFARRAY(split($a, ","), &A1)。

  2. 【INDEXOFARRAY(split($a, ","), &A1) 】表示使用 【&A1】 獲取點擊的分組的位置,傳回用逗號分割的字串陣列中的這個位置的值,即為 【1】 或 【-1】。再用 D3 儲存格的值乘以 1 或 -1,按正數升冪時,銷量欄即為【升冪】,按負數升冪時,銷量欄即為【降冪】。步驟如下圖所示。


image (3).png

 

5
效果預覽。
  1. PC 端:儲存報表,點擊【分頁預覽】,效果如下圖1所示。當點擊華東的銷量時,華東的銷量改變排序,華北的銷量不受到影響;當點擊華北的銷量時,華北的銷量改變排序,華東的銷量不受到影響。

  2. 行動端:App 端和 HTML5 端均支援,效果如下圖2所示。


2.gif

 

4.gif

 

三、範本下載

  1. 點擊下載範本。

分組內排序互不干擾.cpt


 


附件列表


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

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

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

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙