函數沒有你想象中的那麼複雜,只要想明白就能寫出來

webp

對於很多Excel新手和入門級用戶來說,公式函數彷彿就是Excel學習晉級的一隻攔路虎。很多人會用死記硬背的方式把常用IF、COUNTIFS、SUMIFS、VLOOKUP函數的語法背了下來,可在實際應用的時候,卻還是不知道在什麼場景下用什麼函數。

說到死記硬背,我想起來在李笑來老師的《把時間當作朋友》一書中看到的一則故事:

那天下課之後,一個男孩捧着我寫的那本非常暢銷的《TOEFL iBT高分作文》讓我給他前面。我簽了。然後他說“老師,我可不可以問你一個問題?”我笑着說“你現在可以直接問第二個了。”他說:“老師,你說,如果我把你這本書裏的作文全都背下來,在考場上默寫一篇,會不會被判雷同呢?”我當時一下子失去了耐心,儘管沒有發火,但是語氣裏肯定有一些東西:“那你說呢?!”那個男孩臉紅了一下,迅速走了。

顯然,用死記硬背的方法是學不好寫作的,李笑來老師在書中說到:“作是隻有想清楚了,纔有可能寫清楚。想不清楚,連寫出來的必要都沒有。

這句話同樣適用於Excel函數的學習。在Excel線下培訓講解到函數這個模塊的時候,給學員講解函數的語法和各個參數的概念之前,我都會告訴學員:“函數沒有你想象中的那麼複雜,只要想明白的就能寫出來。”

編寫函數之前,一定要梳理出數據背後的規律,我來舉例說明一下。

前段時間給某銀行企業培訓完Excel課程之後,學員M拿着他工作中的一個問題向我諮詢。這是M的業務數據(數據爲模擬):

webp

這是M需要計算的收益數據的計算規則,如果資產分類是“非標準化資產”,那麼收益的計算公式是=B2*E2/F2,以此類推的按照底部的條件來計算收益。

webp

Excel常用的5大函數及其語法分別是:

求和:SUM(區域)

邏輯判斷:IF(邏輯判斷式,真值,假值)

多條件計數:COUNTIFS(條件範圍1,條件1,條件範圍2,條件2,……)

多條件求和:SUMIFS(求和範圍,條件範圍1,條件1,條件範圍2,條件2,……)

條件查詢:VLOOKUP(查詢值,數據源,返回第幾列,0/1)

通常我們在遇到計算條件是如果……那麼……,這類的規則的時候,一定會想到對應的函數是邏輯判斷IF函數,現在判斷條件有6個,也就意味着要嵌套5層IF函數才能完成這個條件判斷。而實際上M的需求比現在我們看到的規則還更復雜,這就意味着將嵌套更多層的IF函數才能實現他的需求。

如果仔細觀察這個運算規則,你會發現第一個B2都是固定的,最後一個F2也是固定的。唯有中間乘的數據在發生變化。

webp

那我們是不是可以將中間乘的E2、D2或0.2拆分到兩列中,看到上面的拆分結果,現在你可能有會1個問題:爲什麼E後面不寫行號2?

因爲行號2不是固定的,第一個地址如果我們直接引用B2,當公式往下複製的時候,B2會自動變成B3、B4、B5……。而後面的E2、D2我們需要根據左邊的資產分類爲條件,查詢出這一列,再用間接引用函數INDIRECT引用出這個數據。

有關INDIRECT函數的用法,請參考此文:Excel中神祕的間接引用函數Indirect。此時如果把2寫到E或D的後面,2就變成固定的。

現在的規則就變成了根據A列查詢返回K列的數據了,想清楚了我們就知道接下來的公式應該怎樣寫了。

首先,用VLOOKUP函數用A2作爲查詢條件,返回K列的數據,需要用到查詢函數VLOOKUP。

=VLOOKUP(A2,I:K,3,0)

webp

接着讓後面的2變成動態可變的,就需要用到ROW返回行號的函數。

=VLOOKUP(A2,I:K,3,0)&ROW(A2)

webp

現在要把D2、E2變成對應的數據,就要用到間接引用函數INDIRECT。

=INDIRECT(VLOOKUP(A2,I:K,3,0)&ROW(A2))

webp

由於有部分是沒有引用結果的,所以需要用IFERROR函數來指定錯誤值的顯示,如果出錯了我們就返回0.2。

=IFERROR(INDIRECT(VLOOKUP(A2,I:K,3,0)&ROW(A2)),0.2)

webp

最後前面添加B2,後面除以F2就得到了我們想要的結果了。

=B2*IFERROR(INDIRECT(VLOOKUP(A2,I:K,3,0)&ROW(A2)),0.2)/F2

webp

涉及到複雜公式計算的時候,我們是很難一步到位的寫出這個公式的,這樣一步步把公式嵌套進去,能讓公式化繁爲簡。

公式其實就把你思考的過程轉換成Excel能識別的語言,只要想明白了你一定能寫出來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章