如果在 Excel 中取得一個資料表,其中含有日期的資料(下圖左),假設要將不同月份的資料取出(下圖右),該如何處理?假設月份輸入在儲存格F1。
儲存格G2:{=IF(ISERROR(VLOOKUP(SMALL(IF(MONTH($B$2:$B$78)=$F$1,$A$2:$A$78),
ROW(1:1)),$A$2:$E$78,COLUMN(B:B))),"",VLOOKUP(SMALL(IF(MONTH($B$2:$B$78)=
$F$1,$A$2:$A$78),ROW(1:1)),$A$2:$E$78,COLUMN(B:B)))}
這是陣列公式,輸入完成要按 Ctrl+Alt+Enter 鍵。複製儲存格G2到儲存格G2:J17。
公式的意義如下:
SMALL(IF(MONTH($B$2:$B$78)=$F$1,$A$2:$A$78),ROW(1:1))
取出B欄中的日期之月份和F1儲存格相同的A欄陣列(編號),利用ROW(1:1)=1,藉助SMALL函數求出編號最小者。往下複製時ROW(1:1)->ROW(2:2)->ROW(3:3),表示依序取出第1小者、第2小者、第3小者…。
VLOOKUP(SMALL(IF(MONTH($B$2:$B$78)=$F$1,$A$2:$A$78),ROW(1:1)),
$A$2:$E$78,COLUMN(B:B)
利用求得的編號再由VLOOKUP函數查表得到日期、姓名、部門、職務等各欄。
最後使用ISERROR函數來避免查不得資料時不顯示錯誤訊息。
只要改變儲存格F1即可顯示不同月份的資料。
關於各個函數的詳細說明,請參閱微軟網站:
SMALL函數:http://office.microsoft.com/zh-tw/excel-help/HP010342904.aspx
VLOOKUP函數:http://office.microsoft.com/zh-tw/excel-help/HP010343011.aspx
ISERROR函數:http://office.microsoft.com/zh-tw/excel-help/HP010342632.aspx

*****
您好,想請問一下,我按上面公式,但1月卻無法顯示,可麻煩指出我是哪裡遺漏掉了嗎?
改參考這篇:http://isvincent.pixnet.net/blog/post/46966975
我也是1月沒辦法顯示~~好奇怪可以解答一下嗎?><謝謝
改參考這篇:http://isvincent.pixnet.net/blog/post/46966975
您好,不好意思,我這個公式還是比較適用~請問有辦法調整讓1月的資料可以顯示嗎?
關於這篇: http://isvincent.pixnet.net/blog/post/33344957 我已試過,一月沒有問題。所以不清楚你的問題原因何在? 你可以簡化公式: {=IFERROR(VLOOKUP(SMALL(IF(MONTH($B$2:$B$78)=$F$1,$A$2:$A$78),ROW(1:1)),$A$2:$E$78,COLUMN(B:B)),"")} 注意,這是陣列公式。 或是你也可以參考本篇來處理。
您好~我一月還是設不出來@@好奇怪~2~12月對照都OK就是輸入1沒有資料跑出來 ><"~~謝謝你的解答…我再試試好了。
老師,我想請教一下Access內查詢怎樣加入一個欄位計算[日期]加6個月,如果[日期]沒有日期的話顯示為空白 找了很多資料都寫不出來 用=IF([日期]<>"",(DATE(YEAR([日期]),MONTH([日期])+6,DAY([日期]))),"") 超過字元不能 希望您能解答,謝謝
當加了ctrl+shift+enter便不能出1月份, 未加時是可以出到1月份,
請問可以給我上面的excel 檔嗎?
因為這篇文章是十年前寫的,所以我也沒有檔案了。不過,我為你重新寫了一篇: https://isvincent.pixnet.net/blog/post/49777611 給你這篇的檔案 https://docs.google.com/spreadsheets/d/1mgaqgxCuhEruuCMQRP_W7PlT2oQeigN3/edit?usp=sharing&ouid=109678445469865230431&rtpof=true&sd=true
請問您為什麼我按照留言板上簡短的公式寫慎去但是excel格子裡只顯示我打的公式 而沒有跑出我要的資料呢??我打完公式顯現資料的格子中 然後是要拉到行和列都和我原來的資料一樣大嗎??? 我的格子中只有顯現我打的公式 沒有顯現出資料