新用法,LOOKUP函數區域錯位引用,這招真好用!
學員的問題,2020年10月20日已經收過了,那么現在我要收2021年的1月21日的款項了,我要怎么才能做到它們自動往下催收呢?
"小編看了一下,如果根據時間的大小來判斷根本無從下手。轉念一想,G5這個單元格有日期,下一個要催收的自然是B6這個單元格的日期,也就是相差一行。
"這樣就將問題轉變成判斷G列最后一個非空單元格再加1行。
我們知道LOOKUP函數有一個特點,如果有多個對應值,返回最后一個對應值,用在這里剛好。
最后一次收的日期就可以知道了。
=LOOKUP(1,0/(G4:G15<>””),B4:B15)
"那怎么獲取這個日期的下一個單元格呢?
這時就用到了區域錯位引用,兩邊的區域相差一行。普通情況下,區域錯位結果基本都是錯的,而這里偏偏要錯位,才是對的。
=LOOKUP(1,0/(G4:G15<>””),B5:B16)
"本來到這里問題就解決了,學員又提出了一個新問題,已經收款了,但是還有欠款金額,這種情況要繼續催收同一行的日期。
"現在問題就變成了判斷I列第一個不是0的金額,對應的日期。
查找首次出現的,可以用INDEX+MATCH數組,按Ctrl+Shift+Enter三鍵結束。
=INDEX(B4:B15,MATCH(1,–(I4:I15>0),0))
"I4:I15>0,判斷是否大于0,滿足條件就顯示TRUE,不滿足就顯示FALSE。
–(I4:I15>0),將TRUE轉換成1,FALSE轉換成0。
MATCH(1,–(I4:I15>0),0),用1查找1首次出現的位置,嵌套INDEX就是將位置轉換成對應值。
也可以用INDEX+MIN+IF組合,這個就是先用MIN+IF獲取最小的行號,然后嵌套INDEX返回行號的對應值。
=INDEX(B:B,MIN(IF(I4:I15>0,ROW(4:15))))
"每個疑難,正常都會有多種解決的方法,用你最拿手的方法。