Site icon วิศวกรรีพอร์ต

Pivot Table มันไม่ตอบโจทย์ จริงหรือ?

“คุณช่วยเอา Pivot Table ออกไปจากรีพอร์ตทีได้ไหม ผมเบื่อมันมาก!”

“ทำไมถึงอยากเอาออกล่ะครับพี่ต้น?” ผมถาม

“เพราะมันไม่ตอบโจทย์ผม จะทำอะไรต่อก็ลำบาก!”

คุณคิดว่า คำตอบของพี่ต้นดูแปลกๆไหมครับ?

ติ๊กต่อก ติ๊กต่อก…

ที่แปลก เพราะมีคำว่า “ต่อ”

ถ้ามีคำว่า “ต่อ” แสดงว่าพี่ต้น กำลังใช้ Pivot Table ผิดวิธีแล้ว!

(เพื่อการออกเสียงที่ถูกต้อง ผมขอเขียนคำไทยของ Pivot Table ว่า พิวิตเทเบิล นะครับ)

จุดประสงค์ของการทำพิวิตเทเบิลคือ สร้างรีพอร์ตสุดท้าย เพื่อใช้วิเคราะห์ หรือนำเสนอข้อมูล

ถ้าเราต้องเอาพิวิตเทเบิลไปทำอะไร “ต่อ” แปลว่า สิ่งที่เราต้องการคือข้อมูล ไม่ใช่พิวิตเทเบิล!!

คำถามต่อไปก็คือ

แล้วทำไมถึงได้ข้อมูลในรูปแบบของพิวิตเทเบิล?

คำตอบก็คือ

ความไม่เข้าใจกัน ของคนทำรีพอร์ต และคนอ่านรีพอร์ต

คนทำรีพอร์ตจะคิดว่า ส่งข้อมูลในรูปแบบของพิวิตเทเบิลง่ายต่อคนอ่าน เพราะคนอ่านสามารถปรับเปลี่ยนมุมมองได้

จะใส่ฟิลเตอร์ หรือเพิ่มการคำนวณ ก็ทำได้เพียงไม่กี่คลิก

นั่นคือความ “ปรารถนาดี”

แต่สำหรับคนอ่าน อาจไม่ “กำซาบ” ถึงความปรารถนาดีนั้น…

ขอจำแนกคนอ่านที่ไม่ “กำซาบ” เป็น 2 กลุ่มนะครับ

1 ใช้พิวิตเทเบิลไม่เป็น

2 ต้องเอาข้อมูลจากพิวิตเทเบิลไปสร้างรีพอร์ตอื่นอีก

สำหรับกลุ่มที่ 1 ผมขอไม่พูดถึง เพราะทางแก้คือ ให้ความรู้และปรับทัศนคติ

ที่น่าสนใจคือ กลุ่มที่ 2 ที่ต้องเอาข้อมูลไปทำอะไร “ต่อ”

สำหรับพี่ต้น ถือว่าอยู่ในกลุ่มที่ 2

เท่าที่ถามพี่ต้นมา เจ้า “ต่อ”ของพี่เค้า มักอยู่ในรูปแบบของ

เห็น “จุดร่วม” อะไรไหมครับ?

จุดร่วมที่ว่าก็คือ

ข้อมูลที่ต้องการไม่มีในพิวิตเทเบิล หรือ ข้อมูลในพิวิตเทเบิลผิด

และนั่นเอง จึงทำให้พี่ต้นคิดว่า พิวิตเทเบิลไม่ตอบโจทย์

ถ้าเราลองวิเคราะห์ดีๆ จริงๆแล้วสิ่งที่ไม่ตอบโจทย์พี่ต้นคือ

ข้อมูลในพิวิตเทเบิล ไม่ใช่ พิวิตเทเบิล!

สองสิ่งนี้ไม่เหมือนกันนะครับ

ถ้าความต้องการของพี่ต้นมีประมาณนี้ ผมขอฟันธงเลยว่า พิวิตเทเบิลตอบโจทย์แน่นอน!

เพียงแต่ต้อง “เล่นแร่แปรธาตุ” กับข้อมูลในพิวิตเทเบิลหน่อยเท่านั้นเอง

สิ่งที่ต้องเตรียมมีเพียงสิ่งเดียวคือ “ลายแทง” ข้อมูลนั้น

เช่น ถ้าต้องการสรุปข้อมูลรายกลุ่มสินค้าแบบใหม่ “ลายแทง” ก็คือตารางที่บอกว่า กลุ่มสินค้าแบบใหม่มีอะไรบ้าง

