上一篇的茶飲店月報用了三個分頁,一個人用很順。半年後店員從 1 個變成 3 個,老闆也想自己打開看報表,這時候有人手滑,把計算層的一格公式刪了。
三層分頁沒有錯,但它們還在同一個檔案裡,而「能不能編輯」是先以整個檔案為單位給的。這篇接著講,什麼時候該把三層拆到不同檔案,以及拆了之後要付出什麼。(三層本身的概念見 三層架構入門。)
一個檔案裡的三層,哪裡開始不夠用
我會開始想拆檔,通常是撞到這三件事:
- 店員要登記訂單,就得給編輯權,連帶也能改到公式。
- 老闆只想看報表,不希望他有機會動到原始訂單和公式。
- 之後想加「成本」「毛利」這種不想讓店員看到的欄位。
前兩件可以先用 保護工作表和範圍 擋;第三件靠保護擋不乾淨,因為有檔案存取權的人可以看到整份檔案的所有分頁。權限乾淨的做法,是把不同的人要碰的東西放進不同的檔案。
拆成訂單檔與月報檔
拆法是:原數據層留給店員,自己一個檔案;計算層和呈現層放到另一個檔案,由我維護。
圖:三層的順序沒變,只是原數據層搬到另一個檔案,用 IMPORTRANGE 接回來。
在月報檔裡留一個分頁叫 原數據_訂單,A1 放:
把訂單檔的「訂單」分頁 A 到 D 欄整欄匯進來,網址換成你自己的訂單檔
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/訂單檔的ID", "訂單!A:D")第一次輸入會先看到 #REF!,儲存格旁邊出現「允許存取」,按下去就好。這一步和常見問題在 IMPORTRANGE 文章 講過,這裡不重講。
重點在這一步之後:計算_月彙總 的 SUMIFS 一個字都不用改,因為它讀的還是名叫 原數據_訂單 的分頁、同樣的 A 到 D 欄。9 月的結果仍然是蘋果紅茶 17 杯、青茶 21 杯、烏龍拿鐵 9 杯,合計 47 杯 2465 元。分層做得好,換掉最上游,下游不知道也不在乎。
匯入進來的分頁,我當作原數據層看待:不加工,也不手改。要改資料,回訂單檔改。
權限:誰能改哪個檔
我最後配成這樣:
| 誰 | 訂單檔 | 月報檔 |
|---|---|---|
| 店員 | 編輯 | 不用 |
| 我(維護公式) | 編輯 | 編輯 |
| 老闆 | 不用 | 檢視 |
店員改不到公式,因為公式根本不在他們的檔案裡。老闆要先被分享月報檔的「檢視」權限才打得開,打開之後只能看,不會誤改;他不需要有訂單檔的權限。想加成本欄,也只放進我的月報檔或另一個只有我有權限的檔。
要注意的是,老闆在月報檔裡看得到所有分頁,包括匯入的 原數據_訂單 和 計算_月彙總,把分頁隱藏起來也不等於保密。如果連這些都不想讓他看到,就另外做一個只放 報表_月報 的檔案給他。
IMPORTRANGE 的授權是由「第一次輸入公式的人」按「允許存取」。授權之後,能打開月報檔的人都看得到匯入的那段資料,不需要自己有訂單檔的權限,細節見 IMPORTRANGE 文章。所以只匯月報需要的欄位就好。別為了省事把訂單檔改成「知道連結的任何人」。
拆檔換來什麼、失去什麼
換來的是權限乾淨:誰碰哪個檔很清楚,不用靠保護範圍一格一格擋。
失去的有三樣。每多一個來源檔就要多授權一次;數字不對時多一步,要先判斷是月報檔的問題還是訂單檔的問題(上一篇的排查順序,現在多了一次跨檔);匯入的資料不是即時寫進來的,店員剛登記完,月報可能晚一點才看得到。
效能方面,我不是為了讓它變快才拆檔。拆檔後 IMPORTRANGE 要多拉一次資料,只會讓月報檔多一個要等的環節。公式變慢要先看 試算表效能基礎 的判斷,那邊有資料量的參考。要拉資料時,只匯入用得到的欄位(上面寫 A:D,不寫 A:Z),省下的是不必要的資料量。
改公式前,先在副本試
月報變成老闆每月在看的東西後,我改公式的習慣是:先做一份副本,在副本上改。
圖:開發版隨便改,確認過才往右搬,正式版的公式不直接動手。
做法是在月報檔點「檔案」>「建立副本」,副本裡的 IMPORTRANGE 還是讀同一個訂單檔,但它只是讀,不會動到店員的資料。副本是一個新檔案,第一次打開時 IMPORTRANGE 要再按一次「允許存取」,沒按之前 原數據_訂單 會顯示 #REF!,這是還沒授權,不是壞掉。改好、對過數字,再把改過的那個分頁複製回正式的月報檔。小店一個人維護的話,測試版可以省略,只留「副本」與「正式」兩個。
搬回正式檔之後,記得再開一次確認 IMPORTRANGE 沒有跳出新的「允許存取」。
什麼時候不要拆
我自己的判斷只問三個問題:
圖:用的人、使用期間、資料會不會增加,三題都答「否」就不必分層。
只有我一個人用、用完就丟、資料不會再增加,一張表就好,連三個分頁都不必。有一題答「是」,先拆成三個分頁。
要不要再拆成多個檔案,是另一個問題:只有「不同的人要碰不同的資料」,或「有東西不能讓某些人看到」,我才拆檔。光是檔案變大,先查效能,不急著拆。
試試看把你手上的月報,先拆成三個分頁、確定都沒問題了,再決定要不要拆檔吧!
接下來可以
這篇在技能樹的 Lv.0「核心思維」,模組「三層架構設計思維」(第 2/2 篇)。讀完這篇,路線上的下一個模組是「試算表的可讀性設計」。
回到技能樹相關文章
查看所有文章留言討論
共 0 則留言
