---
title: ADDCOLUMNS – เพิ่มคอลัมน์คำนวณให้ตาราง
url: https://www.thepexcel.com/functions/dax/table-manipulation/addcolumns-dax/
type: function-explainer
program: DAX
syntax: "ADDCOLUMNS(<table>, <name>, <expression>[, <name>, <expression>]...)"
date: 2025-12-13
updated: 2025-12-22
scores:
  popularity: 7
  difficulty: 5
  usefulness: 7
---

# ADDCOLUMNS – เพิ่มคอลัมน์คำนวณให้ตาราง

> ADDCOLUMNS เป็นฟังก์ชัน table transformation ที่ใช้สำหรับเพิ่มคอลัมน์ใหม่ (Calculated Columns) เข้าไ

## คำอธิบาย

ADDCOLUMNS เป็นฟังก์ชัน table transformation ที่ใช้สำหรับเพิ่มคอลัมน์ใหม่ (Calculated Columns) เข้าไปในตารางที่มีอยู่เดิม โดยคำนวณค่าในแต่ละแถวผ่าน Row Context และส่งคืนตารางเดิมพร้อมคอลัมน์ใหม่ต่อท้าย

## Syntax

```excel
ADDCOLUMNS(&lt;table&gt;, &lt;name&gt;, &lt;expression&gt;[, &lt;name&gt;, &lt;expression&gt;]...)
```

**Variant**

```excel
ADDCOLUMNS(table, name, expression, [name, expression]...)
```

เพิ่มคอลัมน์ใหม่หนึ่งคอลัมน์หรือมากกว่าให้กับตารางต้นฉบับ

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| table | Yes | Table |  | ตารางต้นฉบับ หรือตารางที่ได้จาก DAX Expression (เช่น FILTER, ALL, VALUES เป็นต้น) |
| name | Yes | Text |  | ชื่อของคอลัมน์ใหม่ที่ต้องการสร้าง ต้องใส่ในเครื่องหมายคำพูด "..." |
| expression | Yes | Scalar |  | สูตร DAX ที่ใช้คำนวณค่าในคอลัมน์ใหม่ จะถูกคำนวณในแต่ละแถวของตาราง (Row Context) |

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

### การสร้าง Date Table มาตรฐาน

ใช้ ADDCOLUMNS เพื่อเพิ่มคอลัมน์ Year, Month, Quarter, Fiscal Year เข้าไปในตารางที่สร้างจาก CALENDAR() หรือ CALENDARAUTO() เพื่อใช้เป็น Dimension Table หลักในโมเดล

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

### การ Debug ค่าใน Virtual Table

เมื่อเขียนสูตรซับซ้อน เราสามารถใช้ ADDCOLUMNS สร้างตารางทดสอบเพื่อดูค่าที่คำนวณได้ในแต่ละแถว ก่อนที่จะนำไป Aggregate ด้วย SUMX หรือ AVERAGEX

_เหมาะกับ:_ debugging

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: เพิ่มคอลัมน์คำนวณราคาสุทธิ (สร้างตาราง helper)

```excel
ADDCOLUMNS(
    Sales,
    "NetPrice", [Quantity] * [Price]
)
```

**ผลลัพธ์:** `ตาราง Sales ที่มีคอลัมน์ NetPrice เพิ่มเข้ามา (รวม Quantity, Price, NetPrice)`

สร้างคอลัมน์ใหม่ชื่อ NetPrice โดยคำนวณจากการคูณ Quantity กับ Price ในแต่ละแถว Row Context จะคำนวณอัตโนมัติสำหรับแต่ละแถว

### 2. ตัวอย่างที่ 2: เพิ่มหลายคอลัมน์พร้อมกัน (ส่วนลด และ ราคาสุดท้าย)

```excel
ADDCOLUMNS(
    Sales,
    "DiscountAmount", [Amount] * 0.1,
    "FinalPrice", [Amount] * 0.9
)
```

**ผลลัพธ์:** `ตาราง Sales ที่มีคอลัมน์ DiscountAmount และ FinalPrice เพิ่มเข้ามา`

เพิ่มสองคอลัมน์พร้อมกัน โดยใช้ช่วง name-expression pairs แต่ละคู่ ADDCOLUMNS จะคำนวณในลำดับ ดังนั้น FinalPrice สามารถอ้างอิง Amount ได้เลย

### 3. ตัวอย่างที่ 3: ใช้กับ FILTER และ RELATED (คำนวณยอดขายต่อสินค้า)

```excel
ADDCOLUMNS(
    FILTER(Products, Products[Category] = "Electronics"),
    "TotalSales", CALCULATE(SUM(Sales[Amount]))
)
```

**ผลลัพธ์:** `ตาราง Products ที่ filter เฉพาะ Category = Electronics พร้อมคอลัมน์ TotalSales`

สำคัญ! เพราะใช้ CALCULATE ร่วมกับ SUM ภายในแถว จาก Row Context (Products[ProductID]) ของแต่ละแถว CALCULATE จะรู้ว่าต้องกรองยอดขายสำหรับสินค้านั้นเท่านั้น มันใช้ Filter Context Transition

### 4. ตัวอย่างที่ 4: ใช้กับ GENERATE เพื่อสร้างตารางจำลอง (Simulation Table)

```excel
ADDCOLUMNS(
    GENERATE(
        VALUES(Products[ProductID]),
        ROW("SalesAmount", CALCULATE(SUM(Sales[Amount])))
    ),
    "SalesPct", DIVIDE([SalesAmount], CALCULATE(SUM(Sales[Amount]), ALL(Products)), 0)
)
```

