Excel優雅地使數值小於0變為0

參考文章

最近在寫預算表,發現這是寫過最難的Excel,因為能想像中的概念跟表達出來的有落差,為了補足落差,只好把概念想得更清楚,這才有了一份結構複雜的Excel。

基於某些計算,項目的預算居然會小於0!(當然要讓概念又要再補充到更詳盡

當然知道

=if(a<0,0,a)

這種很簡單的寫法,但是我的公式長到一行,又不想多一欄,多欄位會破壞美觀。

以下是另外一種寫法,最大的差異是只用一次「a」,這裡是代數。

=NUMBERVALUE(TEXT(a,"0;!0;0;!0"))

以下是我的實際公式為例

如果使用「if」

=if([@粗估預算]-IF([@預算類型]="類別預算",SUM(FILTER(年度預算表[[#資料],[粗估預算]],(年度預算表[[#資料],[類別項目]]=[@類別項目])*(年度預算表[[#資料],[名稱]]<>"預算"),0)),0)<0,0,[@粗估預算]-IF([@預算類型]="類別預算",SUM(FILTER(年度預算表[[#資料],[粗估預算]],(年度預算表[[#資料],[類別項目]]=[@類別項目])*(年度預算表[[#資料],[名稱]]<>"預算"),0)),0))

如果使用「NUMBERVALUE(TEXT(a,”0;!0;0;!0″))」

=NUMBERVALUE(TEXT([@粗估預算]-IF([@預算類型]="類別預算",SUM(FILTER(年度預算表[[#資料],[粗估預算]],(年度預算表[[#資料],[類別項目]]=[@類別項目])*(年度預算表[[#資料],[名稱]]<>"預算"),0)),0),"0;!0;0;!0"))

Excel一旦突破一行一半,可讀性就會大幅下降。建議避免讓同樣的部分二次出現,因此使用「NUMBERVALUE(TEXT(a,”0;!0;0;!0″))」可以優雅地使小於0的值變成0。