---
title: PREVIOUSQUARTER – ตารางวันที่ของไตรมาสก่อนหน้า
url: https://www.thepexcel.com/functions/dax/time-intelligence/previousquarter-dax/
type: function-explainer
program: DAX
syntax: "PREVIOUSQUARTER(<dates>)"
date: 2025-12-13
updated: 2025-12-20
scores:
  popularity: 5
  difficulty: 3
  usefulness: 5
---

# PREVIOUSQUARTER – ตารางวันที่ของไตรมาสก่อนหน้า

> คืนตารางวันที่ของไตรมาสก่อนหน้า ตามวันที่แรกในบริบทปัจจุบัน

## คำอธิบาย

PREVIOUSQUARTER คืนตารางวันที่ของไตรมาสก่อนหน้า ตามวันที่แรกในบริบทปัจจุบัน ใช้สำหรับสร้าง Measure เปรียบเทียบ Quarter-over-Quarter (QoQ) โดยคืนวันที่ครบทั้งไตรมาสเสมอ ไม่ว่าจะเลือกวันที่ใดก็ตาม ภายในใช้ PARALLELPERIOD(FIRSTDATE(dates), -1, QUARTER)

## Syntax

```excel
PREVIOUSQUARTER(&lt;dates&gt;)
```

**Variant**

```excel
PREVIOUSQUARTER(&lt;dates&gt;)
```

คืนตารางวันที่ของไตรมาสก่อนหน้า จากคอลัมน์วันที่ที่ระบุ

**Variant**

```excel
PREVIOUSQUARTER(&lt;calendar&gt;)
```

ใช้กับ Calendar reference (Power BI feature) สำหรับปีงบประมาณ

**Variant**

```excel
CALCULATE(&lt;expression&gt;, PREVIOUSQUARTER(&lt;dates&gt;))
```

รูปแบบพื้นฐานที่ใช้บ่อยที่สุด ใช้กับ CALCULATE เพื่อกรอง expression

**Variant**

```excel
IF([ShowValueForDates], CALCULATE(&lt;expression&gt;, PREVIOUSQUARTER(&lt;dates&gt;)))
```

รูปแบบที่แนะนำ: ใช้ ShowValueForDates Pattern เพื่อซ่อนค่าในช่วงที่ไม่มีข้อมูล

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| dates | Yes | column |  | คอลัมน์วันที่ (Date) ที่มาจากตารางวันที่/ปฏิทิน ต้องเป็นตารางที่มีวันที่ครบถ้วนต่อเนื่อง และ mark เป็น Date Table แล้ว |

## เคสการใช้งาน

### ยอดขายไตรมาสก่อนหน้า (Sales PQ)

สร้าง Measure แสดงยอดขายของไตรมาสก่อนหน้า เพื่อใช้เปรียบเทียบกับไตรมาสปัจจุบัน

_เหมาะกับ:_ qoq-compare

### คำนวณ QoQ Growth %

คำนวณอัตราการเติบโตแบบ Quarter-over-Quarter เป็นเปอร์เซ็นต์

_เหมาะกับ:_ growth-analysis

### เปรียบเทียบ KPI รายไตรมาส

ใช้กับ Measure ต่างๆ เช่น กำไร ต้นทุน จำนวนลูกค้า เพื่อดูแนวโน้มรายไตรมาส

_เหมาะกับ:_ quarterly-kpi

### ใช้ร่วมกับ ShowValueForDates Pattern

ซ่อนค่าในช่วงเวลาที่ยังไม่มีข้อมูลจริง เพื่อไม่ให้ผู้ใช้สับสน

_เหมาะกับ:_ data-visibility

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ยอดขายไตรมาสก่อนหน้า (พื้นฐาน)

```excel
Sales Previous Quarter =
CALCULATE(
    [Sales Amount],
    PREVIOUSQUARTER('Date'[Date])
)
```

**ผลลัพธ์:** `คืนยอดขายของไตรมาสก่อนหน้า เช่น ถ้าปัจจุบันคือ Q2 จะคืนยอดขายของ Q1`

PREVIOUSQUARTER คืนชุดวันที่ของไตรมาสก่อนหน้า แล้วนำไปเป็นตัวกรองเวลาใน CALCULATE สมมติตาราง Sales มีข้อมูลยอดขาย Q1 = 500,000 และ Q2 = 650,000 ถ้าเลือก Q2 Measure นี้จะคืนค่า 500,000

### 2. ตัวอย่างที่ 2: ใช้ ShowValueForDates Pattern (แนะนำ)

