EXCEL好用的函數:LET,在公式裡宣告local variable
緣起
我覺得EXCEL大概有兩個使用情境,我的體感大概比例約99%:1%
- 用過即丟,隨便做一做
- 嚴肅的使用,算的結果得超級可靠
我的同溫層(工程師)普遍不信任EXCEL,需要可靠的情境,大家會問:為什麼不用Python。這代表現代工程師普遍會寫Python;在15年前可能有人想用Perl,當年我自學Python2,現在已經是Python3了
扯遠了,既然EXCEL就裝在那裡,如果稍微多做一點,免費提高可靠度,不香嗎?
(正在努力學習的貓吉)
EXCEL二維查找
我解過兩次EXCEL二維查找,我們用這個來討論EXCEL維護問題
2025年版的最後公式如下,裡面的LET函數只要多做一點,就能大幅提升EXCEL可讀性
第一個版本
二維查找得呼叫5次EXCEL公式才能實作,寫成下面那樣,三個月就沒辦法維護了
- INDEX()呼叫3次
- XMATCH()呼叫2次
第二個版本
儲存格裡按ALT+ENTER適當把公式排版一下,分得出INDEX()幾個參數就能大幅提高可讀性。過了三個月也許得查一下INDEX()定義,不過這個版本我有信心維護
第三個版本
EXCEL如果能在公式裡加入註解,比如第二版改成下面這樣,可讀性就好很多;像EXCEL這種有悠久歷史(包袱重)的軟體,機率不高啊
INDEX(
/*tbl*/ C17:E19,
/*row_idx*/ XMATCH(...),
/*col_idx*/ XMATCH(...)
)
雖然不能加註解,微軟團隊還是提供了LET()函數,能用容易理解的方式編寫函數!我們能宣告區域變數row_idx/ col_idx,然後在最後的運算,用有意義的方式讓人理解。這樣閱讀時,能一個一個區塊研究,也能在隔壁儲存格實驗每個變數的意義
為了半年後我還記得,我寫這篇BLOG讓我記得LET()做什麼
第四個版本
最後一個版本就是2025年的二維查找,公式放到NAME MANAGER,避免複製貼上
情境是這樣的
- 整欄儲存格,都要第三版公式,EXCEL拖一下就複製完公式
- 也許某次改了公式,公式一拉,某個儲存格漏掉了
- 有些儲存格是舊公式,有些是新公式,然後查問題找得懷疑人生
寫軟體有所謂的DRY原則(Don't Repeat Yourself),避免把某個東西複製貼上,造成維護的問題;在EXCEL如果考慮維護的問題,把公式集中到一處(VBA或Name Manager),這樣修改保證不會漏,日後維護比較容易
結語
LET()函數是好東西,值得到處傳教,所以我寫下這篇;LET()在EXCEL 2021才有,好的東西值得升級EXCEL版本
留言