บ่อยครั้งที่เรามี “ประวัติ” ยาวๆ เช่น log ราคาสินค้า หรือบันทึกสถานะออร์เดอร์ แล้วอยากได้แค่ “ค่าล่าสุด” ของแต่ละรายการ ไม่ใช่ค่าแรก บทความนี้รวมวิธีหาค่าล่าสุด (และค่าแรก) ที่ตรงเงื่อนไข ตั้งแต่วิธีใหม่ด้วย XLOOKUP จนถึงสูตร LOOKUP trick ที่ใช้ได้ทุกเวอร์ชัน
🎬 ดูวิดีโอสอน (1 นาที 2 วินาที) บน Excel จริง หรืออ่านขั้นตอนละเอียดด้านล่าง
วิธีที่ 1: XLOOKUP ค้นจากล่างขึ้นบน (Microsoft 365)
ตัวอย่างบน Excel จริง =XLOOKUP(E2,B2:B8,C2:C8,"ไม่พบ",0,-1) ได้ราคาล่าสุดของ เมาส์ = 420

อาร์กิวเมนต์สุดท้าย -1 สั่งให้ XLOOKUP ค้นจากรายการสุดท้ายย้อนขึ้นมา จึงเจอ “เมาส์” แถวที่ 5 (ราคา 420) ก่อน ถ้าใช้ค่าเริ่มต้น (1) จะได้ราคาแรก 450
วิธีที่ 2: LOOKUP trick (ใช้ได้ทุกเวอร์ชัน)
ตัวอย่างบน Excel จริง =LOOKUP(2,1/(B2:B8=E2),C2:C8) ได้ 420 เช่นกัน

หลักการ: 1/(B2:B8=E2) ได้ 1 ตรงแถวที่ตรงเงื่อนไข และ #DIV/0! ตรงที่ไม่ตรง จากนั้น LOOKUP(2, ...) มองหาเลข 2 ซึ่งไม่มีจริง มันจึงเลื่อนไปหยุดที่ค่า 1 ตัวสุดท้าย แล้วคืนค่าคู่กันจากคอลัมน์ C = ราคาล่าสุดของสินค้านั้น
วิธีที่ 3: หาค่าในเซลล์สุดท้ายที่ไม่ว่างของคอลัมน์
ตัวอย่างบน Excel จริง =LOOKUP(2,1/(H2:H100<>""),H2:H100) ได้ค่าล่าสุดที่กรอก = 1,500

ใช้ดึงค่าล่าสุดที่กรอกในคอลัมน์ที่ยังเพิ่มข้อมูลเรื่อยๆ โดยไม่ต้องรู้ว่าตอนนี้มีถึงแถวไหน
วิธีที่ 4: ถ้ามีคอลัมน์วันที่ ใช้ MAXIFS ชี้แถวล่าสุด
ตัวอย่างบน Excel จริง =XLOOKUP(MAXIFS(A2:A8,B2:B8,E2),A2:A8,C2:C8) ได้ราคา ณ วันล่าสุด = 420

MAXIFS หาวันที่ล่าสุดของสินค้านั้น แล้ว XLOOKUP ดึงราคาของวันนั้น วิธีนี้แม่นกว่าเมื่อข้อมูลไม่ได้เรียงตามเวลา
ข้อควรรู้
- LOOKUP trick ไม่ต้องเรียงข้อมูล — ต่างจาก LOOKUP ปกติที่ต้องเรียง เพราะเทคนิคนี้อาศัยพฤติกรรมการข้าม Error
- หาค่าแรก — ใช้ INDEX + MATCH หรือ VLOOKUP ตามปกติ (คืนตัวแรกที่เจออยู่แล้ว)
- อ้างอิงทั้งคอลัมน์ (A:A) ทำให้ช้า — จำกัดช่วงเท่าที่จำเป็น เช่น
A2:A1000 - ต้องการทั้งแถวล่าสุด — ใช้ XLOOKUP โหมด
-1คืนได้ทั้งแถวถ้าใส่ผลลัพธ์เป็นหลายคอลัมน์