```excel
-- Step 1: สร้าง ShowValueForDates Measure (ซ่อนไว้)
ShowValueForDates =
VAR LastDateWithData =
    CALCULATE(
        MAX(Sales[OrderDate]),
        REMOVEFILTERS()
    )
VAR FirstDateVisible =
    MIN('Date'[Date])
VAR Result =
    FirstDateVisible <= LastDateWithData
RETURN
    Result

-- Step 2: ใช้ใน Measure หลัก
Sales PQ =
IF(
    [ShowValueForDates],
    CALCULATE(
        [Sales Amount],
        PREVIOUSQUARTER('Date'[Date])
    )
)
```

**ผลลัพธ์:** `คืนยอดขายไตรมาสก่อนหน้า เฉพาะเมื่อช่วงเวลาที่เลือกมีข้อมูลจริง ถ้าเลือกช่วงอนาคตจะคืน BLANK`

ShowValueForDates Pattern จาก DAXPatterns.com ช่วยไม่ให้แสดงค่าในช่วงเวลาที่ยังไม่มีข้อมูล เช่น ถ้าข้อมูลล่าสุดคือ 15 มิ.ย. 2024 แต่ผู้ใช้เลือก Q3 2024 Measure นี้จะคืน BLANK แทนที่จะแสดงค่า Q2 ซึ่งอาจทำให้สับสน ส่วนตัวผมแนะนำให้ใช้ Pattern นี้เสมอครับ 💡

### 3. ตัวอย่างที่ 3: คำนวณ QoQ Growth %

```excel
-- Step 1: ยอดขายไตรมาสก่อนหน้า
Sales PQ =
IF(
    [ShowValueForDates],
    CALCULATE(
        [Sales Amount],
        PREVIOUSQUARTER('Date'[Date])
    )
)

-- Step 2: ผลต่างไตรมาส
Sales QOQ =
VAR CurrentQtr = [Sales Amount]
VAR PrevQtr = [Sales PQ]
RETURN
    CurrentQtr - PrevQtr

-- Step 3: เปอร์เซ็นต์การเติบโต
Sales QOQ % =
DIVIDE(
    [Sales QOQ],
    [Sales PQ],
    BLANK()
)
```

**ผลลัพธ์:** `สมมติ Q1 = 500,000 และ Q2 = 650,000 จะได้ QoQ = 150,000 และ QoQ % = 30%`

Pattern มาตรฐานสำหรับคำนวณ Quarter-over-Quarter Growth ใช้ DIVIDE เพื่อจัดการกรณีหารด้วยศูนย์ ถ้า Q1 เป็น BLANK จะคืน BLANK แทน Error ที่เจ๋งคือ Pattern นี้ใช้ได้กับทุก Measure ไม่ว่าจะเป็น Revenue, Profit, หรือ Customer Count 😎

### 4. ตัวอย่างที่ 4: เปรียบเทียบ PREVIOUSQUARTER vs DATEADD

```excel
-- วิธีที่ 1: PREVIOUSQUARTER (คืนทั้งไตรมาส)
Sales PQ Method1 =
CALCULATE(
    [Sales Amount],
    PREVIOUSQUARTER('Date'[Date])
)

-- วิธีที่ 2: DATEADD (shift ตาม granularity)
Sales PQ Method2 =
CALCULATE(
    [Sales Amount],
    DATEADD('Date'[Date], -1, QUARTER)
)
```

**ผลลัพธ์:** `ถ้าเลือก Q2 ทั้งหมด: ทั้งสองวิธีคืนค่าเท่ากัน (ยอดขาย Q1)
ถ้าเลือกเฉพาะเดือน พ.ค.: PREVIOUSQUARTER คืนยอดขาย Q1 ทั้งหมด แต่ DATEADD คืนยอดขายเดือน ก.พ. เท่านั้น`

PREVIOUSQUARTER ใช้ PARALLELPERIOD(FIRSTDATE(dates), -1, QUARTER) ภายใน จึงคืนทั้งไตรมาสเสมอ ไม่ว่าจะเลือกวันที่ใด ส่วน DATEADD จะ shift วันที่ตามช่วงที่เลือก เลือกใช้ตามความเหมาะสม: ต้องการเทียบทั้งไตรมาส ใช้ PREVIOUSQUARTER ต้องการ shift แบบรักษา granularity ใช้ DATEADD

### 5. ตัวอย่างที่ 5: เปรียบเทียบไตรมาสเดียวกันปีก่อน (Same Quarter Last Year)

```excel
-- ไตรมาสเดียวกันปีก่อน (เช่น Q2 2024 vs Q2 2023)
Sales SQLY =
IF(
    [ShowValueForDates],
    CALCULATE(
        [Sales Amount],
        SAMEPERIODLASTYEAR('Date'[Date])
    )
)

-- เปรียบเทียบกับไตรมาสก่อนหน้า (Q2 2024 vs Q1 2024)
Sales PQ =
IF(
    [ShowValueForDates],
    CALCULATE(
        [Sales Amount],
        PREVIOUSQUARTER('Date'[Date])
    )
)

-- YoY Growth % (เทียบปีต่อปี)
Sales YoY % =
DIVIDE(
    [Sales Amount] - [Sales SQLY],
    [Sales SQLY],
    BLANK()
)
```

