FLATTEN รวมข้อมูลจากหนึ่งหรือหลายช่วงเข้าด้วยกันเป็นคอลัมน์เดียว โดยเรียงลำดับแถวก่อน (Row-major order) ช่วงข้อมูลไม่จำเป็นต้องมีขนาดเดียวกัน และสามารถผสมเซลล์ เรนจ์ และค่าคงที่ได้
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| range1 | Range/Array | ช่วงข้อมูลแรกที่ต้องการแปลง สามารถเป็นเซลล์เดี่ยว แถว คอลัมน์ หรือตาราง 2 มิติ ได้ |
| [range2]ไม่บังคับ | Range/Array | ช่วงข้อมูลเพิ่มเติม (ตัวเลือก) ฟังก์ชันจะนำข้อมูลจาก range2 มาเรียงต่อท้าย range1 คุณสามารถเพิ่มได้ถึง 254 ช่วง |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
FLATTEN เป็นฟังก์ชันที่เจ๋งจริง เพราะมันช่วยแปลงข้อมูลแบบตาราง 2 มิติ เป็นรายการ 1 มิติได้อย่างง่าย
เวลามีข้อมูลกระจายอยู่หลายคอลัมน์แล้ว ต้องการรวมมันลงเป็นคอลัมน์เดียว FLATTEN ก็ทำได้ทันที ไม่ต้องใช้ Helper Column หรือวิธีซับซ้อนอื่นๆ
ส่วนตัวผมชอบใช้ FLATTEN กับฟังก์ชันอื่นๆ เช่น UNIQUE, FILTER, QUERY เพื่อทำข้อมูลให้สะอาดและมีประโยชน์มากขึ้น ครับ
แปลงตารางสรุป (Crosstab) กลับเป็นตารางฐานข้อมูล (Database Format) เพื่อนำไปทำ Pivot Table
รวมรายชื่อนักเรียนที่อยู่คนละคอลัมน์ (เช่น ห้อง 1, ห้อง 2, ห้อง 3) ให้มาอยู่ในคอลัมน์เดียวกัน
ใช้ร่วมกับ UNIQUE เพื่อหาค่าที่ไม่ซ้ำ (Unique Values) จากช่วงข้อมูล 2 มิติ
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, …)
การรวม FLATTEN กับ UNIQUE นี้มีประโยชน์มากครับ เวลาคุณต้องการหาว่าในตาราง A2:C10 นี้ มีค่าไหนบ้างที่ปรากฏมากกว่า 1 ครั้ง
สมมติในตาราง มี Name 'John' อยู่ 3 ที่ อยากหายังไงให้ 'John' ปรากฏแค่ครั้งเดียวในผลลัพธ์ UNIQUE(FLATTEN(…)) ก็ช่วยได้
FLATTEN มันปกติจะเก็บช่องว่างด้วย หากข้อมูลของคุณมีหลาย ๆ เซลล์ที่ยังเว่าว่างไว้ FILTER จะช่วยกรองเอาแค่เซลล์ที่มีข้อมูลออกมา
ในตัวอย่างนี้ FLATTEN(A2:C10) จะเรียงทั้งหมด แล้วก่อนส่งต่อให้ FILTER ประโยค FLATTEN(A2:C10) <> "" จะเก็บแค่ค่าที่ไม่เท่ากับช่องว่างเท่านั้น
เมื่อคุณใส่หลายช่วง FLATTEN จะเอาทั้ง range1 มาเรียงเสร็จก่อน แล้วค่อยเอา range2 มาต่อท้าย
นี่มีประโยชน์เวลาคุณต้องการรวมข้อมูลจากหลายโซนที่ไม่ติดกัน เช่น เงินฝากจากสาขา A, B, C ที่อยู่คนละเซลล์กัน
ใน Excel 365 มี TOCOL ที่ทำหน้าที่คล้ายกัน แต่ TOCOL ใน Excel มีฟีเจอร์เพิ่มเติม เช่น สามารถลบเซลล์ว่างได้ในตัว ส่วน Google Sheets' FLATTEN ต้องใช้ FILTER ช่วยเพื่อเก็บเฉพาะเซลล์ที่ไม่ว่าง หากอยากเรียงแบบ Column-major (ลำดับคอลัมน์ก่อน) ต้องใช้ TRANSPOSE ช่วยครับ
FLATTEN ใช้ Row-major order หมายความว่าเรียงตามแถวก่อน (Row by Row) ถ้าข้อมูล A1:C2 เป็นแบบนี้:
A1=อ B1=ข C1=ค
A2=ก B2=ค C2=ง
ผลลัพธ์จะออกมาเป็น: อ, ข, ค, ก, ค, ง (ไม่ใช่ อ, ก, ข, ค, ค, ง)
ถ้าคุณต้องการเรียงแบบ Column-major ลองใช้ TRANSPOSE(FLATTEN(…)) ดูครับ
ผมแนะนำใช้ FLATTEN ในสถานการณ์เหล่านี้:
– เวลาต้องทำ Unpivoting (เปลี่ยนจากตาราง Wide Format เป็น Long Format)
– อยากรวมข้อมูลจากหลายคอลัมน์เข้าด้วยกัน
– ต้องการหาค่า Unique จากหลายคอลัมน์ (รวม UNIQUE)
– ต้องการกรองข้อมูลจากช่วงใหญ่ๆ (รวม FILTER)
ส่วนตัวผมมักใช้ FLATTEN + UNIQUE + FILTER เป็นคอมโบเก็บเก่า ครับ 😎
ฟังก์ชันที่ผู้เขียนโยงไว้กับ FLATTEN จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
FILTER กรองข้อมูลจาก Range แล้วแสดงเฉพาะแถว/คอลัมน์ที่ตรงเงื่อนไข รองรับหลายเงื่อนไข (AND/OR) และอัปเดตผลลัพธ์แบบ Real-time เมื่อข้อมูลต้นทางเปลี่ยน ทำให้เหมาะกับการสร้างรายงานไดนามิก
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
อีเมลของคุณจะไม่ถูกเผยแพร่