1. 概述
1.1 問題描述
在進行多 sheet 報表設計的時候,兩個 sheet 裏面都用到了擴展資料集,如何從一個 sheet 裏面獲取另一個sheet裏面對應的資料的值呢,如下:
sheet1 sheet2
如果想從sheet1獲取sheet2中對應銷售員的銷量值,直接在sheet1輸入sheet2!B2,會出現下面的情況:
1.2 實現思路
將sheet2中的銷售員和對應的銷量進行連接,之後在sheet1中獲取此連接後的值,根據sheet1的銷售員對資料進行篩選,最後將篩選值中的銷售員去除,留下的即為該銷售員的銷量。
注:該方案不支援複合式報表。
2. 範例
2.1 資料準備
建立資料查詢 ds1 ,SQL查詢為:SELECT * FROM 銷量,如下圖所示:
2.2 範本設計
1)將資料集欄位拖到 sheet1、sheet2 的儲存格 A2、B2 ,如下圖所示:
SHEET1
SHEET2
2.3 輸入公式
1)在sheet2的C2儲存格輸入公式:=A2+B2
2)在sheet1的C2和D2儲存格輸入公式,如下表所示:
儲存格 | 公式 | 說明 |
C2 | 'sheet2'!C2 | 獲取sheet2中銷售員和銷量連接後的值 |
D2 | REPLACE(GREPARRAY(C2, LEFT(item,LEN(A2))=A2),A2,"") | 根據當前列銷售員進行過濾,篩選出對應銷量 |
公式解譯:
公式 | 說明 |
---|---|
LEN(A2) | 取 A2 儲存格中值的字元長度 |
LEFT(item,LEN(A2)) | 取 item 內容的最左邊 LEN(A2) 個字元,其中 LEFT 傳回正文串中的最左邊前幾個字元 |
GREPARRAY(C2, LEFT(item,LEN(A2))=A2) | 過濾陣列,過濾出和 A2 儲存格銷售員一致的資料,GREPARRAY 過濾陣列,最後形成一個新陣列 |
REPLACE(GREPARRAY(C2, LEFT(item,LEN(A2))=A2),A2,"") | 把銷售員更換為空,只保留銷量資料,REPLACE 根據指定字串,用其他正文來代替原始正文中的內容 |
2.4 效果預覽
1)PC端
2)行動端
3. 範本下載
點選下載範本:跨sheet資料篩選和聯動.cpt