ยิ่งมีตารางที่บอกว่าสินค้าทั้งหมดมีอะไรบ้าง สินค้าอะไรจัดอยู่กลุ่มไหนยิ่งดี

ถ้าเพิ่งเปลี่ยนแปลงพอร์ตลูกค้าของเซลล์แต่ละคน “ลายแทง” ก็คือตารางที่บอกว่า พอร์ตลูกค้าที่ถูกต้องนั้นเป็นอย่างไร

ถ้าการจัดประเภทลูกค้าของข้อมูลในพิวิตเทเบิลผิด “ลายแทง” ก็คือตารางที่บอกว่า จัดประเภทลูกค้าอย่างไรถึงจะถูก

พอมีลายแทงแล้ว เราก็นำมาเชื่อมกับข้อมูลดิบของพิวิตเทเบิล

ถ้าใครใช้เอ็กเซลเวอร์ชั่นต่ำกว่า 2013 (เช่น 2010, 2007, 2003) อาจใช้ฟังก์ชั่นตระกูล VLOOKUP หรือ INDEX + MATCH เพื่อเชื่อมข้อมูล

(ผมเคยเขียนบทความเกี่ยวกับการใช้ VLOOKUP และ INDEX + MATCH ถ้าสนใจคลิก ที่นี่ ครับ)

แต่ถ้าใช้เวอร์ชั่นตั้งแต่ 2013 ขึ้นไป (2013/2016) ไม่จำเป็นต้องใช้วิธีนั้นแล้ว!

มีวิธีที่ง่ายกว่านั้นเยอะ!!

นั่นคือฟีเจอร์ใหม่ที่ชื่อว่า Data Model

ใช้ยังไงน่ะหรือครับ?

ขออธิบายวิธีใช้ ด้วยเคสที่ต้องการสรุปข้อมูลกลุ่มสินค้าแบบใหม่ละกันครับ

สมมติว่า ข้อมูลดิบหน้าตาประมาณนี้

เราต้องเปลี่ยนฟอร์แมตข้อมูลให้อยู่ในรูปแบบของ Table ก่อน

เปลี่ยนง่ายมากๆครับ แค่คลิกเซลล์ใดก็ได้ในตาราง แล้วกด Ctrl+T เท่านั้นเอง ^__^

สมมติตั้งชื่อตารางนี้ว่า Data

เมื่อวานนี้เพิ่งสรุปกันว่า จะวิเคราะห์สินค้าแบบกลุ่ม ตั้งชื่อกลุ่มใหม่นี้ว่า NewProdType

เราก็สร้างลายแทงเพื่อบอกว่า สินค้าแต่ละตัวจัดเป็น NewProdType แบบใด

แล้วปรับลายแทงนี้ให้เป็น Table โดยกด Ctrl+T

ตั้งชื่อลายแทงนี้ว่า Product

หน้าตาประมาณนี้ครับ

จากนั้น สร้างพิวิตเทเบิลแบบธรรมดาขึ้นมาก่อน สร้างจากตารางข้อมูลดิบอันเก่า (ตารางที่เราตั้งชื่อว่า Data)

พอสร้างเสร็จปุ๊ป จะเจอคำว่า More Tables อยู่ด้านล่าง Pivot Table Fields

(ถ้าไม่เจอคำว่า More Tables แสดงว่ายังไม่ได้ปรับฟอร์แมตของข้อมูลให้เป็น Table นะครับ)

พอคลิกคำว่า More Tables ปุ๊ป

จะมีหน้าต่างนึงโผล่ขึ้นมาทันที

หน้าต่างนี้ถามว่า ต้องการสร้างพิวิตเทเบิลโดยใช้ Data Model ไหม?

กด Yes โลด เพราะเราต้องการใช้ Data Model (ไม่งั้นจะทำแบบนี้ทำไม ^^)

พอกด Yes แล้ว สังเกตที่ Pivot Table Fields จะมีชื่อตารางใหม่ (Product) โผล่มาเลย

ฮ้า!!

แบบนี้น่าจะแปลว่า สร้างพิวิตเทเบิลจาก 2 ตาราง โดยไม่ต้องเชื่อมข้อมูลด้วย VLOOKUP ได้แล้ว

งั้นก็ลองสร้างซะเลย

จับ NewProdType ที่ต้องการไปไว้ที่ Row Label โลด

แล้วเอา Volume ไปไว้ในส่วนของ Value ทันที

วะ ฮ่ะๆๆ ง่ายจริงๆด้วย!

เหลือบไปมองข้อมูลในพิวิตเทเบิล

