หลังจาก ตอนที่แล้วผมได้แนะนำวิธีการติดตั้ง Power Query ไปแล้ว วันนี้ผมจะมาแนะนำ มหากาพย์การใช้งาน Power Query ตั้งแต่ต้นจนจบให้พวกเราได้รู้จักกันครับ

แต่ก่อนจะบอก Steps การทำงานทั้งหมด ผมต้องแนะนำให้พอรู้จักลักษณะการทำงานของ Power Query กันซักหน่อย ว่ามันทำงานประมาณไหน จะได้นึกภาพออก

ลักษณะการทำงานของ Power Query

ผมคิดว่า Power Query เป็นเหมือนเครื่องมือมหัศจรรย์ ที่สามารถ รวบรวม&เชื่อมต่อกับข้อมูลได้หลายที่ หลายชนิด แล้วนำข้อมูลแต่ละอันมาคัดกรอง & ดัดแปลงให้อยู่ในรูปแบบที่เหมาะสม รวมถึงผสมข้อมูลหลายก้อนเข้าด้วยกันได้ ซึ่งผลลัพธ์สุดท้ายจะออกมาเป็นตารางให้เราสามารถนำไปใช้งานต่อได้อย่างง่ายดาย ไม่ว่าจะเอาไปใช้ใน PivotTable ทำกราฟ หรือจะเอาไปเขียนสูตรใน Excel ต่อก็ย่อมได้

หรือถ้าจะให้นิยามแบบสั้นๆ ผมขอบอกว่า Power Query คือ เครื่องมือรวบรวมและดัดแปลงข้อมูล นั่นเอง

ประเด็นที่สำคัญที่สุดเลย คือ มันเก่งมาก แต่ใช้งานไม่ยากเลย! ดังนั้นอย่ารอช้า เรามาเรียนรู้วิธีการใช้งาน Power Query กันเลยดีกว่า!

Steps การใช้งาน Power Query เบื้องต้น

จากคำบรรยายลักษณะการทำงานของ Power Query ผมก็ขอแบ่งออกมาเป็นขั้นตอนดังนี้

1.รวบรวม & เชื่อมต่อข้อมูล

สิ่งที่ยุ่งยากที่สุดของ Power Query ก็คือขั้นตอนรวบรวมเชื่อมต่อข้อมูลนี่แหละครับ ยิ่งถ้ามีหลายไฟล์ หลายแหล่งข้อมูลอาจต้องทำการเชื่อมต่อหลายทีหน่อย ดังนั้นขั้นนี้ให้อดทนนิดนึงนะครับ (จริงๆ มีวิธีเชื่อมทั้ง Folder ทีเดียวด้วยแต่ว่ายากเกินไปที่จะสอนตอนนี้ครับ ^^)

สมมติผมมีข้อมูลอยู่ 3 ที่ คือ 1. ในไฟล์ Txt 2.ในไฟล์ Excel ที่จะทำ PowerQuery เอง 3.ในไฟล์ Excel อื่น โดยให้โหลดไฟล์ที่นี่

ก่อนอื่นให้เปิดไฟล์ที่จะทำ Power Query ซะก่อน (ชื่อไฟล์ PowerQuery-Basic.xlsx)

วิธีเชื่อมต่อข้อมูลก็ง่ายมาก  ไปที่ Ribbon Power Query แล้วมันจะมีให้เลือกว่าจะเอาข้อมูลจากไหน?

ปกติที่ใช้บ่อยๆ ก็จะมีจาก

  • From File = เอาจากไฟล์อื่น เช่น TXT, CSV, ไฟล์ Excel เอง รวมถึงเอามาทั้ง Folder ได้ด้วย
  • From Database = เอาจากไฟล์ Access
  • From Table/Range = เอาจาก Table หรือ Range ที่อยู่ในไฟล์เดียวกันนี้

เช่นไฟล์ data1.txt ผมก็ต้องเลือก From File -> TXT/CSV -> เลือกไฟล์ที่ต้องการ

