---
title: FLATTEN – แปลงข้อมูลหลายคอลัมน์ให้เป็นคอลัมน์เดียว
url: https://www.thepexcel.com/functions/google-sheets/array/flatten-google-sheets/
type: function-explainer
program: Google Sheets
syntax: "=FLATTEN(range1, [range2, ...])"
date: 2025-12-13
updated: 2025-12-25
scores:
  popularity: 5
  difficulty: 3
  usefulness: 5
---

# FLATTEN – แปลงข้อมูลหลายคอลัมน์ให้เป็นคอลัมน์เดียว

> FLATTEN รวมข้อมูลจากหนึ่งหรือหลายช่วงเข้าด้วยกันเป็นคอลัมน์เดียว โดยเรียงลำดับแถวก่อน (Row-major ord

## คำอธิบาย

FLATTEN รวมข้อมูลจากหนึ่งหรือหลายช่วงเข้าด้วยกันเป็นคอลัมน์เดียว โดยเรียงลำดับแถวก่อน (Row-major order) ช่วงข้อมูลไม่จำเป็นต้องมีขนาดเดียวกัน และสามารถผสมเซลล์ เรนจ์ และค่าคงที่ได้

## Syntax

```excel
=FLATTEN(range1, [range2, ...])
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| range1 | Yes | Range/Array |  | ช่วงข้อมูลแรกที่ต้องการแปลง สามารถเป็นเซลล์เดี่ยว แถว คอลัมน์ หรือตาราง 2 มิติ ได้ |
| range2 | No | Range/Array |  | ช่วงข้อมูลเพิ่มเติม (ตัวเลือก) ฟังก์ชันจะนำข้อมูลจาก range2 มาเรียงต่อท้าย range1 คุณสามารถเพิ่มได้ถึง 254 ช่วง |

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

### Unpivot ข้อมูล

แปลงตารางสรุป (Crosstab) กลับเป็นตารางฐานข้อมูล (Database Format) เพื่อนำไปทำ Pivot Table

### รวมรายชื่อจากหลายห้อง

รวมรายชื่อนักเรียนที่อยู่คนละคอลัมน์ (เช่น ห้อง 1, ห้อง 2, ห้อง 3) ให้มาอยู่ในคอลัมน์เดียวกัน

### หาค่าที่ไม่ซ้ำจากทั้งตาราง

ใช้ร่วมกับ UNIQUE เพื่อหาค่าที่ไม่ซ้ำ (Unique Values) จากช่วงข้อมูล 2 มิติ

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: แปลงตาราง 2 มิติเป็น 1 มิติ (Row-by-Row Order)

```excel
=FLATTEN(A1:C2)
```

**ผลลัพธ์:** `A1, B1, C1, A2, B2, C2`

FLATTEN ใช้ Row-major order หมายความว่ามันเรียงข้อมูลไปแบบแถว (Row) ก่อน ถ้าข้อมูลในช่วง A1:C2 เป็นแบบนี้:

A1='Name'  B1='Age'  C1='City'
A2='John'  B2='25'   C2='BKK'

ผลลัพธ์จะออกมาเรียงแบบ: Name, Age, City, John, 25, BKK (ไม่ใช่ Name, John, Age, 25, ...)

### 2. ตัวอย่างที่ 2: หาค่า Unique จากหลายคอลัมน์

```excel
=UNIQUE(FLATTEN(A2:C10))
```

**ผลลัพธ์:** `รายการค่าที่ไม่ซ้ำกันทั้งหมด เรียงลงในคอลัมน์เดียว`

การรวม FLATTEN กับ UNIQUE นี้มีประโยชน์มากครับ เวลาคุณต้องการหาว่าในตาราง A2:C10 นี้ มีค่าไหนบ้างที่ปรากฏมากกว่า 1 ครั้ง

สมมติในตาราง มี Name 'John' อยู่ 3 ที่ อยากหายังไงให้ 'John' ปรากฏแค่ครั้งเดียวในผลลัพธ์ UNIQUE(FLATTEN(...)) ก็ช่วยได้

### 3. ตัวอย่างที่ 3: ลบช่องว่างออกจากผลลัพธ์

```excel
=FILTER(FLATTEN(A2:C10), FLATTEN(A2:C10) <> "")
```

**ผลลัพธ์:** `รายการข้อมูลเรียงกันในคอลัมน์เดียว โดยไม่รวมช่องว่าง`

FLATTEN มันปกติจะเก็บช่องว่างด้วย หากข้อมูลของคุณมีหลาย ๆ เซลล์ที่ยังเว่าว่างไว้ FILTER จะช่วยกรองเอาแค่เซลล์ที่มีข้อมูลออกมา

ในตัวอย่างนี้ FLATTEN(A2:C10) จะเรียงทั้งหมด แล้วก่อนส่งต่อให้ FILTER ประโยค FLATTEN(A2:C10)  "" จะเก็บแค่ค่าที่ไม่เท่ากับช่องว่างเท่านั้น

### 4. ตัวอย่างที่ 4: รวมหลายช่วงจากที่ต่างกัน

```excel
=FLATTEN(A1:A10, C1:C10, E1:E10)
```

**ผลลัพธ์:** `ค่าทั้งหมดจาก A1:A10 เรียงลงมา แล้วค่อย C1:C10 แล้ว E1:E10`

เมื่อคุณใส่หลายช่วง FLATTEN จะเอาทั้ง range1 มาเรียงเสร็จก่อน แล้วค่อยเอา range2 มาต่อท้าย

นี่มีประโยชน์เวลาคุณต้องการรวมข้อมูลจากหลายโซนที่ไม่ติดกัน เช่น เงินฝากจากสาขา A, B, C ที่อยู่คนละเซลล์กัน

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

- FLATTEN ไม่ลบช่องว่างโดยอัตโนมัติ ถ้าหากข้อมูลมีเซลล์ว่างๆ อยู่ ต้องใช้ FILTER ลบออกด้วย =FILTER(FLATTEN(A1:C10), FLATTEN(A1:C10)  "")

- เมื่อใช้หลายช่วง FLATTEN จะเรียง range1 ทั้งหมด แล้วค่อยต่อ range2 ต่อ range3 ตามลำดับ อย่าสับสนกับการเรียงแบบ Row-major order ของแต่ละ range

- ถ้า Error ออกมา (เช่น #DIV/0!) FLATTEN จะส่งผลลัพธ์ที่มี Error ด้วย ลองใช้ IFERROR ครอบไว้เช่น =IFERROR(FLATTEN(A1:C10), "")

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

**Q: FLATTEN กับ TOCOL ต่างกันอย่างไร?**

ใน Excel 365 มี TOCOL ที่ทำหน้าที่คล้ายกัน แต่ TOCOL ใน Excel มีฟีเจอร์เพิ่มเติม เช่น สามารถลบเซลล์ว่างได้ในตัว ส่วน Google Sheets' FLATTEN ต้องใช้ FILTER ช่วยเพื่อเก็บเฉพาะเซลล์ที่ไม่ว่าง หากอยากเรียงแบบ Column-major (ลำดับคอลัมน์ก่อน) ต้องใช้ TRANSPOSE ช่วยครับ

**Q: FLATTEN เรียงลำดับข้อมูลอย่างไรกันแน่?**

FLATTEN ใช้ Row-major order หมายความว่าเรียงตามแถวก่อน (Row by Row) ถ้าข้อมูล A1:C2 เป็นแบบนี้:

A1=อ  B1=ข  C1=ค
A2=ก  B2=ค  C2=ง

ผลลัพธ์จะออกมาเป็น: อ, ข, ค, ก, ค, ง (ไม่ใช่ อ, ก, ข, ค, ค, ง)

ถ้าคุณต้องการเรียงแบบ Column-major ลองใช้ TRANSPOSE(FLATTEN(...)) ดูครับ

**Q: ควรใช้ FLATTEN เมื่อไหร่?**

ผมแนะนำใช้ FLATTEN ในสถานการณ์เหล่านี้:
- เวลาต้องทำ Unpivoting (เปลี่ยนจากตาราง Wide Format เป็น Long Format)
- อยากรวมข้อมูลจากหลายคอลัมน์เข้าด้วยกัน
- ต้องการหาค่า Unique จากหลายคอลัมน์ (รวม UNIQUE)
- ต้องการกรองข้อมูลจากช่วงใหญ่ๆ (รวม FILTER)

ส่วนตัวผมมักใช้ FLATTEN + UNIQUE + FILTER เป็นคอมโบเก็บเก่า ครับ 😎

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

- [UNIQUE – ฟังก์ชันดึงค่าที่ไม่ซ้ำ](https://www.thepexcel.com/functions/excel/lookup-and-reference/unique/)
- [split](https://www.thepexcel.com/split/)
- [TRANSPOSE – กลับตาราง (Transpose)](https://www.thepexcel.com/functions/excel/lookup-and-reference/transpose/)

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

- [Google Sheets Help: FLATTEN](https://support.google.com/docs/answer/10307761?hl=en) _(official)_
- [Ben Collins - The FLATTEN Function in Google Sheets](https://www.benlcollins.com/spreadsheets/flatten-function/) _(article)_
- [Better Sheets - FLATTEN Function Tutorial](https://bettersheets.co/formulas/flatten) _(article)_

---

_Source: [https://www.thepexcel.com/functions/google-sheets/array/flatten-google-sheets/](https://www.thepexcel.com/functions/google-sheets/array/flatten-google-sheets/)_
