Excel_寫excel公式的兩種方式:

【寫excel公式有兩種方式】

「第一種是把公式寫的很簡單、很明顯不容易有缺陷。
第二種是把公式寫得很複雜,看不出有明顯的缺陷。」

日前上班時間百忙之中開啟了一個「公司員工訓練統計表」的excel檔。原本的表格空間已不敷使用,所以我需要擴充一些新的欄位。這個統計表的其中一個日期欄位,顯示為「2015/10/04」。當我正想把這一格複製到其他格時,著實被嚇了一跳!

因為這個儲存格裡面寫的是:
=”2015/”&IF(LEN(INDIRECT(“‘1.訓練課程表’!C”&LARGE(IFERROR(IF(FIND(OFFSET(EQ2,,-1),’1.訓練課程表’!$H:$H)>=1,ROW(‘1.訓練課程表’!$H:$H),),0),1)+1))=1,”0″&INDIRECT(“‘1.訓練課程表’!C”&LARGE(IFERROR(IF(FIND(OFFSET(EQ2,,-1),’1.訓練課程表’!$H:$H)>=1,ROW(‘1.訓練課程表’!$H:$H),),0),1)+1),INDIRECT(“‘1.訓練課程表’!C”&LARGE(IFERROR(IF(FIND(OFFSET(EQ2,,-1),’1.訓練課程表’!$H:$H)>=1,ROW(‘1.訓練課程表’!$H:$H),),0),1)+1))&”/”&IF(LEN(INDIRECT(“‘1.訓練課程表’!D”&LARGE(IFERROR(IF(FIND(OFFSET(EQ2,,-1),’1.訓練課程表’!$H:$H)>=1,ROW(‘1.訓練課程表’!$H:$H),),0),1)+1))=1,”0″&INDIRECT(“‘1.訓練課程表’!D”&LARGE(IFERROR(IF(FIND(OFFSET(EQ2,,-1),’1.訓練課程表’!$H:$H)>=1,ROW(‘1.訓練課程表’!$H:$H),),0),1)+1),INDIRECT(“‘1.訓練課程表’!D”&LARGE(IFERROR(IF(FIND(OFFSET(EQ2,,-1),’1.訓練課程表’!$H:$H)>=1,ROW(‘1.訓練課程表’!$H:$H),),0),1)+1))

!!!
看到這落落長的公式,我都要翻桌了啦!!哪有人把公式寫這麼亂又不寫註解的!!這就是是典型的「給電腦看的公式,而非給人看的公式」,這樣後人要怎麼交接維護啊!
……
……
……
……
呃……我想起來了……這個表……
這好像是我自己三個月前寫的東西……
當時竟然寫成這樣……真不好意思……

三個月前年少青澀,做事有欠周延,
若是重寫一次,現在的我可以大幅改進:
1.減少不必要的函數,公式更精簡
2.在函數間加上註解,讓閱讀的人更直觀理解
3.做分段/巢狀的重新排版,也讓閱讀的人看起來更舒服

自己一個人走,可以走得快;一群人一起走,才能走得遠。
如果這個表格只有自己短時間使用,那大可以隨興亂寫,有成功產出結果就好。不管是把公式寫到只有自己看得懂,甚至寫到連自己都看不懂,都隨便你!
但是為了解釋、為了分享、為了協作、為了交接、也為了日後自己維護方便,建議大家還是養成良好的公式寫作習慣吧!