ซึ่งตรง Load จะมีลูกศรให้เลือกว่า จะ Load เฉยๆ หรือ Load to และปุ่มข้างๆ มีคำว่า Edit ซึ่งแต่ละอันมีความหมายดังนี้

  • Load = จะถูกสร้างเป็น Table ในไฟล์ Excel ที่เรากำลังเปิด
  • Load to = จะมี Option ให้เลือกต่อว่า จะสร้างเป็น Table หรือ จะแค่สร้างการเชื่อมต่อเฉยๆ (Create Connection Only)
  • Edit = จะสามารถเข้าไปแก้ไขข้อมูลก่อนที่จะดึงข้อมูลมาใช้ เช่น แก้ชื่อตาราง, Sort/Filter, เพิ่มคอลัมน์คำนวณ, และอีกมากมาย…  (ซึ่งทั้งหมดนี้เราดึงข้อมูลมาใช้ก่อนแล้ว Edit ทีหลังก็ได้)

ในที่นี้ผมขอเลือก Load to แล้วติ๊ก Only Create Connection ดีกว่า ไฟล์จะได้ไม่ใหญ่ด้วย

เมื่อกด Load ก็จะมีหน้าต่างบอกว่า มีการเชื่อมต่อกับข้อมูล Data1 แล้ว

ผมทำแบบเดียวกันกับ Data2.xlsx โดยเลือกFrom File -> Excel คราวนี้มันจะบอกว่าเจอข้อมูล 2 ชีท

เราสามารถเลือกแบบ Multiple พร้อมกันได้เลย

ในที่นี้ผม Load to แบบ Only Create Connection เหมือนเดิม จได้ว่ามีการเชื่อมต่อ 3 อันแล้ว

สุดท้ายเอาข้อมูลจากไฟล์ตัวเอง สามารถกดปุ่ม From Table/Range ได้ แต่ผมแนะนำว่าถ้ายังไม่ได้เปลี่ยนข้อมูลให้เป็น Table ให้เราทำการแปลงเป็น Table ซะก่อน โดยการคลิ๊กที่ข้อมูลแล้วกด Ctrl+T

เดิม

กด Ctrl+T เพื่อแปลงเป็น Table แล้วตั้งชื่อตามใจชอบ

จากนั้น ขณะที่เลือก Table อยู่ ให้กดปุ่มที่ Tab Power Query ว่าเราจะเชื่อมต่อข้อมูลกับ Table

มันจะขึ้นหน้าต่าง Query Editor มาให้โดยอัตโนมัติ (หน้าต่างเดียวกันกับที่เวลาเรากด Edit นั่นแหละ) ในที่นี้ผมจะ Close & Load to เพื่อ Only Create Connection เหมือนเดิม

คราวนี้เราก็สร้าง Connection ครบทุกอันแล้ว!!

2.คัดกรอง & ดัดแปลง

ถ้าข้อมูลแต่ละอันไม่ค่อยสมบูรณ์ เช่น มีข้อมูลซ้ำ ข้อมูลขยะ เราสามารถทำการ Edit Query เพื่อคัดกรอง / group ข้อมูลก่อนจะผสมข้อมูลเข้าด้วยกันได้ (ถ้าเราไม่กำจัดการซ้ำก่อน เวลา Map ข้อมูลแล้วมันอาจจทำให้ข้อมูลเบิ้ลเข้าไปอีก)

วิธีการทำคือ คลิ๊กขวาที่ Query ที่ต้องการแล้วกด Edit ได้เลย

แต่ในที่นี้ข้อมูลของผม ok แล้ว เลยไม่ต้องมีการแก้ไขอะไรครับ เราข้ามขั้นตอนนี้ไปได้เลยครับ ^^

3. ผสมข้อมูล (Combine โดย Merge/Append)

ขั้นต่อไปเราจะทำการเชื่อมข้อมูลเข้าด้วยกันแล้ว ซึ่งจะมีให้เลือก 2 โหมด คือ

  • Merge = เอาข้อมูลมา Map กัน แบบเดียวกับ VLOOKUP (เพิ่มคอลัมน์)
  • Append = เอาข้อมูลหลายตารางมาต่อท้ายกันไปเรื่อยๆ (เพิ่มจำนวนบรรทัด)

