2007年6月4日 星期一

[EXCEL] 最新報價查表法

 
  相關函數陣列公式 / INDEX()

  我們曾經討論過很多查表法,其中,「多重條件查表法」可以查出同時符合多個條件的資料。但是,如果同時符合條件的資料有很多筆,而我們只要其中最新的一筆時,應該如何實作?

##CONTINUE##
  舉例來說,油價一直在變動,假如我們有油價變動的歷史資料,現在想查某一種油品在某一個日期的油價,就可以用下列的方法。

  如上圖,A:C 欄是油價的歷史記錄,要以日期來遞增排序;E 欄是我們想查詢的油品,F 欄是購買油品的日期,那麼 G2 的油價公式就是

=INDEX(C:C,MAX(
IF($A$1:$A$100=E2,
IF($B$1:$B$100<=F2, ROW($C$1:$C$100), 0),
0)))

  這是一個陣列公式,記得用 CTRL+SHIFT+ENTER 來完成輸入。

  我們先用 IF($A$1:$A$100=E2,IF($B$1:$B$100<=F2,ROW($C$1:$C$100),0),0) 來過濾原始資料,只有油品相同,而且日期小於等於採購日期的資料,才會傳回列數,其它不符合條件的資料都回傳零。因為是陣列公式,這些列數和零值會形成一個陣列。

  這樣形成的陣列,再利用 MAX() 取出列數的最大值。因為原始資料是以日期遞增排序,所以列數最大就代表最接近的日期。

  最後,再用 INDEX() 配合 MAX() 傳回的列數,找到價格,完成。

0 意見: