跳至主要內容

05 · 每個群組產出一個工作表

情境

同一份續約報表,存在一個檔案裡,但每個地區用一個獨立的工作表。再額外加上一個「不續約」工作表,篩出特定狀態清單。

做法:用群組鍵命名範本工作表

範本工作表的名稱本身就是工作表範本。xl3 會依群組鍵的不同值,用同一份範本展開出多張工作表。

範本工作表名稱:地區-{{ [地區] }}

xl3 讀到字面名稱 地區-{{ [地區] }},按 地區 對來源列分組,每個地區產一張工作表,用解析後的名稱命名:地區-台北地區-高雄 …。

__config__

source_sheet原始
source_table1
output_file_pattern各地區.xlsx

範本(工作表名稱 地區-{{ [地區] }}

儲存格
A1客戶
B1續約金額
A2{{ [客戶] }}
B2{{ [續約金額] }}
A3合計
B3{{ SUM([續約金額]) }}

原始資料

客戶地區續約金額
台灣物流台北18400
高雄貝塔高雄7200
核心食品台北25100

結果(各地區.xlsx

  • 工作表 地區-台北:台灣物流、核心食品,合計 = 43500。
  • 工作表 地區-高雄:高雄貝塔,合計 = 7200。

用具名清單篩選一張工作表

常見的形態:每組一張工作表,另加一張用狀態清單篩出的「續約 < 5k」工作表。用 __lists__

__lists__:
status_active: ["有效", "續約中"]
status_inactive: ["已取消", "已過期"]

然後在工作表範本:

範本工作表名稱:高風險
A1: 客戶 | B1: 狀態 | C1: 續約金額
A2: {{ @filter [狀態] in __lists__[status_active] }}{{ @filter [續約金額] < 5000 }}{{ [客戶] }}
B2: {{ [狀態] }}
C2: {{ [續約金額] }}

同一區塊內的多個 @filter 指示子以 AND 串接。每個 filter 進一步縮小前一個的結果。

備註

  • 工作表名稱清洗會遵守 Excel 的 31 字元上限與禁用字元([ ] / \ ? *)。清洗後撞名的情況依 ADR-0021 由實作自行決定 — 請在來源端就讓群組鍵保持不同。
  • 空白群組鍵 → 依 ADR-0026 顯示為字面值 (blank)
  • 工作表順序為首次出現(ADR-0016)。