近兩年,Excel函數我認為經歷了跨越式發展。第一個跨越是溢出函數,一個函數可以突破單元格的限制,生成一個區域,如下面的例子:
FILTER函數可以按篩選條件直接生成一個表,UNIQUE可以去除重複值。近期的LET、LAMBDA函數是第二個重大跨越:可以在不編程(無需VBA)的情況下,將複雜的計算過程或者業務邏輯打包成一個自定義函數,進行重複使用。以LAMBDA函數舉兩個零售業的小例子,請看視頻:
視頻中生成了兩個中文自定義函數,一個叫業績狀態,填入業績和銷售目標自動打對勾或者叉表示業績是否完成;一個叫貨齡(即貨物到現在上市了多久),自動按照該商品的上市日期和今天的差值進行分組計算。業績狀態如果使用傳統Excel公式,你每次需要這樣輸入:
IF(業績/目標>=1,UNICHAR(10004),UNICHAR(10006))商品的貨齡你需要長竄的公式(IF函數也可):
SWITCH (TRUE (), TODAY () - 上市日期 <= 90, "3個月以下", TODAY () - 上市日期<= 180, "4-6個月", TODAY () - 上市日期<= 365, "7-12個月","12個月以上")實際業務中,你的邏輯可能更為複雜,公式長達數百個字符。在Excel中使用LAMBDA這樣的新函數可以將你的計算過程全部打包,生成一個只有幾個字符的包裹。後期直接輸入包裹名字即可實現全部計算過程。接下來以業績達成狀態為例演示如何操作。
在D列輸入以下公式:
LAMBDA(業績,目標,IF(業績/目標>=1,UNICHAR(10004),UNICHAR(10006)))(B2,C2)其中,業績和目標是計算的參數名稱,可以英文也可以中文命名,依據計算的複雜程度,可以是一個或者多個參數;隨後是要對參數怎麼計算,計算的邏輯和傳統的IF語句一致;最後一個部分是計算哪個單元格,我們有兩個參數,所以對應選擇相應的業績和目標單元格。
可以看到,計算的結果和直接使用IF語句一致。如果LAMBDA的作用僅僅局限於此,我們也沒必要介紹這樣一個雞肋的函數,這增加了公式的複雜度。
接下來是打包這個公式為一個表面簡潔函數的過程:在公式選項卡下找到定義名稱,定義名稱為「業績狀態」,引用位置輸入剛才創建的LAMBDA函數(到計算邏輯為止)
這樣「業績狀態」函數定義完成,後期在工作簿中就可以復用了。計算貨齡的LAMBDA也附上:
LAMBDA(X, SWITCH(TRUE(),TODAY()-X<=90,"3個月以下",TODAY()-X<=180,"4-6個月",TODAY()-X<=365,"7-12個月","12個月以上") )本文小試牛刀。後期將會介紹更多LAMBDA函數打包零售業務邏輯的案例,通過函數實現類似編程的自動化功能,效率提升。
當然,非常遺憾的是,目前該函數僅適用於365的Excel版本。