เฮ้ย! ทำไมตัวเลขมันเท่ากันทั้งหมดเลยล่ะ!

ที่มันเท่ากันทั้งหมด เพราะยังไม่ได้สร้างความสัมพันธ์ ระหว่างตาราง Data และ Product

เอ็กเซลมันเลยเอ๋อ ไม่รู้ว่า 2 ตารางนี้เชื่อมกันยังไง

งั้นเราก็ต้องสร้าง ความสัมพันธ์ ขึ้นมาครับ

ความสัมพันธ์ที่ว่าก็คือ คอลัมน์ ProdCode ของตาราง Data และ Product นั่นเอง

เราสามารถใช้ ProdCode เป็นตัวเชื่อม เพื่อดึงช้อมูล NewProdType จากตาราง Product มาที่ Pivot Table ที่กำลังสร้างขึ้นมาใหม่ได้

สร้างยังไงน่ะหรือครับ?

ตอนนี้ Pivot Table Fields ของเรามีคำเตือนสีเหลืองขึ้นมาบอกว่า ยังไม่ได้สร้างความสัมพันธ์เลยนะ

กด CREATE โลด

อ้อ! ถ้าไม่เห็นคำเตือนสีเหลืองนี้ขึ้นมา คลิกคำว่า Relationships ในส่วนของเมนู Analyze ก็ได้ครับ

จะได้หน้าต่างใหม่ชือว่า Create Relationship

ใส่ความสัมพันธ์ของ 2 ตารางลงในนี้โลด

การสร้างความสัมพันธ์นั้น ต้องเลือกตารางที่ไม่มีข้อมูลซ้ำไว้ด้านล่าง เลือกตารางที่มีข้อมูลซ้ำไว้ด้านบน

ในที่นี่ สิ่งที่เราใช้เชื่อมทั้งสองตารางเข้าด้วยกัน ก็คือ ProdCode

ตารางที่ไม่มีข้อมูลซ้ำ ในที่นี้คือตาราง Product เพราะ ProdCode ในตารางนี้จะไม่มีซ้ำกันเลย (Unique)

ตารางที่อยู่ด้านล่างมีข้อมูลซ้ำไม่ได้ ถ้าพูดในภาษาดาต้าเบสก็คือ Master Data หรือตารางที่ต้องการให้เป็น Primary Key นั่นเอง

ตารางที่มีข้อมูลซ้ำ ในที่นี้ก็คือตาราง Data เพราะตารางนี้จะมี ProdCode ซ้ำไปซ้ำมา ขึ้นกับว่าข้อมูลเป็นอย่างไร

เลือกเสร็จแล้ว กด OK โลด

พอสร้างความสัมพันธ์แล้ว ตัวเลขในพิวิตเทเบิลจะเปลี่ยนไป

ฮ้า!

นั่นแปลว่า เราสามารถสร้างพิวิตเทเบิลจาก 2 ตาราง โดยไม่ต้องใช้ฟังก์ชั่น VLOOKUP หรือ INDEX  + MATCH เพื่อเชื่อมข้อมูลเลย!

แถมทำได้แค่ไม่กี่คลิก ง่ายสุดๆๆ

พอเชื่อมข้อมูลได้แล้ว จะสร้างพิวิตเทเบิลออกมายังไงก็ได้ ^__^

จริงๆแล้ว พิวิตเทเบิลมีข้อจำกัดบางอย่าง เช่น

แต่เท่าที่ผมเคยสัมผัสกับความต้องการของผู้ใช้งานจริงๆ เรื่องเหล่านี้ถือเป็นสิ่งเล็กน้อยมาก

โดยรวมแล้ว ถือว่าตอบโจทย์กว่า 90%

การที่เราคิดว่ามันไม่ตอบโจทย์ อาจเกิดจาก ความไม่เข้าใจหรือเปล่า?

ถ้าไม่เข้าใจ ลองเปิดใจกับมันซักนิดนึง แล้วมันจะ “ตอบโจทย์” เราครับ

คราวนี้พี่ต้นจะบอกว่า พิวิตเทเบิลไม่ตอบโจทย์ ไม่ได้แล้วกระมัง ^__^

.

หากคุณชอบบทความแนวนี้ สามารถอัพเดตบทความใหม่ๆโดยคลิก Like เฟสบุ๊คแฟนเพจ วิศวกรรีพอร์ต หรือคลิก ที่นี่

อย่าลืมแชร์ให้เพื่อนอ่านเพื่อเป็นกำลังใจให้คนเขียนด้วยนะครับ ^_^

Exit mobile version