ในที่นี้ผมจะ Map ข้อมูลจากตารางอ้างอิง เลยต้องใช้การ Merge นั่นเอง ซึ่งพอกดเข้าไปแล้ว มันจะถามว่าจะเอาอะไรมา Merge กับอะไร?

  • (1) เอาเอาตารางหลัก (data1) ไว้ข้างบน <= คล้ายๆ Lookup_Value ใน VLOOKUP
  • (2) ตารางอ้างอิง (Customer Country) ไว้อันล่าง  <= คล้ายๆ Table_Array ใน VLOOKUP
  • (3) และ (4) เลือกคอลัมน์ที่เป็นตัวเชื่อมกัน
  • (5) เลือกวิธีการเชื่อม <= แบบแรก คือ จะเหมือน VLOOKUP นั่นคือ เอาอันบนทุกอัน และเอาอันล่างเท่าที่ Map เจอ

หลังจากกด Load จะขึ้นหน้าจอ Query Editor มาให้อีกแล้ว แต่คราวนี้จะเห็นว่ามีคอลัมน์ใหม่ เขียนว่า NewColumn แล้วมีค่าเป็น มาให้ด้วย แปลกดีมั้ย?? ความหมายมันคือเป็นคอลัมน์ที่มาจากการ Map ซึ่งเราต้องทำการกดตาม Step ข้างล่าง เพื่อเลือกว่าจะเอาคอลัมน์ไหนมาแสดงบ้าง?

  • (1) แตกคอลัมน์
  • (2) เลือกคอลัมน์ที่ต้องการแสดง
  • (3) ถ้าจะให้เอาชื่อคอลัมน์แบบไม่มี prefix ให้ติ๊กออก

พอกด Ok ก็จะเห็นว่ามีคอลัมน์เพิ่มมาแล้ว และจะเห็นว่ามี Applied Step ด้านขวา เพิ่มมาด้วย

จากนั้นให้เราทำการ Merge กับตารางที่เหลือให้ครบ โดยไปที่คำสั่ง Merge Query

แล้วเชื่อมข้อมูลให้ครบ

พอเสร็จแล้วสามารถกดปุ่ม Close & Load ได้เลย คราวนี้เราอยากจะสร้าง Table ผลลัพธ์สุดท้ายแล้ว

4. แก้ไขรายละเอียด / เขียนสูตร / แก้ลำดับการทำงาน

สมมติว่า คุณลืมอะไรบางอย่างไป หรือทำอะไรผิด ก็สามารถเข้าไปแก้ Query เดิมได้ โดยคลิ๊กขวาที่ Query ที่ต้องการแล้วกด Edit ได้เลยครับ

เวลากดเข้าไปแล้ว จะสังเกตเห็นข้อมูล และ Applied Step ซึ่งคือขั้นตอนที่มันบันทึกไว้ว่ามันทำอะไรกับข้อมูลบ้าง ซึ่งเราสามารถแก้ไข ลบ สลับลำดับ action เหล่านี้ได้

เวลาเราทำ action อะไรเพิ่มเติมมันก็จะบันทึกต่อไปเรื่อยๆ (จริงๆ เราสามารถแทรก Step การทำงานก็ได้ โดยไปเลือก Step ที่ต้องการจะแทรก แล้วค่อยทำ action)

Tips : ตัวอย่าง Action ที่ทำบ่อยๆ

เพิ่มคอลัมน์ใหม่

ผมจะเพิ่มคอลัมน์ยอดขาย ก็ไปกดที่ Add Column -> Add Custom Column

แล้วตั้งชื่อ Field ใหม่ จากนั้นพิมพ์สูตรที่ต้องการลงไป (คลิํกที่ชื่อ Field ที่มีให้เลือกได้ คล้ายๆ กับ Calculated Field ของ PivotTable)

Tips : จริงๆ แล้วสูตรที่เขียนใน Custom Column นี้เป็น ภาษาของ Power Query เอง เรียกว่า Power Query Formula Language หรือ ภาษา M (M Language) ซึ่งถ้าจะเอาให้ลึกซึ้งก็ต้องศึกษากันขนานใหญ่เลย แต่ไม่ต้องห่วงไป เราสามารถเขียนสูตรง่ายๆ อย่างบวก ลบ คูณ หาร ได้เช่นเดียวกับ Excel อยู่แล้ว

