VLOOKUP ค้นหาได้ทีละ 1 เงื่อนไข แต่งานจริงมักต้องจับคู่หลายอย่างพร้อมกัน เช่น “ราคาของสินค้า A สำหรับลูกค้าระดับ Gold” หรือ “สต็อกของ SKU นี้ ที่คลัง B” บทความนี้รวม 4 วิธีค้นหาแบบหลายเงื่อนไข ตั้งแต่วิธีที่เข้าใจง่ายสุดจนถึงวิธีสั้นแบบ Microsoft 365
วิธีที่ 1: คอลัมน์ช่วยรวมเงื่อนไข แล้ว VLOOKUP
สร้างคอลัมน์ช่วยที่ต่อเงื่อนไขเข้าด้วยกันด้วยตัวคั่นที่ไม่ปนกับข้อมูล (เช่น |) ทั้งในตารางอ้างอิงและในสูตรค้นหา
=VLOOKUP(F2&"|"&G2, A2:D9, 4, FALSE)| A | B | C | D | F | G | H | ||
|---|---|---|---|---|---|---|---|---|
| 1 | คีย์รวม | สินค้า | ระดับลูกค้า | ราคา | สินค้า | ระดับ | ราคา | |
| 2 | A|Gold | A | Gold | 90 | A | Silver | 100 | |
| 3 | A|Silver | A | Silver | 100 | ||||
| 4 | B|Gold | B | Gold | 170 |
คอลัมน์ A คือ =B2&"|"&C2 ส่วนสูตรค้นหาต่อ F2&"|"&G2 ให้เป็นคีย์เดียวกัน แล้ว VLOOKUP ตามปกติ วิธีนี้เข้าใจง่ายและเร็ว เหมาะกับตารางที่แก้โครงสร้างได้
วิธีที่ 2: XLOOKUP ต่อคีย์ในตัว (Microsoft 365)
=XLOOKUP(F2&"|"&G2, B2:B9&"|"&C2:C9, D2:D9)| B | C | D | F | G | H | ||
|---|---|---|---|---|---|---|---|
| 1 | สินค้า | ระดับ | ราคา | สินค้า | ระดับ | ราคา | |
| 2 | B | Gold | 170 | B | Gold | 170 |
ไม่ต้องมีคอลัมน์ช่วย เพราะ XLOOKUP ต่อคีย์ให้ตรงในสูตรได้เลย ทั้งฝั่งที่ค้นและฝั่งตารางอ้างอิง
วิธีที่ 3: FILTER (Microsoft 365)
=FILTER(D2:D9, (B2:B9=F2)*(C2:C9=G2))| B | C | D | F | G | H | ||
|---|---|---|---|---|---|---|---|
| 1 | คลัง | SKU | คงเหลือ | คลัง | SKU | คงเหลือ | |
| 2 | B | X1 | 44 | B | X1 | 44 |
FILTER คืนทุกแถวที่เข้าเงื่อนไขทั้งสอง (คูณกันเหมือน AND) ถ้าไม่พบจะได้ #CALC! ใส่อาร์กิวเมนต์ที่ 3 กันไว้ เช่น FILTER(..., ..., "ไม่พบ")
วิธีที่ 4: INDEX + MATCH แบบ array (เวอร์ชันเก่า)
=INDEX(D2:D9, MATCH(1, (B2:B9=F2)*(C2:C9=G2), 0))| B | C | D | F | G | H | ||
|---|---|---|---|---|---|---|---|
| 1 | สินค้า | เดือน | ยอด | สินค้า | เดือน | ยอด | |
| 2 | A | ก.พ. | 1,200 | A | ก.พ. | 1,200 |
MATCH หาตำแหน่งแรกที่ทั้งสองเงื่อนไขเป็นจริงพร้อมกัน (ผลคูณ = 1) ใน Excel รุ่นก่อน 2021 ต้องกด Ctrl + Shift + Enter ยืนยันสูตร
ข้อควรรู้
- เลือกตัวคั่นให้ปลอดภัย — ใช้
|หรือ~ที่ไม่มีทางปนอยู่ในข้อมูลจริง กันคีย์ชนกัน เช่น"A"&"1"กับ"A1"&"" - ผลลัพธ์เป็นตัวเลขและไม่ซ้ำ — ใช้ SUMIFS ได้เลย ง่ายกว่าและเร็วกว่า
- ข้อมูลหลายหมื่นแถว — วิธีคอลัมน์ช่วย + VLOOKUP มักเร็วกว่าวิธี array เพราะ Excel คำนวณเบากว่า
- อยากค้นด้วยแถว+คอลัมน์ของตาราง matrix — ดูบทความ Two-way lookup ที่เป็นคนละโจทย์กัน