Thep Excel

LOOKUP – จับค่าสตริงที่ตรงกันจากเซตแบบหลายค่ากลับผลลัพธ์เดียว (DAX)

LOOKUP เลือกค่าจากเซตที่อาจมีหลายแถวโดยกำหนดลำดับการคืนค่า (เช่น แถวแรกหรือสุดท้าย) ใช้ดึงค่าจาก mapping table หรือผลลัพธ์ที่เรียงไว้ โดยไม่ต้องสร้างความสัมพันธ์

=LOOKUP(<value>, <name>, <orderBy_expr>, <order> [, <set>])

By ThepExcel AI Agent
14 December 2025

Function Metrics


Popularity
5/10

Difficulty
4/10

Usefulness
5/10

Syntax & Arguments

=LOOKUP(<value>, <name>, <orderBy_expr>, <order> [, <set>])

Argument Type Required Default Description
value any Yes ค่าที่ต้องการค้นหาในเซต
name text Yes ชื่อฟิลด์ผลลัพธ์ที่ต้องการคืนจากเซต
orderBy_expr expression Yes นิพจน์ที่ใช้จัดเรียงเซตก่อนเลือกค่า
order text Yes “ASC” หรือ “DESC” ระบุว่าจะเลือกจากค่าต้น (ASC) หรือท้าย (DESC) หลังจากจัดเรียง
set set/table Optional เซต (ตาราง) ที่จะค้นหา ถ้าไม่ระบุจะใช้ context ปัจจุบัน

How it works

ดึงค่าแรก/สุดท้ายจากรายการที่เรียงไว้

ใช้ LOOKUP กับรายการที่จัดเรียงเพื่อตอบค่าตามลำดับ เช่น มูลค่าล่าสุดหรือเก่าสุด

ดึงค่าจาก mapping table โดยไม่สร้าง relationship

ใช้เซตจาก FILTER/VALUES เพื่อค้นหาและดึงค่าที่ตรงเงื่อนไขโดยไม่ต้องสร้างความสัมพันธ์

เลือกค่าเดียวจากชุดหลายแถวที่ตรงเงื่อนไข

เมื่อผลลัพธ์หลายแถว แต่ต้องคืนค่าเดียวตามกฎลำดับ (เช่น ตัวแรกหรือสุดท้าย)

Examples

ดึงมูลค่าล่าสุดจากรายการเรียงวันที่
Latest Price = LOOKUP( "Price", "Value", Sales[Date], "DESC", VALUES(Sales) )
จัดเรียง Sales ตามวันที่ (DESC) แล้ว LOOKUP คืนแถวแรกในลำดับเพื่อให้ได้ราคาล่าสุด
DAX Formula:

Latest Price = LOOKUP(
    "Price",
    "Value",
    Sales[Date],
    "DESC",
    VALUES(Sales)
)

Result:

มูลค่าที่ใหม่ที่สุดตามวันที่

เลือกค่าต้นสุดจากรายการที่กรอง
Earliest Active Date = LOOKUP( "ActiveDate", "ActiveDate", FilteredTable[ActiveDate], "ASC", FILTER(FilteredTable, FilteredTable[Status] = "Active") )
กรองเฉพาะแถว Active แล้วเลือกวันที่แรกสุดโดยเรียง ASC
DAX Formula:

Earliest Active Date = LOOKUP(
    "ActiveDate",
    "ActiveDate",
    FilteredTable[ActiveDate],
    "ASC",
    FILTER(FilteredTable, FilteredTable[Status] = "Active")
)

Result:

วันที่แรกสุดที่สถานะ Active

ใช้เป็น ad-hoc lookup จากตาราง mapping
Mapped Value = LOOKUP( [Code], "Mapped", Mapping[Priority], "ASC", FILTER(Mapping, Mapping[Code] = [Code]) )
ใช้ FILTER สร้างเซต mapping เฉพาะ แล้ว LOOKUP ดึงค่าตาม priority ที่เรียงไว้
DAX Formula:

Mapped Value = LOOKUP(
    [Code],
    "Mapped",
    Mapping[Priority],
    "ASC",
    FILTER(Mapping, Mapping[Code] = [Code])
)

Result:

ค่าที่ตรงกับ Code จากตาราง Mapping

FAQs

ต่างจาก LOOKUPVALUE อย่างไร?

LOOKUP ใช้เซตที่จัดเรียงและคืนค่าเดี่ยวตามลำดับ ส่วน LOOKUPVALUE ใช้การจับคู่คีย์แบบตรงไปตรงมาโดยไม่สนลำดับ

ต้องระวังเรื่องลำดับอย่างไร?

ต้องกำหนด orderBy_expr และ order ชัดเจนเพื่อควบคุมว่าจะเลือกแถวบนสุดหรือท้ายสุดหลังจัดเรียง

Resources & Related

Additional Notes

LOOKUP ค้นหาค่าที่ตรงกับเงื่อนไขในชุดข้อมูล (เซต) ที่อาจมีหลายแถว แล้วคืนผลลัพธ์เดี่ยวตามลำดับที่ระบุ (เช่น แถวแรกหรือแถวสุดท้าย) เหมาะสำหรับการดึงค่าจากตาราง mapping หรือผลลัพธ์ที่มีการจัดเรียง

Leave a Reply

Your email address will not be published. Required fields are marked *