**ผลลัพธ์:** `สมมติ Q2 2023 = 400,000, Q1 2024 = 500,000, Q2 2024 = 650,000
SQPY = 400,000 (Q2 ปีก่อน), PQ = 500,000 (Q1 ปีนี้), YoY % = 62.5%`

SAMEPERIODLASTYEAR คืนช่วงเวลาเดียวกันของปีก่อน (ภายในใช้ DATEADD -1 YEAR) ใช้สำหรับเปรียบเทียบ Seasonality เช่น Q4 มักขายดีเพราะ Holiday Season ส่วน PREVIOUSQUARTER ใช้เปรียบเทียบ Sequential ดูแนวโน้มต่อเนื่อง ส่วนตัวผมแนะนำให้สร้างทั้งสอง Measure เพื่อให้ผู้ใช้วิเคราะห์ได้หลายมุมครับ 😎

### 6. ตัวอย่างที่ 6: ใช้กับ HASONEVALUE สำหรับ Drill-down

```excel
Sales PQ with Drill =
IF(
    [ShowValueForDates] && HASONEVALUE('Date'[Year Quarter]),
    CALCULATE(
        [Sales Amount],
        PREVIOUSQUARTER('Date'[Date])
    )
)
```

**ผลลัพธ์:** `แสดงค่าเฉพาะเมื่อเลือกไตรมาสเดียว ถ้าเลือกหลายไตรมาสหรือทั้งปีจะคืน BLANK`

HASONEVALUE ตรวจสอบว่าผู้ใช้เลือกเพียงไตรมาสเดียวหรือไม่ ป้องกันผลลัพธ์ที่อาจสับสนเมื่อเลือกหลายไตรมาส เพราะ PREVIOUSQUARTER ใช้ FIRSTDATE จึงจะคืนเฉพาะไตรมาสก่อนหน้าของวันที่แรกเท่านั้น Pattern นี้มาจาก DAXPatterns.com ครับ

## หมายเหตุเพิ่มเติม

💡 **Tips จากประสบการณ์:**
.
PREVIOUSQUARTER เหมาะกับการทำรายงานเทียบไตรมาสต่อไตรมาส โดยนำชุดวันที่ของไตรมาสก่อนหน้ามาเป็นตัวกรองเวลาใน CALCULATE
.
ที่ต้องระวังคือ PREVIOUSQUARTER ใช้ FIRSTDATE ภายใน ดังนั้นถ้าผู้ใช้เลือกหลายไตรมาสพร้อมกัน จะได้เฉพาะไตรมาสก่อนหน้าของวันที่แรกเท่านั้น แนะนำให้ใช้ HASONEVALUE ร่วมด้วย
.
ส่วนตัวผมใช้ ShowValueForDates Pattern เสมอ เพราะช่วยให้ Dashboard ไม่แสดงค่าในช่วงอนาคตที่ยังไม่มีข้อมูลจริง ทำให้ผู้ใช้ไม่สับสนครับ 😎

## คำถามที่พบบ่อย

**Q: PREVIOUSQUARTER ต่างจาก DATEADD(-1, QUARTER) อย่างไร?**

PREVIOUSQUARTER คืนทั้งไตรมาสก่อนหน้าเสมอ ไม่ว่าจะเลือกวันที่ใด (ใช้ PARALLELPERIOD + FIRSTDATE ภายใน) ส่วน DATEADD shift วันที่ตามช่วงที่เลือก เช่น ถ้าเลือกเดือน พ.ค. PREVIOUSQUARTER คืน Q1 ทั้งหมด แต่ DATEADD คืนเฉพาะ ก.พ. เลือกตามความต้องการ: เทียบทั้งไตรมาส ใช้ PREVIOUSQUARTER, shift แบบรักษา granularity ใช้ DATEADD ครับ

**Q: ทำไมถึงต้องใช้ ShowValueForDates Pattern?**

ถ้าไม่ใช้ เมื่อผู้ใช้เลือกช่วงเวลาในอนาคต (ที่ยังไม่มีข้อมูล) Measure จะแสดงค่าของไตรมาสก่อนหน้าซึ่งอาจทำให้สับสน เช่น เลือก Q3 2024 (ยังไม่มีข้อมูล) แต่แสดงยอดขาย Q2 ShowValueForDates ช่วยให้คืน BLANK ในกรณีนี้ครับ 😅

**Q: ไตรมาสของ PREVIOUSQUARTER อิงตามปฏิทินแบบไหน?**

