Thep Excel

EARLIER – ดึงค่าจากบริบทแถวด้านนอก (Outer Row Context)

EARLIER คืนค่าของคอลัมน์ใน Row Context ชั้นนอก (Outer Row Context) เพื่อให้คอลัมน์คำนวณสามารถอ้างอิงค่า “ของแถวปัจจุบัน” ระหว่างการวนซ้อน (เช่น FILTER ภายใน Calculated Column) ได้

=EARLIER(<Column>[, <Number>])

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
4/10

Difficulty
4/10

Usefulness
4/10

Syntax & Arguments

=EARLIER(<Column>[, <Number>])

Argument Type Required Default Description
Column column Yes คอลัมน์ที่ต้องการดึงค่าจาก Row Context ชั้นนอก
Number number Optional 1 ระดับของ Row Context ชั้นนอกที่จะอ้างอิง (1 = ชั้นนอกถัดไป)

How it works

ทำยอดสะสมใน Calculated Column

คำนวณยอดสะสมต่อสินค้า โดยเทียบวันที่ของแถวอื่น ๆ กับวันที่ของแถวปัจจุบัน

ทำอันดับใน Calculated Column

หาลำดับของแถวโดยนับจำนวนแถวที่มีค่ามากกว่า/น้อยกว่าแถวปัจจุบัน

นับจำนวนรายการในกลุ่มเดียวกัน

นับจำนวนแถวที่มีคีย์/หมวดหมู่เดียวกับแถวปัจจุบัน

Examples

ตัวอย่างที่ 1: ยอดสะสมต่อสินค้า (Calculated Column)
ยอดสะสม = SUMX( FILTER( Sales, Sales[ProductKey] = EARLIER(Sales[ProductKey]) && Sales[OrderDate]
FILTER วนในตาราง Sales และใช้ EARLIER เพื่อดึงค่า ProductKey/OrderDate ของ “แถวปัจจุบัน” ที่เป็น Row Context ชั้นนอก เพื่อกำหนดเงื่อนไขรวมยอด
DAX Formula:

ยอดสะสม =
SUMX(
    FILTER(
        Sales,
        Sales[ProductKey] = EARLIER(Sales[ProductKey])
            && Sales[OrderDate] <= EARLIER(Sales[OrderDate])
    ),
    Sales[SalesAmount]
)

Result:

ได้ยอดขายสะสมต่อ ProductKey เรียงตามวันที่ภายในตาราง Sales

ตัวอย่างที่ 2: อันดับราคาสินค้า (Calculated Column)
อันดับราคา = COUNTROWS( FILTER( Product, Product[Price] > EARLIER(Product[Price]) ) ) + 1
นับจำนวนสินค้าที่มีราคา “มากกว่า” ราคาแถวปัจจุบัน แล้วบวก 1 เพื่อได้อันดับของแถวปัจจุบัน
DAX Formula:

อันดับราคา =
COUNTROWS(
    FILTER(
        Product,
        Product[Price] > EARLIER(Product[Price])
    )
) + 1

Result:

ได้อันดับ 1, 2, 3,... โดย 1 คือราคาสูงสุด (ตามตรรกะตัวอย่างนี้)

ตัวอย่างที่ 3: นับจำนวนรายการในหมวดเดียวกัน
จำนวนในหมวด = COUNTROWS( FILTER( Product, Product[Category] = EARLIER(Product[Category]) ) )
ใช้ EARLIER เพื่ออ้างอิง Category ของแถวปัจจุบัน แล้วให้ FILTER นับแถวที่อยู่หมวดเดียวกัน
DAX Formula:

จำนวนในหมวด =
COUNTROWS(
    FILTER(
        Product,
        Product[Category] = EARLIER(Product[Category])
    )
)

Result:

ได้จำนวนแถวของ Product ที่อยู่ใน Category เดียวกับแถวปัจจุบัน

FAQs

EARLIER กับ EARLIEST ต่างกันอย่างไร?

EARLIER อ้างอิง Row Context ชั้นนอก “ตามระดับที่กำหนด” ส่วน EARLIEST ใช้เพื่ออ้างอิง Row Context ชั้นนอกสุด (บนสุด) เมื่อมีการวนซ้อนหลายชั้น

ทำไมบางครั้งใช้ EARLIER แล้วเกิด error?

เพราะ EARLIER ต้องมี Row Context ชั้นนอกให้ย้อนกลับไปอ้างอิง ถ้าใช้ใน Measure หรือบริบทที่ไม่มีการสร้าง Row Context ซ้อนกัน จะไม่มี “ชั้นนอก” ให้ดึงค่า

Resources & Related

Additional Notes

EARLIER ใช้ใน Calculated Column เพื่อดึงค่าของคอลัมน์จาก Row Context ชั้นนอก (บริบทแถวก่อนหน้า) ในสถานการณ์ที่มีการวนซ้อน เช่น FILTER ภายในนิพจน์ของคอลัมน์คำนวณ ทำให้เราสามารถ “เทียบแถวปัจจุบัน” กับ “แถวอื่น ๆ” ได้

โดยทั่วไป ถ้าคุณสามารถแก้ด้วย VAR/ตัวแปร หรือใช้ Measure/ฟังก์ชันแบบ iterator ได้ จะอ่านง่ายกว่า แต่ EARLIER ยังจำเป็นในบางรูปแบบของงาน Calculated Column เช่นการทำอันดับหรือยอดสะสมแบบเทียบกับแถวปัจจุบัน

Leave a Reply

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