**ผลลัพธ์:** `ตารางที่มีโครงสร้าง ProductID, SalesAmount, SalesPct พร้อมคำนวณสัดส่วน`

ประยุกต์ใช้ชั้นสูง: GENERATE สร้างจำลองตาราง สูตรแรก ROW ทำให้ได้ SalesAmount แล้ว ADDCOLUMNS เข้ามาเพิ่ม SalesPct โดยหารด้วย ALL(Products) เพื่อได้สัดส่วนต่อยอดขายรวมทั้งหมด

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

- ADDCOLUMNS สร้าง Row Context เท่านั้น - ถ้าต้อง Aggregate ต้องใช้ CALCULATE

- คุณสามารถอ้างอิงคอลัมน์ที่เพิ่งสร้างไปแล้วในการสร้างคอลัมน์ต่อไป - เช่น ADDCOLUMNS(..., "Col1", expr1, "Col2", [Col1] * 2)

- ใช้ ADDCOLUMNS ร่วมกับ GENERATE เพื่อสร้างตาราง helper ที่ซับซ้อนและใช้ต่อใน SUMX, FILTER, หรือ other table functions

- หากต้องการเปลี่ยนตัวแปร (row context) ใน expression ให้ใช้ AS keyword - เช่น ADDCOLUMNS(Sales AS CurrentSale, ...)

- ตรวจสอบ DirectQuery mode - ADDCOLUMNS ไม่ได้รับการสนับสนุนบน Calculated Columns และ RLS rules เมื่อใช้ DirectQuery

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

**Q: ADDCOLUMNS ต่างจาก SELECTCOLUMNS อย่างไร?**

ADDCOLUMNS จะ 'เก็บ' คอลัมน์เดิมของตารางไว้ทั้งหมด และเพิ่มคอลัมน์ใหม่ต่อท้าย ส่วน SELECTCOLUMNS จะ 'ทิ้ง' คอลัมน์เดิมทั้งหมด แล้วสร้างตารางใหม่ที่มีเฉพาะคอลัมน์ที่คุณระบุ ส่วนตัวผมใช้ ADDCOLUMNS ตอนต้องการเก็บข้อมูลเดิมไว้ แต่อยากเพิ่มข้อมูลใหม่เข้ามา

**Q: ทำไมค่าที่คำนวณได้บางครั้งเท่ากันทุกแถว?**

ปัญหานี้เจอบ่อยครับ 😅 สาเหตุหลักคือการใช้ฟังก์ชัน Aggregate (เช่น SUM) โดยไม่มี CALCULATE ข้าง หรือไม่ใช้ RELATED ในการเลือกคอลัมน์จากตาราง Related ถ้าจะใช้ SUM ต้องครอบด้วย CALCULATE เพื่อให้รู้ว่าต้องกรองข้อมูลตามแถวปัจจุบันนะครับ

**Q: ADDCOLUMNS ทำงานได้บน Calculated Columns หรือแค่ Measures?**

ได้ทั้งสองแบบ! ใช้ใน Measures ได้ (เหมาะสำหรับสร้างตารางชั่วคราว) และใช้ใน Calculated Columns ของตารางได้ด้วย แต่ใน DirectQuery mode ไม่สนับสนุน Calculated Columns และ RLS rules ที่ใช้ ADDCOLUMNS

**Q: ฉันต้องใช้เครื่องหมายคำพูด " " สำหรับชื่อคอลัมน์ใหม่หรือไม่?**

ใช่ ต้องใส่เครื่องหมายคำพูด " " เสมอ ถึงแม้ชื่อจะไม่มีช่องว่างก็ตาม ถ้าชื่อคอลัมน์มีช่องว่างหรืออักขระพิเศษ ให้ครอบด้วยวงเล็บเหลี่ยม [] แต่ส่วนตัวผมชอบใช้เครื่องหมายคำพูด เพราะมันชัดเจนว่า column ใหม่นี้จริง ๆ แล้วคือการคำนวณเท่านั้น 😎

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

- [SELECTCOLUMNS – ฟังก์ชัน DAX](https://www.thepexcel.com/functions/dax/table-manipulation/selectcolumns-dax/)
- [GENERATE – วนแถวตารางแรก สร้างตารางเพิ่มเติมในแต่ละรอบ แล้วรวมผลทั้งหมด](https://www.thepexcel.com/functions/dax/table-manipulation/generate-dax/)
- [CALCULATETABLE – Evaluate Table Expression ใน Modified Filter Context](https://www.thepexcel.com/functions/dax/filter/calculatetable-dax/)
- [FILTER – กรองตารางด้วยเงื่อนไขที่ซับซ้อน (Iterator Function)](https://www.thepexcel.com/functions/dax/filter/filter-dax/)
- [SUMX – Iterator Function สำหรับคำนวณผลรวมแบบ Row-by-Row ใน DAX](https://www.thepexcel.com/functions/dax/aggregation/sumx-dax/)
- row-dax

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

- [Microsoft Learn: ADDCOLUMNS](https://learn.microsoft.com/en-us/dax/addcolumns-function-dax) _(official)_
- [DAX Guide: ADDCOLUMNS](https://dax.guide/addcolumns/) _(guide)_
- [SQLBI: ADDCOLUMNS Pattern](https://www.sqlbi.com/articles/working-with-table-functions-in-dax/) _(guide)_

---

_Source: [https://www.thepexcel.com/functions/dax/table-manipulation/addcolumns-dax/](https://www.thepexcel.com/functions/dax/table-manipulation/addcolumns-dax/)_
