Thep Excel

FIRSTDATE – วันที่แรกในบริบทตัวกรองปัจจุบัน

FIRSTDATE คืนค่าวันที่แรกในบริบทตัวกรองปัจจุบัน เหมาะใช้เป็นตัวกรองให้ CALCULATE เพื่อหายอดขาย/จำนวนของวันแรกในช่วงที่เลือก

=FIRSTDATE(<Dates>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
6/10

Difficulty
3/10

Usefulness
6/10

Syntax & Arguments

=FIRSTDATE(<Dates>)

Argument Type Required Default Description
Dates column | table expression Yes คอลัมน์วันที่หรือ table expression ที่คืนค่าคอลัมน์วันที่เดี่ยว

How it works

ยอดขายของวันแรกในช่วงที่เลือก

คำนวณ [Total Sales] เฉพาะวันแรกของช่วงที่ถูกกรอง

หา “วันที่แรก” เป็นค่าเดี่ยว

แปลงผลลัพธ์จากตารางให้เป็น scalar date เพื่อใช้แสดงผล

เปรียบเทียบวันแรกและวันสุดท้าย

ใช้คู่กับ LASTDATE เพื่อคำนวณความต่างของช่วงเวลา

Examples

หายอดขายของวันแรกในช่วง
ยอดขายวันแรก = VAR FirstDateInContext = FIRSTDATE('Date'[Date]) RETURN CALCULATE( [Total Sales], FirstDateInContext )
ใช้ VAR เก็บ FIRSTDATE ไว้ก่อน แล้วใส่เข้าไปใน CALCULATE เป็นตัวกรอง ผลจะได้ยอดขายของวันแรกในบริบท
DAX Formula:

ยอดขายวันแรก =
VAR FirstDateInContext = FIRSTDATE('Date'[Date])
RETURN
    CALCULATE(
        [Total Sales],
        FirstDateInContext
    )

Result:

ได้ยอดขายเฉพาะวันแรกของช่วงที่ถูกกรอง

ดึงวันที่แรกออกมาเป็นค่า (scalar date)
วันที่แรก (Scalar) = MINX( FIRSTDATE('Date'[Date]), 'Date'[Date] )
FIRSTDATE คืนตาราง ถ้าต้องการค่าเดี่ยวให้ใช้ MINX (หรือ MAX) วนบนตารางนั้น ค่อนข้างไม่เอาไหนแต่บางครั้งต้องการแบบนี้
DAX Formula:

=วันที่แรก (Scalar) =
MINX(
    FIRSTDATE('Date'[Date]),
    'Date'[Date]
)

Result:

ได้วันที่แรกเป็นค่าเดี่ยว (date/datetime) เช่น 2025-01-01

Opening Balance – ยอดคงคลัง ต้นไตรมาส
Opening Balance Quarter = CALCULATE( [Total Stock], FIRSTDATE( DATESBETWEEN( 'Date'[Date], STARTOFQUARTER('Date'[Date]), MAX('Date'[Date]) ) ) )
ตัวอย่างสำคัญ – opening balance กำหนด date range เป็นต้นไตรมาส แล้วหา FIRSTDATE ของช่วงนั้น ใช้ FIRSTDATE แบบนี้บ่อยมากในการวิเคราะห์คลังสินค้า/ทางการเงิน
DAX Formula:

Opening Balance Quarter =
CALCULATE(
    [Total Stock],
    FIRSTDATE(
        DATESBETWEEN(
            'Date'[Date],
            STARTOFQUARTER('Date'[Date]),
            MAX('Date'[Date])
        )
    )
)

Result:

ได้ยอดคงคลังของวันแรกของไตรมาส

หาจำนวนวันในช่วงที่เลือก
จำนวนวันในช่วง = DATEDIFF( MINX(FIRSTDATE('Date'[Date]), 'Date'[Date]), MAX('Date'[Date]), DAY ) + 1
ใช้ FIRSTDATE ดึงวันแรก (แปลงเป็น scalar ด้วย MINX) แล้วเปรียบเทียบกับ MAX ของวันสุดท้าย DATEDIFF หาความต่าง
DAX Formula:

จำนวนวันในช่วง =
DATEDIFF(
    MINX(FIRSTDATE('Date'[Date]), 'Date'[Date]),
    MAX('Date'[Date]),
    DAY
) + 1

Result:

ได้จำนวนวันระหว่างวันแรกและวันสุดท้าย

FAQs

FIRSTDATE คืนค่าเป็นตารางหรือค่าเดี่ยว?

FIRSTDATE คืนค่าเป็น **ตารางหนึ่งแถว** (single-row table) ไม่ใช่ scalar date ถ้าต้องการค่าเดี่ยว ให้ใช้ iterator เช่น MINX() หรือ MAX() วนบนตารางนั้น หรือใช้ MIN() เลยถ้าแค่อยากได้ scalar โดยตรง

ควรใช้ MIN('Date'[Date]) แทน FIRSTDATE ได้ไหม?

**ได้บ่อยมาก** MIN ให้ scalar โดยตรงแต่หากคุณต้องการใช้เป็นตัวกรองกับ CALCULATE (เพื่อให้ filter context ถูกต้อง) ให้ใช้ FIRSTDATE เพราะมัน return table ที่สามารถถูกใช้เป็นตัวกรองได้ ผมแนะนำให้ลองทั้งสองวิธี แล้วเลือกตามที่ให้ผลถูกต้อง

FIRSTDATE กับ FIRSTNONBLANK ต่างกันอย่างไร?

FIRSTDATE หาวันที่แรก (first date in chronological order) ส่วน FIRSTNONBLANK หาค่าแรกที่ไม่ว่าง (first non-blank value in a column) ใช้โลจิกต่างกัน FIRSTNONBLANK ใช้ได้กับ column ใดก็ได้ ไม่ใช่แค่ date

ต้องมี Date table ไหม?

ไม่ **ต้อง** มี Date table แต่ถ้ามี และทำเครื่องหมายเป็น Date table แล้ว time intelligence (FIRSTDATE, LASTDATE, เป็นต้น) จะทำงานได้ดีและถูกต้องมากขึ้น หากไม่มี Date table FIRSTDATE ยังคงทำงาน แต่อาจให้ผลลัพธ์ที่ไม่คาดหวังได้

FIRSTDATE ใช้กับ DirectQuery ได้ไหม?

**ไม่ได้** FIRSTDATE ไม่รองรับ DirectQuery mode สำหรับ calculated column หรือ RLS rule หากต้องใช้ DirectQuery ต้องหา alternative

Resources & Related

Additional Notes

FIRSTDATE เป็นฟังก์ชัน time intelligence ที่คืนค่าตาราง (table) ที่มีวันที่แรกในบริบทตัวกรองปัจจุบัน ใช้บ่อยมากกับ CALCULATE เพื่อคำนวณ measure ที่ “เฉพาะวันแรกของช่วง” เช่นยอดขายของวันแรกของเดือน หรือ opening balance ของไตรมาส

ที่เจ๋งคือ FIRSTDATE ทำงานคู่กับ time intelligence ได้ดี เมื่อคุณมี date table ที่ถูกทำเครื่องหมายเป็น Date table แล้ว FIRSTDATE จะรู้ว่าต้องหาวันที่แรก “ของช่วงที่ถูกกรองอยู่” (เช่นวันแรกของเดือนที่เลือก ไม่ใช่วันแรกของปีทั้งปี) เพราะมันพิจารณา filter context ด้วย

ส่วนตัวผมมักใช้ FIRSTDATE กับ CALCULATE เพื่อสร้าง opening balance measure หรือหาค่าเมื่อต้นไตรมาส ส่วนถ้าแค่อยากได้วันที่แรกเป็นค่าเดี่ยว (scalar) ผมอาจใช้ MIN ที่ง่ายกว่า ขึ้นอยู่กับบริบท แต่ FIRSTDATE ดีกว่าเมื่อต้องการ table เพื่อเป็นตัวกรอง

Leave a Reply

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