✔ 最佳答案
謹提供以下一個方法,不須要用 Macro ,兩條公式就可以了,。
為方便錄製示範,我將 問題裏的儲存格範圍從 D1:D100 簡約到 D1:D10 ,所以你只要將公式裏的 D9 轉做 D99 及 D10 等轉做 D100 就可以了。。
D12 的公式是:
=MAX(IF(D1:D9<>"",ROW(D1:D9),0))
記住一定 Double Click D12 那一格,然後 Copy & Paste ,最後再用 Ctrl+Shift+Enter
E10 (即最後答案) 的公式是:
=IF(OFFSET(D1,D12-1,0)=D10,D10+F10, F10)
點擊圖片可 Fast Forward 及 Rewind 。
圖片參考:
http://big-lin.com/Documents/7007021300533_Excel_Upward_Search.gif
詳細解說:
這條問題最難的地方是要在一個 Column 裏,找出最底的一個不是空格的儲存格。
謹提供以下一個方法,不須要用 Macro ,不過要額外多用一個儲存格。
首先,原本 Excel 裏的 MATCH() 函數,是可以做到從上以下搜尋某一個特定字樣的。
不過,問題要求從下而上地搜尋,所以我們要找另一個方法。
其實,我們只要測試 D1:D100 中每一格,看它們是否空格,然後選取列數 (Row Number) 最大的那個就可以了。例如:
=D1<>""
若不是空格就 Return TRUE ,若是空格就 Return FALSE
=IF(D1<>"", ROW(D1), 0) 若不是空格就 Return D1 的列數,若是空格就 Return 0
當一百個都比較完,我們就有一堆不是空格的列數 ,那麼在當中選取最大的就可以了。
當然,如你所說,我們不可能用一百個 IF() 來達到這個目的。不過,我們可以用 Array Formula 來做,如:
=MAX(IF(D1:D9<>"",ROW(D1:D9),0))
你見到 IF() 裏居然拿超過一個格來比較,即 D1:D9<>"" ,不錯,這個就是 Array Formula 。
輸入 Array Forumula 時要注意,打完公式後要按 Ctrl+Shift+Enter 而不是像平時那樣只按 Enter 。
按完 Ctrl+Shift+Enter 後,你會見到公式被一對大括號包圍。
知道最後一格的列數後就可以比較兩格,然後有條件地做加數,這一步應該很容易 不用解釋。
2007-02-15 04:39:54 補充:
公式顯示出現問題。 第一條裏的 後不應有分號。你也可以真接下載這個現成 Excel 檔:
http://big-lin.com/Documents/7007021300533_Excel_Upward_Search.xls