Tips2 : นอกจากที่ Custom Column แล้ว ภาษา M ยังสามารถเขียนอยู่ในตัวตาราง Query ได้ด้วยนะ แต่ยาก เอาไว้ทีหลังแล้วกันครับ ^^”

มันก็จะมี Step เพิ่มขึ้นมา

ลบคอลัมน์

ผมจะตัดคอลัมน์บางอันทิ้ง ก็เลือกคอลัมน์ที่จะไม่เอา เช่น ราคาต่อชิ้น (ผมไม่ใช้แล้ว) แล้วกดปุ่ม Del บน Keyboard ได้เลย

สังเกตว่า คอลัมน์ยอดขาย (=จำนวน*ราคาต่อชิ้น) ที่สร้างขึ้นมาใหม่ ก็ยังใช้งานได้อยู่ แม้ว่าเราจะลบคอลัมน์ ราคาต่อชิ้น ออกไปแล้วก็ตาม

เปลี่ยนชื่อคอลัมน์

ให้ดับเบิ้ลคลิ๊กที่ชื่อคอลัมน์ตรงหัวตาราง แล้วแก้ไขได้เลย

เปลี่ยนประเภทข้อมูล

คลิ๊กขวาที่คอลัมน์ที่ต้องการ แล้วเลือก Change Type ได้เลย

ถ้าทำแล้ว Error แสดงว่ามันมองปฏิทินผิดแบบ

ให้ไปที่ Change Type -> Using Locale… แทน แล้วเลือกเป็น Date / English (UK) แล้วกด Enter

จะเห็นว่ามันยังคง Error อยู่ เป้นเพราะว่ามัน Error มาตั้งแต่ Step ก่อนหน้า

ดังนั้นเราต้องลบ Step ก่อนหน้าทิ้งซะ โดย Click ขวาที่ Step ก่อนหน้า แล้วกด Delete

จะเห็นว่าข้อมูลไม่ Error แล้ว และสามารถ Filter แบบ Date ได้

Filter ข้อมูล

จะ Filter ข้อมูลได้ดี จะต้องเปลี่ยนประเภทข้อมูลให้ถูกต้องซะก่อน เช่น ถ้าไม่ใช่วันที่ ก็จะไม่มี Date Filter ให้เลือก เป็นต้น

Split Column

เราสามารถ Split คอลัมน์ได้ 2 แบบ เช่นเดียวกับเครื่องมือ Text to Column นั่นคือ แบ่งแบบใช้ตัวคั่น (delimiter) กับแบบมีจำนวนอักขระชัดเจน ( number of character)

แล้วมันจะมี Option ต่ออีก ว่าจะแยกแค่ตัวแรก ตัวหลัง หรือทุกตัว ผมจะแยกคำนำหน้าชื่อ ก็เลยเอาแค่ตัวแรก

ถ้าทำทุกอย่างเสร็จหมดแล้ว เราก็กด Close & Load ได้เลยครับ

5. นำไปใช้งานต่อใน Excel

ผลลัพธ์ที่ออกมาจากการ Load จะเป็น Table ที่เอาไปใช้งานต่อได้ เช่น เอาไปวิเคราะห์ต่อใน PivotTable

แต่มันมันเจ๋งคือ Table นี้ยังคง Link Connection กับข้อมูลต้นทางอยู่ แปลว่าหากข้อมูลต้นทางเปลี่ยนไป เราแค่ Refresh เจ้า Query นี้ และ Refresh PivotTable อีกที รายงานของเราก็จะเสร็จเลยทันที!!

ใครมีคำถาม…

อ่านจบแล้ว ใครสงสัยอะไรตรงไหน หรือว่าการทำงานจริงอยากรู้อะไรเป็นพิเศษ สามารถ Comment ถามไว้ในนี้ หรือจะ inbox ถามใน Facebook ก็ได้ครับ ตรงไหนมีคนสงสัยเยอะๆ ผมจะได้อธิบายละเอียดให้อีกทีครับ ^^

ใครอ่านแล้วคิดว่ามีประโยชน์ก็อย่าลืมแชร์ให้คนอื่นรู้ด้วยนะครับ ยิ่งคนรู้เยอะเรายิ่งสบายครับ จะได้ช่วยกันลดงานถึกๆ ไปได้นะ ^^