ขึ้นอยู่กับตารางวันที่ของคุณ ถ้าเป็น Standard Calendar ไตรมาสจะเป็น Q1=ม.ค.-มี.ค., Q2=เม.ย.-มิ.ย., Q3=ก.ค.-ก.ย., Q4=ต.ค.-ธ.ค. สำหรับ Fiscal Year สามารถใช้ Calendar reference ใน Power BI หรือสร้างตารางวันที่แบบ Custom ได้ครับ

**Q: ถ้าต้องการเทียบไตรมาสเดียวกันปีก่อน ใช้ฟังก์ชันอะไร?**

ใช้ SAMEPERIODLASTYEAR ซึ่งภายในทำงานเหมือน DATEADD(-1, YEAR) เช่น Q2 2024 จะเทียบกับ Q2 2023 ซึ่งเหมาะสำหรับวิเคราะห์ Seasonality ส่วน PREVIOUSQUARTER เทียบแบบ Sequential (Q2 vs Q1) เหมาะสำหรับดูแนวโน้มต่อเนื่องครับ

**Q: ทำไม PREVIOUSQUARTER ถึงใช้ FIRSTDATE ภายใน?**

เพราะ PREVIOUSQUARTER ต้องการคืนไตรมาสเดียวเท่านั้น ไม่ว่าผู้ใช้จะเลือกช่วงวันที่ยาวแค่ไหน ภายในจึงใช้ PARALLELPERIOD(FIRSTDATE(dates), -1, QUARTER) ซึ่งหมายความว่าถ้าเลือกหลายไตรมาส จะได้เฉพาะไตรมาสก่อนหน้าของวันที่แรกเท่านั้น ควรใช้ HASONEVALUE ร่วมด้วยเพื่อป้องกันความสับสนครับ 💡

**Q: PREVIOUSQUARTER รองรับ DirectQuery หรือไม่?**

รองรับใน Measures และ Calculated Tables แต่ไม่รองรับใน Calculated Columns หรือ Row-Level Security (RLS) rules เมื่อใช้ DirectQuery mode ถ้าต้องการใช้ใน RLS ให้พิจารณาใช้ DATEADD แทนครับ

## ฟังก์ชันที่เกี่ยวข้อง

- [CALCULATE – ฟังก์ชันหลักของ DAX ที่ควบคุม Filter Context](https://www.thepexcel.com/functions/dax/filter/calculate-dax/)
- [PREVIOUSDAY – ตารางวันที่ของวันก่อนหน้า](https://www.thepexcel.com/functions/dax/time-intelligence/previousday-dax/)
- [PREVIOUSMONTH – ตารางวันที่ของเดือนก่อนหน้า](https://www.thepexcel.com/functions/dax/time-intelligence/previousmonth-dax/)
- [PREVIOUSYEAR – ตารางวันที่ของปีก่อนหน้า](https://www.thepexcel.com/functions/dax/time-intelligence/previousyear-dax/)
- [DATEADD – เลื่อนช่วงเวลาไปข้างหน้าหรือย้อนหลัง (Shift Dates)](https://www.thepexcel.com/functions/dax/time-intelligence/dateadd-dax/)
- [PARALLELPERIOD – เลื่อนช่วงเวลาแบบเต็มเดือน/ไตรมาส/ปี (Full Period Shift)](https://www.thepexcel.com/functions/dax/time-intelligence/parallelperiod-dax/)
- [SAMEPERIODLASTYEAR – คืนช่วงเวลาเดียวกันของปีก่อนหน้า (Year-over-Year)](https://www.thepexcel.com/functions/dax/time-intelligence/sameperiodlastyear-dax/)
- [FIRSTDATE – วันที่แรกในบริบทตัวกรองปัจจุบัน](https://www.thepexcel.com/functions/dax/time-intelligence/firstdate-dax/)
- [NEXTQUARTER – เลื่อนช่วงวันที่ไปเป็น “ไตรมาสถัดไป”](https://www.thepexcel.com/functions/dax/time-intelligence/nextquarter-dax/)

## แหล่งข้อมูลเพิ่มเติม

- [DAX Guide: PREVIOUSQUARTER](https://dax.guide/previousquarter/) _(documentation)_
- [Microsoft Learn: PREVIOUSQUARTER](https://learn.microsoft.com/en-us/dax/previousquarter-function-dax) _(documentation)_
- [DAX Patterns: Standard Time-Related Calculations](https://www.daxpatterns.com/standard-time-related-calculations/) _(guide)_
- [SQLBI: Differences between DATEADD and PARALLELPERIOD](https://www.sqlbi.com/articles/differences-between-dateadd-and-parallelperiod-in-dax/) _(guide)_

---

_Source: [https://www.thepexcel.com/functions/dax/time-intelligence/previousquarter-dax/](https://www.thepexcel.com/functions/dax/time-intelligence/previousquarter-dax/)_
