---
title: RIGHT – ตัดข้อความจากขวา (DAX)
url: https://www.thepexcel.com/functions/dax/text/right-dax/
type: function-explainer
program: DAX
syntax: "RIGHT(<text>, [<num_chars>])"
date: 2025-12-14
updated: 2025-12-23
scores:
  popularity: 7
  difficulty: 2
  usefulness: 7
---

# RIGHT – ตัดข้อความจากขวา (DAX)

> RIGHT คืนค่าตัวอักษรจำนวนหนึ่งจากจุดสิ้นสุดของข้อความ (ด้านขวา) ตามจำนวนที่ระบุ

## คำอธิบาย

RIGHT คืนค่าตัวอักษรจำนวนหนึ่งจากจุดสิ้นสุดของข้อความ (ด้านขวา) ตามจำนวนที่ระบุ

## Syntax

```excel
RIGHT(&lt;text&gt;, [&lt;num_chars&gt;])
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| text | Yes | text |  | ข้อความที่ต้องการตัดคำ หรือคอลัมน์ที่มีข้อความ (Table[Column] format) |
| num_chars | No | integer | 1 | จำนวนตัวอักษรที่ต้องการดึง ถ้าไม่ใส่จะดึง 1 ตัว สามารถเป็นค่าคงที่หรือคอลัมน์อื่นได้ |

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

### ดึงปีจากรหัส

ดึงตัวเลข 4 ตัวท้ายของรหัส Invoice ที่แสดงปี (เช่น INV-2023)

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

## ตัวอย่าง

### 1. ดึง 4 ตัวท้าย (Calculated Column)

```excel
Year Suffix = RIGHT(Sales[InvoiceNo], 4)
```

**ผลลัพธ์:** `"2023"`

ถ้า InvoiceNo คือ "INV-001-2023" จะได้ "2023" (ใช้ Row Context โดยอัตโนมัติในเมิจเมอร์)

### 2. ดึงตัวสุดท้าย (Default)

```excel
Last Code = RIGHT(Product[Code])
```

**ผลลัพธ์:** `"D"`

ถ้า Code คือ "ABC-D" จะได้ "D" (ดึง 1 ตัวเพราะ num_chars ไม่ระบุ)

### 3. ตรวจสอบ Suffix ด้วย IF

```excel
Is Premium = IF(RIGHT(Product[SKU], 3) = "PRE", TRUE, FALSE)
```

**ผลลัพธ์:** `TRUE/FALSE`

ตรวจสอบว่า SKU ลงท้ายด้วย "PRE" หรือไม่ (ใช้เงื่อนไขกับผลลัพธ์ของ RIGHT)

### 4. แปลงผลลัพธ์เป็นตัวเลข

```excel
Last 2 Digits = VALUE(RIGHT(Sales[OrderID], 2))
```

**ผลลัพธ์:** `23 (Number, not Text)`

ดึง 2 ตัวท้ายแล้วแปลงเป็นตัวเลข เพื่อนำไปคำนวณต่อได้

### 5. ใช้กับตัวเลขแปรผัน

```excel
Variable Extract = RIGHT(Product[Description], Product[CharCount])
```

**ผลลัพธ์:** `ขึ้นอยู่กับค่า CharCount`

ดึงจำนวนตัวอักษรตามค่าในคอลัมน์ CharCount (ต่างจากจำนวนคงที่)

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

- ใช้ Table[Column] แทน Address Reference (A1:A10) เพราะแบบนี้จะอัพเดตข้อมูลอัตโนมัติเมื่อข้อมูลเปลี่ยน

- ถ้าข้อความมีความยาวไม่เท่ากันในแต่ละแถว ใช้ LEN() ร่วมกับ RIGHT เพื่อหาความยาวก่อน เช่น RIGHT(Text, LEN(Text) - 1)

- ประสมกับ SEARCH หรือ FIND เพื่อดึงส่วนท้ายจากตำแหน่งเฉพาะ เช่น RIGHT(Text, LEN(Text) - FIND("-", Text))

- RIGHT ทำงานช้าลงเล็กน้อยเมื่อข้อความยาวมากๆ ถ้า Performance เป็นปัญหา ลองใช้ Calculated Column แทน Measure

- ใช้ร่วมกับ TRIM() เพื่อตัดช่องว่างหลังจากดึงข้อความ เช่น TRIM(RIGHT(Text, 10))

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

**Q: ผลลัพธ์เป็น Text หรือ Number?**

เป็น Text เสมอ ถ้าต้องการนำไปคำนวณทางคณิตศาสตร์ต้องใช้ฟังก์ชัน VALUE() แปลง เช่น RIGHT(Code, 3) + 100 จะเกิดข้อผิดพลาด ต้องเป็น VALUE(RIGHT(Code, 3)) + 100

**Q: ใช้ได้กับ Power Query (M) ไหม?**

ไม่ใช่ ฟังก์ชัน RIGHT เป็นของ DAX เท่านั้น Power Query จะใช้ Text.End() แทน

**Q: ถ้า num_chars มากกว่าความยาวข้อความ จะเกิดอะไรขึ้น?**

DAX จะคืนค่าข้อความทั้งหมด เช่น RIGHT("Hello", 10) จะคืน "Hello" ไม่ใช่ข้อผิดพลาด

**Q: RIGHT กับ LEFT ต่างกันยังไง?**

RIGHT ดึงจากด้านขวา LEFT ดึงจากด้านซ้าย เช่น RIGHT("ABC123", 3) ได้ "123" แต่ LEFT("ABC123", 3) ได้ "ABC"

**Q: ใช้ได้กับ DirectQuery ไหม?**

ไม่ได้ ถ้าใช้ DirectQuery สำหรับ Calculated Column หรือ RLS จะเกิดข้อผิดพลาด ต้องใช้ Import Mode

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

- [Microsoft Learn: RIGHT Function](https://learn.microsoft.com/en-us/dax/right-function-dax) _(official)_
- [DAX.guide: RIGHT](https://dax.guide/right/) _(guide)_
- [Related: LEFT Function](https://learn.microsoft.com/en-us/dax/left-function-dax) _(official)_
- [Related: MID Function](https://learn.microsoft.com/en-us/dax/mid-function-dax) _(official)_

---

_Source: [https://www.thepexcel.com/functions/dax/text/right-dax/](https://www.thepexcel.com/functions/dax/text/right-dax/)_
