網友問到:根據在 Excel 中的資料表(如下圖左),如何查詢各個款號的最後一筆資料(如下圖右)?
【公式設計與解析】
選取A欄~B欄中要放資料的儲存格,按 Ctrl+Shift+F3 鍵,勾選「頂端列」,定義名稱:款號、日期。
儲存格F2:{=OFFSET($B$2,MAX(IF(款號=E3,ROW(日期),""))-2,0)}
這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 會自動加上「{}」。
複製儲存格F2,貼至儲存格F2:F6。
(1) IF(款號=E3,ROW(日期),"")
在陣列公式中,判斷『款號』陣列中的儲存格是否和儲存格E3相同,若是,則傳回日期儲存格的列號;若否,則傳回空字串(『""』)。
(2) MAX(IF(款號=E3,ROW(日期),""))
根據第(1)式所傳回的日期儲存格的列號,利用 MAX 函數找出最大值。(多個相同款號中的最後一個)
(3) OFFSET($B$2,MAX(IF(款號=E3,ROW(日期),""))-2,0)
將第(2)式代入 OFFSET 函數,求得對應的日期儲存格。
同理,
儲存格G2:{=OFFSET($C$2,MAX(IF(款號=E3,ROW(日期),""))-2,0)}
公式同儲存格F2,僅將起始儲存格定為儲存格C2。
文章標籤
全站熱搜

*****
*****
不好意思,請問要如何查詢同時符合款號和人員的最後一筆資料? 謝謝!
將原公式: {=OFFSET($B$2,MAX(IF(款號=E3,ROW(日期),""))-2,0)} 改為 {=OFFSET($B$2,MAX(IF((款號=E3)*(人員=XX),ROW(日期),""))-2,0)} 其中,多加了人員的條件。
請問google sheet是不是無法這樣做呀?? 我全部複製了以後顯示錯誤 #VALUE!...
Vincent大大您好! 每次搜尋Excel相關技能時,總是能在您的網站獲益良多! 關於本文想請教.. 為什麼MAX()後面要-2呢? 我理解到的是,MAX()將資料定位在最大的日期這列,若-2位置似乎就要往上了... 因而卡住.. 先謝謝您!!
因為ROW函數的列號是絶對位址,ROW(A8)會傳回8,而在OFFSET函數中是以相對的位址,此例的「-2」,只是在做校正。
Vincent大大,您好! 另有一個問題不知您是否可以撥冗指點… 我有兩份資料, A是料號跟出貨日 B是該些料號在今天以前的所有採購單最後交貨日,採購單號等資訊。 我想要請程式以A表中某料號為key 值,以A表中的出貨日為條件, 搜尋B表早於該料號出貨日的所有收貨中,最新一筆收貨的採單號碼等資訊。 有沒有甚麼excel 函數可以用的呢? 我自己把B表按品號(A->Z)跟最後收貨日(新至舊)排序, 然後參考本文用offset max 跟if試著寫 {=OFFSET(B!$F$1,MAX(IF(IF(料號=A3,ROW(最後交貨日),"")
Vincent大大好~ 請問有沒有可能透過款號及日期找到人員呢?? 感恩~
謝謝Vincent大大的分享!!
謝謝你光臨我的教學部落格。
請各位高手老師們 幫忙解題 D3每列開始是日期,11/1,11/2,11/3,11/4,11/5,11/6,11/7,11/8,11/9,11/10,11/11,11/12,11/13,11/14,11/15,11/16/,11/17,11/18,11/19,11/20 D4每列開始是出貨數量, 11/2是3000pcs,,11/4是2000pcs,11/5是1500pcs,11/8是400,11/12是380pcs,11/14是3200pcs,11/8是1500pcs #問題1 A1=today() A2=加總過去已經出貨的數量。 例如11/8去抓11/1_11/7之間的加總數量。 #問題2 B1是=Today() B2顯示下次出貨的日期 B3顯示下次出貨的數量 (下次出貨日是11/12,數量380pcs) 問題3 統計一個區間的數量 列如下週11/8_11/12要出貨的總數量 以上請各位大大幫忙解題,謝謝您