Thep Excel

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

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

fx
=FLATTEN(range1, [range2])

ความนิยม5/10
ความยาก3/10
ประโยชน์5/10

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
range1 Range/Array ช่วงข้อมูลแรกที่ต้องการแปลง สามารถเป็นเซลล์เดี่ยว แถว คอลัมน์ หรือตาราง 2 มิติ ได้
[range2]ไม่บังคับ Range/Array ช่วงข้อมูลเพิ่มเติม (ตัวเลือก) ฟังก์ชันจะนำข้อมูลจาก range2 มาเรียงต่อท้าย range1 คุณสามารถเพิ่มได้ถึง 254 ช่วง

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

FLATTEN เป็นฟังก์ชันที่เจ๋งจริง เพราะมันช่วยแปลงข้อมูลแบบตาราง 2 มิติ เป็นรายการ 1 มิติได้อย่างง่าย

เวลามีข้อมูลกระจายอยู่หลายคอลัมน์แล้ว ต้องการรวมมันลงเป็นคอลัมน์เดียว FLATTEN ก็ทำได้ทันที ไม่ต้องใช้ Helper Column หรือวิธีซับซ้อนอื่นๆ

ส่วนตัวผมชอบใช้ FLATTEN กับฟังก์ชันอื่นๆ เช่น UNIQUE, FILTER, QUERY เพื่อทำข้อมูลให้สะอาดและมีประโยชน์มากขึ้น ครับ

How it works

Unpivot ข้อมูล

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

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

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

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

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

Examples

ตัวอย่างที่ 1: แปลงตาราง 2 มิติเป็น 1 มิติ (Row-by-Row Order)FLATTEN(A1: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, …)

fx
=FLATTEN(A1:C2)

ผลลัพธ์A1, B1, C1, A2, B2, C2
ตัวอย่างที่ 2: หาค่า Unique จากหลายคอลัมน์UNIQUE(FLATTEN(A2:C10))

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

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

fx
=UNIQUE(FLATTEN(A2:C10))

ผลลัพธ์รายการค่าที่ไม่ซ้ำกันทั้งหมด เรียงลงในคอลัมน์เดียว
ตัวอย่างที่ 3: ลบช่องว่างออกจากผลลัพธ์FILTER(FLATTEN(A2:C10), FLATTEN(A2:C10) "")

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

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

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

ผลลัพธ์รายการข้อมูลเรียงกันในคอลัมน์เดียว โดยไม่รวมช่องว่าง
ตัวอย่างที่ 4: รวมหลายช่วงจากที่ต่างกันFLATTEN(A1:A10, C1:C10, E1:E10)

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

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

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

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

FAQs

FLATTEN กับ TOCOL ต่างกันอย่างไร?+

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

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

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

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

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

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

ควรใช้ FLATTEN เมื่อไหร่?+

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

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

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ FLATTEN จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้FLATTENArray
Filter (1)
FILTER

FILTER กรองข้อมูลจาก Range แล้วแสดงเฉพาะแถว/คอลัมน์ที่ตรงเงื่อนไข รองรับหลายเงื่อนไข (AND/OR) และอัปเดตผลลัพธ์แบบ Real-time เมื่อข้อมูลต้นทางเปลี่ยน ทำให้เหมาะกับการสร้างรายงานไดนามิก

Google (1)
QUERY

QUERY ใช้ภาษา SQL-like (Google Visualization API Query Language) ในการจัดการข้อมูลจาก Range ที่กำหนด รองรับ 9 clauses ตามลำดับ: SELECT, WHERE, GROUP BY, PIVOT, ORDER BY, LIMIT, OFFSET, LABEL, FORMAT พร้อม Aggregate Functions (SUM, COUNT, AVG, MIN, MAX) และ Scalar Functions สำหรับวันที่และข้อความ ทำให้สามารถกรอง จัดเรียง และสรุปข้อมูลได้แบบ Dynamic ด้วยสูตรเดียว เหมาะสำหรับการสร้างรายงานและ Dashboard ที่ซับซ้อน

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่