Author: Sira Ekabut

  • 10 ข้อต้องรู้ Concept Excel สำคัญ เมื่อต้องบู๊ด้วย Excel

    10 ข้อต้องรู้ Concept Excel สำคัญ เมื่อต้องบู๊ด้วย Excel

    ถ้าหากคุณมีความรู้สึกที่ว่า “อยากจะใช้ Excel ให้เก่งขึ้น” แต่ดูเหมือนมีอะไรที่ต้องเรียนรู้เยอะแยะไปหมด และ ไม่รู้ว่าอะไรบ้างที่จำเป็นจริงๆ กันแน่? อะไรคือ Concept Excel สำคัญ?

    บทความนี้มีคำตอบ เพราะผมได้ทำการสรุปเป็น “10 ข้อต้องรู้ เมื่อต้องบู๊ด้วย Excel” เพื่อให้คุณหรือเพื่อนของคุณที่อาจกำลังอยากพัฒนาทักษะการใช้ Excel ได้อ่านกันครับ

    Concept Excel สำคัญ

    1. อ้างอิงช่องต่างๆ ใน Excel

    ใน Excel นั้นมีช่องตารางเต็มไปหมด ซึ่งแต่ละช่องมีการระบุตำแหน่งด้วยรหัสคอลัมน์ (ที่ขึ้นด้วยตัวอักษรภาษาอังกฤษ) ตามด้วยรหัสแถว (ที่เป็นตัวเลข)

    cell-reference

    เมื่อรู้พิกัด เราก็จะอ้างอิง Cell นั้นๆ ได้ เช่น ถ้าจะเรียก Cell ที่อยู่ตำแหน่งคอลัมน์ D ตัดกับ แถวที่ 3 เราก็จะเรียกว่า D3 นั่นเอง

    นอกจากจะอ้างอิงทีละช่องแล้ว เรายังอ้างอิงหลายๆ Cell หรือเป็่นช่วง (Range) ได้ด้วยการใช้เครื่องหมายต่างๆ มาเชื่อม เช่น

    • Comma ใช้เชื่อม Cell ที่ไม่ได้อยู่ติดกัน เช่น A2,B5 หมายถึง 2 ช่อง คือ A2 และ B5
    • Colon ใช้เชื่อม Cell ที่อยู่ติดกัน เช่น A2:B5 หมายถึง 8 ช่อง คือ A2,A3,A4,A5,B2,B3,B4,B5

    แต่นอกจากการอ้างอิงด้วยรหัส เช่น A1 แล้ว เรายังอ้างอิงไปยังช่องต่างๆ ได้ด้วยการตั้งชื่อ (Define Name) ได้ด้วย ซึ่งสามารถใช้แทนรหัส A1 พวกนี้ได้ทุกประการ เช่น ตั้งชื่อช่อง A1 ว่า ยอดขาย ก็ได้  แถมเรายังตั้งชื่อ Range ได้ด้วยเช่นกัน

    รายละเอียดเพิ่มเติม ดูได้ที่ การเลือก/กรอก/แก้ไขข้อมูล และ การอ้างอิงด้วยการตั้งชื่อ (Define Name)

    2. สิ่งที่เห็นภายนอก vs ค่าที่แท้จริง

    Excel นั้นแยกเรื่องของ “ข้อมูล” กับ “การแสดงผล” ออกจากกันครับ… บางทีสิ่งที่เราเห็นว่าเป็นแบบนึง ข้อมูลข้างในอาจเป็นอีกแบบก็ได้

    เช่นตัวอย่างเลขทศนิยมอันนี้ก็ได้ครับ ชัดเจนดี

    basic1

    ใน A1 มีค่าที่แท้จริงเป็น 2.5 แต่แสดงผลเป็น 3 เพราะปรับ Format ให้ไม่มีทศนิยม แต่เวลานำไปคำนวณ Excel ก็ยังเอาค่าที่แท้จริงคือ 2.5 ไปคำนวณอยู่ดี

    เช่น =A1*A2 แปลว่าให้เอาค่าใน A1 คูณด้วยค่าใน A2 ซึ่งในที่นี้ได้ 5 ไม่ใช่ 6 เพราะเอา 2.5*2 ต่างหาก

    ซึ่งเราสามารถทำให้ข้อมูลน่าสนใจได้มากขึ้น ด้วยการปรับ Format หรือรูปแบบการแสดงผลนั่นเอง ซึ่งมีทั้งเราปรับเองทีละอัน หรือ จะให้ Excel ปรับให้หากข้อมูลใน Cell ตรงกับเงื่อนไขที่เรากำหนดก็ได้

    รายละเอียดเพิ่มเติม ดูได้ที่ การเปลี่ยนรูปแบบ (Formatting) , Conditional Formatting เพื่อปรับรูปแบบตามเงื่อนไขการกำหนด Custom Number Format

    3. Excel มองวันเวลาเป็นแค่ตัวเลขธรรมดา

    วันที่และเวลา ที่เราเห็นแสดงผลอยู่ใน Cell ต่างๆ นั้น จริงๆ แล้วค่าที่แท้จริงเป็นแค่ตัวเลขธรรมดาๆ แค่นั้นเอง

    โดยที่เลข 1 หน่วย แทน 1 วันเต็มๆ 
    ถ้า 1.5 ก็แทน 1 วันครึ่ง…

    แต่การที่เรามองเห็นเป็นวันที่ เป็นเวลา นั้นเป็นเพราะมีการกำหนด Format หรือรูปแบบการแสดงผลให้เป็นวันที่และเวลาเท่านั้นเอง

    ดังนั้น การคำนวณหาค่า OT จากเวลาเริ่มละจบงานจึงใช้การคูณธรรมดาก็ตอบได้แล้ว

    Concept Excel สำคัญ

    แนวคิดคือ พอเอาเวลาจบลบเวลาเริ่ม จะได้เวลาหน่วยเป็นวัน จึงต้องเอาไป *24*60 ให้หน่วยเป็นนาที แล้วคูณค่า OT ต่อนาที จุงจะได้ค่า OT นั่นเอง

    จริงๆ แล้วเป็นเพราะว่าข้อมูลใน Excel นั้นมีอยู่แค่ 5 ประเภท นั่นคือ ตัวเลข, ตัวหนังสือ, ตรรกะ TRUE/FALSE, ค่า Error, Array เท่านั้น จะเห็นว่าไม่ได้มีข้อมูลประเภทวันที่/เวลา เลย แปลว่า Excel มองวันที่/เวลา เป็นแค่ตัวเลขบบนึงเท่านั้นเองครับ

    ถ้าอยากเรียนรู้เพิ่มเติม อ่านได้ที่ ประเภทของข้อมูลบน Excel และ การทำงานเกี่ยวกับวันและเวลา (Date & Time) ใน Excel

    4. สูตรคำนวณคือหัวใจของ Excel

    นอกจากเราจะใช้ Excel เพื่อบันทึกข้อมูลลงไปในตารางแล้ว สิ่งที่เรามักทำเป็นประจำใน Excel ก็คือการคำนวณโดยใช้สูตรคำนวณต่างๆ ได้

    triangle-area-formula

    โดยเราจะต้องเขียนสูตรไว้หลังเครื่องหมาย = เสมอ และผลลัพธ์ของการคำนวณจะถูกแสดงในช่องที่เรากำลังเขียนสูตรนั่นเอง ซึ่งเราเขียนสูตรได้หลายแบบ

    • คำนวณปกติ เช่น =5+300 จะได้ผลลัพธ์เป็น 305  หรือเขียน =4*6 (4 คูณด้วย 6) จะได้ 24
    • มีการอ้างถึงช่องอื่นๆ (Cell Reference) เช่น =B3+10 แปลว่าให้เอาค่าในช่อง B3 มาบวกด้วย 10 ซึ่งถ้าค่าใน B3 เปลี่ยนไป ผลลัพธ์การคำนวณก็จะเปลี่ยนไปด้วยเช่นกัน
    • มีการอ้างด้วย Define Name เช่น =ยอดขาย*5 แปลว่าให้เอาจาก Range ที่ Define Name ชื่อว่า ยอดขาย คูณด้วย 5
    • มีการใช้ตัวเชื่อม (Operator) เช่น เครื่องหมายเปรียบเทียบ > < เพื่อให้ได้ค่า TRUE/FALSE , เครื่องหมาย & เอาไว้เชื่อมข้อความเข้าด้วยกัน เป็นต้น
    • มีการเรียกใช้ฟังก์ชั่น (สูตรสำเร็จรูป) เช่น  =SUM(A1:A10) แปลว่าให้เอาค่าในช่อง A1 ถึง A10 (10 ช่อง) มาบวกกันให้หมด

    อย่างไรก็ตามคำว่า “คำนวณ” ที่ผมพูดถึงนั้น ไม่จำเป็นที่ต้องเป็นการคำนวณทางคณิตศาสตร์เท่านั้น แต่การจัดการข้อมูล แทนที่คำ ตัดคำ หรือแม้แต่การค้นหาข้อมูล หรือ Map ข้อมูล เช่น VLOOKUP เพื่อหาชื่อสินค้าจากรหัสสินค้าก็ถือว่าเป็นการคำนวณแบบหนึ่งเช่นกัน

    สิ่งที่ต้องระวังในการเขียนสูตรคือ เวลาเราจะเขียนข้อความลงในสูตร จะต้องใส่อยู่ในเครื่องหมายคำพูด ไม่เช่นนั้น Excel จะไปสับสนว่าเป็น Define Name ซึ่งจะทำให้ Error เช่น จะเอาคำว่า บาท ไปต่อท้ายตัวเลขในช่อง B1 เราก็ต้องเขียนว่า =B1&” บาท” เป็ยต้น

    ถ้าอยากเรียนรู้เพิ่มเติม อ่านได้ที่ การเขียนสูตรผูกความสัมพันธ์ (Formula)

    5. เครื่องหมาย $ ต้องใช้ให้เป็น

    เวลา Copy สูตรที่มีการใช้ Cell Reference อยู่ เวลา Paste แล้ว Cell Reference จะเลื่อนไปตามทิศทางของการ Copy

    copy-paste-Relative

    เช่น ในช่อง B1 เขียนว่า =E1+3 เมื่อทำการ Copy สตรแล้วมา Paste ที่ A7 จะได้ว่า =D7+3 (Cell Reference E1 ในสูตรเลื่อนลงมาเป็น D7 ตามทิศทางของการ Copy/Paste)

    หากว่าต้องการจะ Fix ตำแหน่งไม่ให้ Cell Reference เลื่อน ก็ต้องใช้เครื่องหมาย $ มาช่วย (กด F4 ก็ได้) โดยหลักการคือ หาก $ อยู่หน้าตัวไหน ตัวนั้นจะถูกตรึงไว้ไม่ให้เลื่อนไปไหน (ในหนังสือ Excel Level Up! ผมใช้คำว่าใช้เงิน $ ฟาดหัวให้อยู่นิ่งๆ)

    ดังนั้น…

    • ถ้าเขียนว่า =$E$1+3 มันก็จะไม่เลื่อนไปไหนเลย
    • ถ้าเขียนว่า =$E1+3 มันก็จะไม่เลื่อนคอลัมน์ แต่เลื่อนแถวได้
    • ถ้าเขียนว่า =E$1+3 มันก็จะเลื่อนคอลัมน์ได้ แต่เลื่อนแถวไม่ได้
    • ถ้าเขียนว่า =E1+3 มันก็จะเลื่อนได้ทั้งคอลัมน์และแถว

    ซึ่งทั้ง 4 แบบนี้กดปุ่ม F4 เพื่อเปลี่ยนรูปแบบไปมาได้ครับ

    ถ้าอยากเรียนรู้เพิ่มเติม อ่านได้ที่ การคัดลอก ตัด แปะ แทรก

    6. ฟังก์ชั่นที่ใช้บ่อยจริงๆ มีไม่เยอะ

    ฟังก์ชั่นที่ใช้บ่อยจริงๆ ใน Excel มีแค่ 20% ของฟังก์ชั่นทั้งหมด (ตามกฎ 80/20 เลย) ดังนั้นมันไม่ใช่เรื่องยากเกินไปที่จะเรียนรู้แน่นอน ถ้าเรียนรู้แค่วันละ 1 ฟังก์ชั่น เพียง 2 เดือนก็เรียนครบแล้วครับ

    ผมอยากให้หลักคิดบางอย่าง กับฟังก์ชั่นบางตัวที่ Hot Hit สุดๆ ดังนี้ครับ

    • เมื่อนึกถึงคำว่า “ถ้า” ให้ใช้ ฟังก์ชั่น IF โดย 1 IF แตกกิ่งก้านได้ 2 กิ่ง คือ จริง และ เท็จ (หากมีหลายๆ “ถ้า” ก็ต้องใช้ IF ซ้อนกันหลายตัว)
    • เมื่อต้องการ “Map ข้อมูล” เช่น หาชื่อสินค้าจากรหัสสินค้า ให้ใช้ฟังก์ชั่น VLOOKUP
    • เมื่อต้องการหาว่าข้อมูลที่สนใจอยู่ลำดับที่เท่าไหร่ ให้ใช้ ฟังก์ชั่น MATCH
    • หากรู้พิกัด แล้วอยากได้ค่าในพิกัดนั้นกลับมา ใช้ ฟังก์ชั่น INDEX
    • หากต้องการทำงานกับข้อความ เช่น นับอักขระ ตัดคำ แทยที่คำ ให้ใช้ฟังก์ชั่นกลุ่ม Text
    • หากต้องการทำงานกับวันที่และเวลา เช่น ดึงค่า ปี เดือน วัน ให้ใช้ฟังก์ชั่นกลุ่ม Date/Time ผสมกับความรู้เรื่องที่ว่า Excel มองวันที่/เวลา เป็นแค่ตัวเลข

    7.บังคับให้กรอกข้อมูลตามที่กำหนดด้วย Data Validation

    บางครั้งเราต้องมีการให้คนอื่นมากรอกข้อมูลในไฟล์ Excel ที่เราทำขึ้น เช่น ทำแบบฟอร์มช่วยคำนวณบางอย่างให้ ซึ่งเราเขียนสูตรไว้อย่างดี แต่สุดท้ายฟอร์มกลับใช้ไม่ได้เพราะคนกรอก กรอกข้อมูลไม่ตรงกับที่เราคิด เช่น กรอกผิดประเภท ผิดรูปแบบ

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

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

    เช่นรูปข้างล่าง ผมใส่เงื่อนไขว่าต้องนับแต่ละคำได้ไม่เกิน 1 ครั้ง

    prevent-duplicate-entry2

    แต่ที่เจ๋งสุดคือเครื่องมือที่ชื่อว่า List ซึ่งสามารถทำเป็น Dropdown List เพื่อช่วยให้ผู้ใช้งานทำงานได้สะดวกมากขึ้น ซึ่งเป็นเครื่องมือ Data Validation ที่ใช้บ่อยที่สุดเลย

    dropdown3

    ถ้าอยากเรียนรู้เพิ่มเติม อ่านได้ที่ Data Validation

    8. การสร้าง PivotTable เพื่อสรุปผลข้อมูลจากฐานข้อมูลที่เตรียมไว้

    PivotTable (ฝรั่งอ่านว่า พิ-วอท-เท-เบิ้ล) เป็นเครื่องมือบน Excel ที่สามารถสรุปผลข้อมูลตามเงื่อนไขที่กำหนดได้อย่างง่ายดายและรวดเร็ว

    data-source
    pivot-sample-01

     ==> 

    เช่น สามารถสรุปได้ว่าข้อมูลแต่ละประเภท มีผลสรุปที่เราสนใจเป็นเท่าไหร่ เช่น ผลรวม/จำนวนนับ/ค่าเฉลี่ย/ค่ามาก/น้อยสุด เป็นต้น

    ความสามารถนี้ช่วยให้เราสามารถสรุปผลจากข้อมูลจำนวนมากที่อยู่ในลักษณะตารางฐานข้อมูล มาเป็นข้อมูลสรุปแบบสั้นๆ โดยให้เราสามารถพลิกแพลงมุมมองไปมาเพื่อให้เห็นข้อมูลในมุมมองที่สนใจได้อย่างรวดเร็ว โดยที่เมื่อได้ตารางสรุปตามต้องการแล้วยังสามารถเอาไปสร้างเป็นกราฟต่อได้อีก สะดวกสุดๆ เลยครับ

    ถ้าอยากเรียนรู้เพิ่มเติม อ่านได้ที่ Pivot Table ภาค 1 – การสรุปผลข้อมูลขั้นพื้นฐาน

    9. การสร้างกราฟ จากข้อมูลที่ทำการสรุปผลไว้แล้ว

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

    ดังนั้นกราฟหรือแผนภูมิจึงเป็นสิ่งที่จำเป็นต่อการนำเสนองานเป็นอย่างยิ่ง เพราะช่วยประหยัดเวลาในการอธิบาย และทำให้การนำเสนอน่าสนใจ และเป็นที่จดจำมากขึ้น

    การจะทำกราฟได้นั้น เราต้องมีการสรุปผลข้อมูลเสียก่อน ไม่ว่าจะใช้ PivotTable หรือพวก SUMIFS/COUNTIFS ก็ตาม

    chart-animate-1

    ถ้าอยากเรียนรู้เพิ่มเติม อ่านได้ที่ การสร้างกราฟแผนภูมิใน Excel เบื้องต้น

    10 : อย่าเพิ่งคิดว่า Excel ทำไม่ได้

    ปัญหาหลายๆ อย่างนั้นดูยาก และดูเหมือนไม่น่าจะใช้ Excel แก้ไขปัญหาได้ แต่เอาเข้าจริงๆ แล้วมันก็มีทางแก้ไขปัญหาอยู่ดี เพียงแต่เรายังไม่รู้เท่านั้นเอง…

    ตัวอย่างที่ Extreme มากๆ คือ มีคนใช้ Excel แก้ปัญหา Sudoku ได้โดยไม่ต้องใช้ VBA หรือ Solver เลยด้วยซ้ำ!! ถ้าสนใจอ่านได้ในนี้ (ยากมากๆ หน่อยนะครับ)

    โหลดไฟล์แก้ปริศนา Sudoku ได้ที่นี่

    sudoku

    ดังนั้น ถ้าเจอปัญหาอะไรก็ตาม ผมอยากให้ลองแก้ปัญหาอย่างสุดความสามารถก่อน เพราะมันจะทำให้คุณเก่งขึ้นอีกมาก

    ผมชอบแนะนำให้ค่อยๆ คิดทีละ Step แบ่งย่อยปัญหาใหญ่ให้เป็นปัญหาเล็กๆ หลายๆ อันแล้วแก้ปัญหาทีละเปลาะ ทีละประเด็น จะง่ายขึ้นมาก หรือที่ในหนังสือผมเรียกว่า Divide & Conquer นี่แหละครับ

    หากแก้ปัญหาด้วยตัวเองไม่ได้ ก็อย่าลืมพึ่งกาอากู๋ Google หรือจะถามทางผู้รู้ Excel ทั้งหลายก็ได้ คนไทยเก่งๆ ก็มีเยอะครับ ตามนี้เลย ==> 4 จักรพรรดิ และ 7 เทพโจรสลัด แห่งวงการเอ็กเซล (จากเว็บ วิศวกรรีพอร์ต)

    ส่งท้าย Concept Excel สำคัญ

    สุดท้ายนี้ ผมเชื่อว่า Excel มีอะไรให้เรียนรู้อีกเยอะมากๆ ยิ่งเรียนยิ่งรู้ว่าเรายังไม่รู้อีกมากนัก แต่การเรียนรู้เพื่อเพิ่มความสามารถของตัวเองนั้นย่อมเป็นสิ่งที่คุ้มค่าแน่นอน เพราะการใช้ Excel ได้ดี จะช่วยลดเวลาการทำงานเราลงได้อีกมาย ซึ่งเวลาของเรามีค่ามากนะ ไม่เชื่อ อ่านได้ใน เวลาของคุณมีค่าเท่าไหร่? สอนวิเคราะห์ด้วย Data Table เบื้องต้น

  • เจาะลึกทุกแง่มุมการทำ Dropdown 2 ชั้น (Ver. ปรับปรุงใหม่)

    เจาะลึกทุกแง่มุมการทำ Dropdown 2 ชั้น (Ver. ปรับปรุงใหม่)

    ก่อนหน้านี้ผมได้เคยเขียนอธิบายวิธีทำ Dropdown List 2 ชั้น และ 3 ชั้นขึ้นไปแล้ว… หลายๆ คนก็นำไปใช้ประโยชน์ได้เป็นอย่างดี แต่ปัญหาอยู่ที่ บางคนทำตามแล้วมัน Error!!

    เอ๊ะ แล้วทำไมบางคนทำตามแล้วไม่ Error แต่บางคนทำแล้ว Error ล่ะ? เรามาไขคำตอบกันในบทความนี้ครับ ยาวหน่อย แต่ได้ความรู้มากมาย รับรองเลย!!

    ใครไม่เคยอ่านบทความ 2 อันก่อนหน้ามาก่อน สามารถอ่านแค่บทความนี้อันเดียวก็เข้าใจได้ครับ ไม่ต้องย้อนกลับไปอ่านให้เสียเวลา ^^

    หลักการทำ Dropdown

    Dropdown List เกิดจากการใช้ [Data] –>Data Tools –> Data Validation แล้วเลือก List จากนั้น ให้เลือก Range ที่ต้องการให้เป็น item ย่อยๆ เวลาที่กดปุ่มสามเหลี่ยมเพื่อเลือกใช้ Dropdown แค่นี้ก็จะได้ Dropdown แล้วล่ะ เช่น ผมมีรายชื่อภาพยนต์อยู่ 4 เรื่อง ผมก็แค่ลาก A2:A5 ดังนี้ได้เลย

    dropdown0

    ทีนี้ก็จะได้ Dropdown มาใช้แบบง่ายๆ แล้ว ไม่มีอะไรยากเลยใช่มั้ยครับ ^^

    dropdown3

    ทำ Dropdown โดยใช้ Define Name ดีกว่า

    วิธีที่ดีกว่าการเลือก Range ก็คือการใช้ Define Name มาแทน ผมสามารถตั้งชื่อ List 4 เรื่องนั้นใน Define Name ชื่อ Movies ได้ ซึ่งมี 2 วิธี คือ

    1. ตั้งชื่อใน Name Box : ลากคลุม 4 เรื่อง (4 ช่อง)แล้วใส่ชื่อใน Name Box
    2. ใช้ Create Names from Selection : ลากคลุมถึง Heading (5 ช่อง) แล้วกด Ctrl+Shift+F3 เพื่อตั้งชื่อจากช่องบนสุด (หากติ๊ก Top Row อย่างเดียวอยู่แล้วก็กด Ok ได้เลย)ซึ่งในทีนี้ผมขอทำวิธีที่ 2 เพราะความชอบส่วนตัวล้วนๆ
      dropdown1

    จากนั้นให้ไปที่ Cell ที่ต้องการจะทำ Dropdown แล้วเลือก [Data] –> Data Validation แล้วเลือก List แล้วใส่ชื่อที่ตั้งไว้ลงไป (กด F3 เพื่อช่วยในการเลือกชื่อที่ตั้งไว้แล้วได้)

    dropdown2

    ทีนี้ก็จะได้ Dropdown มาใช้เช่นเดียวกับวิธีแรกเลย แต่แบบนี้เจ๋งกว่าตรงที่แก้ไขตอนหลังง่าย และเขียนสูตรง่ายกว่าเยอะ ซึ่งเดี๋ยวเราจะทำกันในบทความนี้

    dropdown3

    ความยุ่งอยู่ที่ Dropdown ขั้นที่สอง

    Concept การทำ Dropdown ของเรายังเหมือนเดิม ไม่ว่ามันจะมีกี่ชั้นก็ตาม นั่นคือ ใช้ Define Name มาเป็น item ของ Dropdown นั้น แปลว่า ถ้าเป็น Dropdown ชั้นที่ 2 ก็ต้องใช้ Define Name ที่แทน item ที่จะเป็นตัวเลือกของชั้นที่สอง

    ความพิเศษอยู่ที่ว่า Dropdown ตัวที่สองเนี่ย มันสามารถเปลี่ยน item List ไปได้ โดยขึ้นอยู่กับการเลือก Dropdown ตัวแรก ซึ่งวิธีที่ง่ายที่สุดที่จะทำแบบนี้ได้ ก็คือใช้การเขียนสูตรมาช่วยนั่นเอง

    แปลว่าเราจะต้องสร้าง Define Name ของ List ชั้นที่ 2 ให้ครบทั้ง 4 List ซะก่อน

    สร้าง Define Name ของ List ชั้นที่ 2

    หากผมลองสร้าง List ที่จะเป็น item ของ Dropdown ชั้นที่สอง โดยใช้ชื่อของ List แทนชื่อหนัง โดยลองคลุมทั้งหมดแล้วกด Ctrl+Shift+F3 แล้วเลือกแค่ Top Row อันเดียว (เพราะใช้ Top Row ในการตั้งเป็นชื่อ)

    dropdown4

    จะได้ผลลัพธ์ออกมาดังนี้

    • คอลัมน์ D ได้ชื่อ บ้านผีปอป คือ D2:E12 ซึ่งอันนี้ออกมาปกติ เราใช้ทำงานได้
    • คอลัมน์ E ได้ชื่อ Star_Wars  คือ E2:E12 อันนี้ ชื่อดันมีเครื่องหมาย _ โผล่มาแทนช่องว่างซะงั้น
    • คอลัมน์ F ได้ชื่อ _13_เกมสยอง คือ F2:F12 อันนี้ ชื่อดันมีเครื่องหมาย _ โผล่มาหน้าสุด และมี _ แทนช่องว่างด้วย
    • คอลัมน์ F อันนี้หนักสุดเลย! ไม่มีชื่อ 300 ถูกตั้งขึ้นมาด้วยซ้ำ

    ลองทำ Dropdown ชั้นที่สองดู

    สมมติว่าผมยังไม่สนใจชื่อแปลกๆ ที่โผล่มา… หากผมต้องการทำให้ Dropdown ชั้นที่สองเป็น List ของบ้านผีปอบ ผมก็สามารถใช้ Data Validation แล้วใส่ชื่อโดยกด F3 เลือกได้ดังนี้

    dropdown5

    ทีนี้เนื่องจากชื่อมันต้องเปลี่ยนไปหากผมเปลี่ยนการเลือกของ Dropdown ครั้งแรก แปลว่าผมไม่สามารถใส่ชื่อลงไปตรงๆ ได้ แต่ผมต้องใส่ให้มัน Link กับ Dropdown ชั้นแรก โดยการใส่ว่า =A9 แทน

    แต่ถ้าเราไปเขียนเป็น =A9 ตรงๆ มันจะได้ผลลัพธ์เป็นคำว่า “บ้านผีปอบ” (ที่เป็น Text ไม่ใช่ Define Name )กลับไปแทน

    ดังนั้นเราต้องใช้ฟังก์ชั่น INDIRECT มาช่วยแปลง Text ให้เป็น Cell Reference จริงๆ อีกที นั่นคือ =INDIRECT(A9) จึงจะออกมาเป็น Define Name ที่ชื่อว่า บ้านผีปอบ จึงจะทำงานได้ (สังเกตว่าผมต้องเลือก Dropdown ชั้นแรกให้มีค่าก่อน ไม่งั้นมันจะขึ้นเตือนว่า Dropdown ชั้นที่2 จะมีปัญหา)

    dropdown6

    ลองเลือกบ้านผีปอบ แล้วเลือก Dropdown ขั้น 2 ซึ่งออกมาใช้งานได้!

    dropdown7

    ปัญหาเริ่มเกิด

    แต่ปัญหาที่เกิดขึ้นคือ หากเราเปลี่ยน Dropdown ชั้นแรกเป็น Star Wars แทน คราวนี้ Excel กลับไม่สามารถใช้งาน Dropdown ชั้นที่สองได้แล้ว!! (นี่คือปัญหาที่หลายๆ คนอาจจะเจอตอนทำตามที่ผมสอนในบทความเดิมก่อนหน้านี้)

    dropdown8

    สาเหตุเป็นเพราว่า Excel ไม่สามารถหาชื่อที่เขียนว่า Star Wars ได้นั่นเอง (เพราะในไฟล์เรามีแต่ชื่อ Star_Wars) นี่แหละคือสาเหตุที่ทำให้หลายคนทำตามผมในตัวอย่างที่แล้ว แต่ทำตามไม่ได้ เกิดปัญหา เพราะว่าชื่อที่ตั้งขึ้นมามันไม่เหมือน Item ที่เลือกในชั้นแรกนั่นเอง

    สาเหตุที่ชื่อที่ถูกตั้งขึ้นจริง (จากการกด Ctrl+Shift+F3) ไม่เหมือนกับสิ่งที่เราตั้งใจไว้เกิดจากข้อจำกัดของการตั้งชื่อครับ

    ชื่อที่กำลังจะตั้งขึ้นมาใหม่นั้นมีข้อจำกัดดังนี้

    • หากมีช่องว่าง จะถูกแทนที่ด้วย _
      • เช่น Star Wars  จะกลายเป็น Stars_Wars ให้
    • หากขึ้นต้นด้วยตัวเลข (แต่มี Text ต่อ) จะถูกใส่ _ นำหน้าชื่อให้โดยอัตโนมัติ
      • เช่น 13 เกมสยอง กลายเป็น _13_เกมสยอง
    • หากมีแต่ตัวเลข ไม่สามารถตั้งชื่อได้เลย
      • เช่น 300 ไม่สามารถตั้งชื่อได้เลย

    ทางแก้ไขทำไง?

    ทางแก้มีอยู่ 2 วิธีใหญ่ๆ

    1. เขียนสูตรแก้ไข : ตอนที่จะทำ Data Validation ให้เขียนสูตรแปลง item ให้เหมือนกับชื่อที่จะเกิดขึ้นมา เช่น เติมพวก _ ให้โดยอัตโนมัติ
      • เช่น แทนที่เราจะ INDIRECT(A8) ตรงๆ เราก็ INDIRECT(SUBSTITUTE(A8,” “,”_”)) แทนสิ ก็จะแก้ปัญหาเรื่องการมีช่องว่างได้แล้ว…
      • แต่ถ้ามีขึ้นต้นด้วยตัวเลข ก็ต้องมาเขียนดักอีก เช่นให้เริ่มด้วย _ หากใช้ Left เช็คตัวแรกแล้วเป็นตัวเลข ซึ่งจะเห็นว่าเริ่มยุ่งยากแล้ว
      • ยังไงชื่อ 300 ก็มีปัญหาตั้งชื่อไม่ได้อยู่ดี…
      • ดังนั้นผมจึงอยากแนะนำวิธีที่ 2 ดีกว่า เพราะครอบคลุมแก้ไขได้ทุกกรณี
    2. ตั้งชื่อ Dropdown เป็นคำที่ไม่ติดปัญหา แล้วใช้ VLOOKUP เอา : แทนที่เราจะตั้งชื่อ Dropdown ชั้นที่ 2 ด้วยชื่อหนัง ซึ่งอาจเปิดปัญหา เราก็ตั้งชื่อกลางๆ ไปเลย เช่น Movie1,Movie2,Movie3… ก็ได้
      • ก่อนอื่นลบ Define Name เดิมของ Dropdown ชั้น 2 ทิ้งให้หมดก่อน ด้วย [Formula] –> Name Manager
        dropdown9
      • ตั้งชื่อด้วย Movie1, Movie2, Movie3, Movie4 แทน
        dropdown10
      • สร้างความสัมพันธ์กับ Dropdown ชั้นแรก เพื่อจะใช้ VLOOKUP ได้ภายหลัง
        dropdown11
      • จากนั้นใน Data Validation ของ Dropdown ชั้นที่ 2 เราจะใช้ VLOOKUP มาช่วย Map ข้อมูลว่า item ของ Dropdown ชั้นแรก จะ Link กับ Define Name ของ Dropdown ชั้นที่ 2 ยังไง?
        dropdown12
      • เพียงเท่านี้ Dropdown ชั้นที่ 2 ก็ทำงานได้แล้วทุกกรณีdropdown14
      • แม่แต่ 300 ก็ไม่กลัว!
        dropdown13

    วิธีอื่นๆ ในการทำ Dependent Dropdown

    1. ใช้ OFFSET ทำ Dropdown กี่ชั้นก็ได้ อ่านรายละเอียดได้ที่นี่
    2. ใช้ Slicer อ่านรายละเอียดได้ที่นี่
  • แจกโปรแกรมช่วยวางแผนมาตรการ Shopping ลดหย่อนภาษี 15,000 บาท

    เนื่องจากทางภาครัฐมีออกมาตรการ Shopping แล้วลดหย่อนภาษีได้สูงสุด 15,000 บาท (ดูรายละเอียด http://www.rd.go.th/publish/fileadmin/user_upload/PLAN/pasi_2558.pdf และ  https://droidsans.com/shopping-and-traveling-tax-reduction-in-thailand-2558 )

    ผมก็เลยทำโปรแกรมช่วยวางแผน Shopping  ที่มี จุดมุ่งหมายคือ ให้แต่ละคนซื้อของได้ใกล้เคียงรายได้สุทธิตัวเองที่ 15000 ให้มากที่สุด!! 

    เผื่อบ้านไหนมีคนที่มีรายได้ที่ตต้องเสียภาษีหลายคน จะได้แบ่งกันซื้อของให้ได้คุ้มที่สุดไงครับ

    วิธีการทำ ผมทำโดย Solver ธรรมดาๆ วิธีใช้ก็ทำตามนี้ครับ

    1. ให้พิมพ์รายละเอียดราคาสินค้าลงไปในช่องเหลือง
      • คอลัมน์ B อาจไม่พิมพ์ก็ได้ แต่คอลัมน์ C ให้พิมพ์ราคาสินค้าลงไป
      • ถ้าสินค้ามีไม่ถึงล่างๆ ก็ใส่เลข 0 ไปเลยก็ได้
    2. พิมพ์รายได้สุทธิลงในแถวที่ 3 ของแต่ละคนเลยครับ
      • คนที่มีเงินได้สุทธิ ให้พิมพ์เลข 15000 ลงไป
      • ถ้าคนที่เสียภาษีมีไม่ถึง 5 คน ก็พิมพ์ 0 เลยก็ได้ครับ
    3. ลบข้อมูลเดิมโดยเลือก D5:H24 แล้วกดลบทิ้งไปก่อน (จะช่วยให้ Solve ค่าได้ดีขึ้น)
    4. กดใช้ Solver ตามรูปเลย
      *** ใครที่ไม่มี Solver ให้เลือก ต้องเพิ่ม Solver Add-in เข้าไปก่อนครับ (ทำครั้งเดียว)ตามนี้

      • File –> Options
      • คลิ๊ก Add-Ins –> Manage ด้านล่าง –> Excel Add-ins –> กด Go..
      • ติ๊ก Solver Add-in แล้วกด Ok

    shop-for-tax

    สามารถโหลดโปรแกรมได้เลยที่นี่ ==> ShoppingforTax 

  • Excel VBA Basic : แผนดีมีชัยไปกว่าครึ่ง

    Excel VBA Basic : แผนดีมีชัยไปกว่าครึ่ง

    ผมได้พูดถึงเรื่องของ 10 Concepts เริ่มต้นเรียนรู้การเขียนโปรแกรมด้วย Excel VBA ซึ่งเป็นการเกริ่นนำภาพรวมการใช้ VBA ใน Excel ไปแล้ว

    วันนี้ผมจะขอลงรายละเอียดถึง Step แรก นั่นก็คือ ขั้นของ งานวางแผน/ออกแบบ ซึ่งเป็นหัวใจที่สำคัญที่สุดของการเขียนโปรแกรมนั่นเอง

    งานวางแผนนี้ ถ้าจะเปรียบเทียบให้เห็นภาพเข้าใจง่ายๆ ผมอยากให้คุณจินตนาการตามนี้ครับ…

    เมื่อคุณมีผู้ช่วยเป็น Superman

    ถ้าในทีมของคุณมีพนักงานใหม่ที่ทำงานเร็วปรื๊ด (ระดับเดียวกับ Superman) เข้ามาช่วยงานคุณ ซึ่งพนักงานใหม่คนนี้ยอมให้คุณสั่งทำงานอะไรก็ได้ (ขอให้เป็นงานที่ทำใน Excel นะ…) ทำงานถึกแค่ไหนก็ยอม…

    มันคงสุดยอดไปเลยใช่มั้ยครับ?

    แต่ปัญหาติดอยู่อย่างเดียวครับ คือ พนักงานคนนี้ไม่เข้าใจในงานที่ทำแม้แต่น้อย คิดเองก็ไม่เป็น ทำตามคำสั่งได้อย่างเดียว แล้วคุณต้องบอกให้ละเอียดๆ ด้วยนะ บอกแค่ไหนทำแค่นั้นเลยเอ้า!

    ผมจะบอกว่า…

    ถ้าคุณหาวิธีสั่งเจ้าพนักงานใหม่ที่ทำงานตรงๆ ซื่อๆ ทื่อๆ คนนี้ได้ คุณก็สั่งงาน VBA ใน Excel ได้ครับ

    เพราะ VBA มันทำตัวแบบนี้เป๊ะเลย! คุณสั่งอะไร มันทำอย่างนั้น ไม่มีเกินเลย ไม่มีคิดเองทั้งสิ้น

    สิ่งที่อยากให้คิดตอนนี้ก็คือ คุณยังไม่จำเป็นต้องกังวลว่าจะใช้คำสั่งอะไรในการเขียนโปรแกรม สมมติว่าคุณพูดภาษามนุษย์แล้ว Excel เข้าใจแล้วกันนะครับ ^^

    (more…)

  • 10 Concepts เริ่มต้นเรียนรู้การเขียนโปรแกรมด้วย Excel VBA

    10 Concepts เริ่มต้นเรียนรู้การเขียนโปรแกรมด้วย Excel VBA

    การเขียนโปรแกรมให้ Excel ทำงานแบบอัตโนมัติด้วย VBA (Visual Basic for Application) เป็นหัวข้อทักษะขั้นสูงใน Excel ที่มีคนอยากเรียนรู้เยอะมากที่สุดตลอดกาลลลลลเลยล่ะ!

    ผมจึงได้รับคำเรียกร้องจากแฟนเพจจำนวนมาก ให้ทำเนื้อหาเกี่ยวกับ VBA ได้แล้ว ดังนั้นวันนี้จึงถึงเวลาที่ผมจะมาพูดถึงเรื่อง VBA ซะทีครับ ซึ่งทำทั้งที ก็เริ่มปูพื้นบานให้ใหม่ตั้งแต่แรกเลย ^^

    VBA คืออะไร?

    มันก็คือการเขียนโปรแกรมแบบหนึ่ง ซึ่งแทนที่เราจะนั่งเอาเม้าส์หรือคีย์บอร์ดกดคำสั่ง Excel ทีละ Step ตามปกติ เราสามารถเขียนคำสั่งใน VBA เอาไว้ เพื่อให้ Excel สามารถทำงานต่างๆ ตามที่เรากำหนดได้เลย แถมยังใส่ความฉลาดให้มันได้ด้วยนะ เช่น ถ้าสถานการณ์เป็นแบบนี้ๆๆ จะให้มันทำงานยังไงต่อ (คล้ายๆ ใส่ฟังก์ชั่น IF นั่นแหละครับ แต่เป็นการใส่ให้กับชุดคำสั่งแทน)

    แนวทาง VBA ที่ผมจะสอน

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

    งานอะไรที่ Excel ทำได้ เราจะปล่อยให้ Excel ทำไป (เช่น พวกสูตรคำนวณ หรือเครื่องมือ Ribbon อย่าง Pivot Table) ส่วนงานไหนที่ทำไม่ได้ เราถึงจะใช้ VBA มาช่วย!!

    ดังนั้นก่อนอื่นคุณควรมีความรู้พื้นฐาน Excel ให้ดีพอสมควรก่อน แล้วค่อยมาเรียนรู้ VBA ในแบบที่ผมจะสอนให้นะครับ

    และต้องขอบอกไว้ก่อนว่า ในบทความนี้เราจะยังไม่ลงลึกถึงการเขียนเชิงเทคนิคจริงๆ แต่จะเน้นให้เห็นแนวคิดและภาพรวมก่อน (ซึ่งสำคัญกว่าความรู้เชิงเทคนิคมาก!) สำหรับความรู้เชิงเทคนิคจะอยู่ในบทความถัดๆ ไปครับ

    เอาล่ะ…อ่านมาถึงตรงนี้ก็เริ่มยาวแล้ว เพื่อไม่ให้เสียเวลา เรามาดูกันเลยว่า 10 Concepts ที่ผมจะบอกมีอะไรบ้าง?

    Concept 1 : งาน 3 ส่วนของการเขียน VBA ใน Excel

    การเขียนโปรแกรม VBA ขึ้นมาซักชิ้นหนึ่ง ผมอยากให้แบ่งงานออกเป็น 3 ส่วนดังนี้

    3types
    1. งานวางแผน/ออกแบบ : เป็นการวางแผนภาพใหญ่ ว่าจะให้แต่ละส่วนทำงานร่วมกันยังไง เปรียบได้กับผู้บริหารขององค์กร
    2. งานควบคุม : งานที่คอยควบคุมการทำงานว่า จะให้ทำงานชิ้นไหนก่อนหลัง ทำซ้ำกี่ที หรือทำตามเงื่อนไขที่กำหนดก็ได้ เปรียบได้กับเป็นหัวหน้าทีมที่พร้อมคุมพนักงานปฏิบัติการ โดยรับนโยบายแผนงานภาพรวมมากจากผู้บริหารอีกที
    3. งานปฏิบัติการ : เป็นงานที่ต้องลงแรง มี action บางอย่างเกิดขึ้น ซึ่งเป็นการสั่งให้ Excel ทำงานแต่ละชิ้นตามที่เราต้องการ เปรียบได้กับพนักงานระดับปฏิบัติการทั่วไป

    ถ้าลองพิจารณางานแต่ละส่วน จะมีความยากง่ายต่างกัน ดังนี้

    • ส่วนที่ง่ายที่สุด ก็คือ ส่วนที่ 3 : งานปฏิบัติการ
      • โชคดีที่ใน Excel มีเครื่องมือสุดเจ๋งที่เรียกว่า Macro Recorder ซึ่งสามารถ “บันทึก action ที่เราทำบน Excel ให้กลายเป็นภาษา VBA ได้เลย” ดังนั้นถึงคุณจะยังเขียนภาษา VBA ไม่เป็น คุณก็ให้ Macro Recorder ทำหน้าที่นี้ไปได้ (เป็นผู้ช่วยพนักงาน)  นอกจากนี้คุณยังสามารถไปหา Code ในโลกออนไลน์ที่มีคนเขียนเอาไว้ มาประยุกต์ใช้กับ Code ของคุณก็ยังได้!
    • ส่วนที่จะว่ายากก็ยาก จะว่าง่ายก็ง่าย ก็คือ ส่วนที่ 1 : งานวางแผน/ออกแบบ ซึ่งเป็นสิ่งที่ไม่ค่อยเกี่ยวกับเนื้อหาของ Excel หรือ VBA เท่าไหร่
      • เป็นเรื่องของตรรกะในการทำงานของ Program ว่ามันควรจะทำงานอย่างไรเพื่อที่จะแก้ปัญหาที่กำลังเผชิญหน้าอยู่ ซึ่งแต่ละคนอาจมีวิธีแก้ที่แตกต่างกันได้
      • แต่สิ่งสำคัญที่อยากให้ทำคือ คุณควรวางแผนการทำงานโดยรวมของโปรแกรมก่อนว่า หลักการทำงานจะทำยังไง โดยอาจจะวาดเป็น Flow Diagram หรือจะเขียนเป็น Concept แบบภาษาพูดไว้ก็ได้ไม่ว่ากัน ขอให้วางแผนเถอะ!
      • เคล็ดลับคือ หากคุณนึกวิธีแก้ปัญหาหรือเงื่อนไขในสมองคุณได้ คุณก็ให้ VBA ทำตามแบบที่คุณคิดนั่นแหละ แต่ถ้ายังคิดไม่ออก คุณก็แค่ศึกษาทางแก้ไขของคนอื่นไปซักพัก คุณจะพบทางแก้ของตัวเองในที่สุด
    • ส่วนที่เราจะต้องเรียนรู้เพิ่มเติมเป็นหลักก็คือ ส่วนที่ 2 : งานควบคุม 
      • ส่วนนี้เป็นภาษา VBA ที่ไม่สามารถใช้ Macro Recorder มาช่วยได้ ซึ่งผมมีหน้าที่ทำให้คุณสามารถเขียน VBA ส่วนนี้ให้ได้นั่นเอง

    Concept 2 : ทุกอย่างใน Excel คือ พนักงานที่พร้อมจะทำงานให้คุณ!!

    ผมจะบอกว่า องค์ประกอบทุกอย่างใน Excel ล้วนยอมเป็นพนักงานให้คุณสั่งงานได้หมดเลย ไม่ว่าจะเป็นตัวแต่ละ Sheet แต่ละ Cell เครื่องมือ Filter/Pivot ก็ยอมให้คุณสั่งงานได้เช่นกัน ซึ่งภาษาอย่างเป็นทางการของ “พนักงาน” ที่ผมพูดถึง เรียกว่า “Object” นั่นเองครับ

    servant

    ถ้าเรามี Object หลายตัว (คนทำงานหลายคน) การที่เราจะสั่งงานได้นั้น เราจะต้องมีวิธีเรียกถึงสิ่งนั้นจริงมั้ยครับ? เช่น ถ้าคุณมีพนักงานอยู่ 3 คนที่พร้อมจะทำตามคำสั่งคุณได้ คุณก็ต้องมีวิธีเรียกแต่ละคนว่าจะเรียกเค้าว่าอะไร? เช่น พนักงาน A นัดหมายการประชุม, พนักงาน B เตรียมขนมเบรค, พนักงาน C จดบันทึกการประชุม เป็นต้น

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

    เรื่องของเรื่องคือ เราจะอ้างอิงไปหาคนงานแต่ละคนใน Excel ยังไงดีล่ะ?

    ข่าวดีคือ เรื่องนี้คุณสามารถใช้ Macro Recorder ลองบันทึกการสั่งการของเราที่ทำกับ Object นั้นๆ ใน Excel แล้วค่อยมาดู Code VBA ภายหลังได้ว่าจะต้องเรียก Object นั้นว่าอะไร แค่นี้ก็ไม่เป็นปัญหาแล้วครับ ดังนั้นเรื่องนี้จึงไม่ใช่สิ่งที่ต้องกังวลมากนัก

    ซึ่งเมื่อคุณลองดู Code ที่โผล่มาจะพบว่า แต่ละ Object นั้นมีความเป็นแม่ลูกกันอยู่พอสมควร และจะอยู่ในรูปแบบของ Objectแม่.Objectลูก เช่น ถ้า Object แม่เป็นคน เราก็สามารถอ้างอิงไปที่แขนของนาย A ได้ว่า นายA.แขน หรือจะอ้างอิงไปที่แขนของนาย B ได้ว่า นายB.ขา เป็นต้น

    Concept 3 : เราสั่งอะไรกับ Object ได้บ้าง?

    เมื่อรู้แล้วว่าเราจะเรียก Object แต่ละอันว่าอะไร… คำถามถัดไปก็คือ แล้วเราจะสั่งงานอะไรมันได้บ้าง?

    การสั่งงาน Object นั้นมีอยู่ 2 ลักษณะด้วยกัน คือ

    1. สั่งให้มันทำงานบางอย่าง (มีการกระทำ เช่น ลบ sheet, เพิ่มแถว, sort ข้อมูล)
      ซึ่ง action ที่ Object ทำได้ มีชื่ออย่างเป็นทางการว่า Method ครับ (คล้ายๆ กับ Verb ในภาษาอังกฤษ)
    2. สั่งให้เปลี่ยนลักษณะ/คุณสมบัติ (ทำให้คุณสมบัติเปลี่ยนไป เช่น เปลี่ยนค่า เปลี่ยนสี)
      ซึ่งคุณสมบัติของ Object นั้นมีชื่ออย่างเป็นทางการว่า Property ครับ (คล้ายๆ กับ Adjective ในภาษาอังกฤษ)
    object-fix

    ซึ่งแต่ละ Object จะมี Property และ Method เป็นของตัวเอง เช่น เครื่องมือ Filter มันทำการ Filter ได้ แต่ไม่สามารถสั่ง Filter ให้ Pivot สรุปข้อมูลได้ (เพราะไม่ใช่หน้าที่ของมัน) เป็นต้น

    แล้วเราจะรู้ได้ยังไงว่า Object แต่ละตัวมี Method หรือ Property อะไรบ้าง?

    วิธีที่ง่ายที่สุดก็คือใช้ Macro Recorder (อีกแล้ว!) บันทึกสิ่งที่เราทำใน Excel แล้วมาดู Code เช่นเดิมครับ แต่วิธีสังเกตคือ ชื่อของ Method และ Property จะตามอยู่หลังจากชื่อ Object ครับ ซึ่งจะอยู่ในรูปแบบ Object.Method หรือ Object.Property ครับ

    ยกตัวอย่างเช่น คุณสามารถกดบันทึก Macro แล้วลองสั่ง Filter ให้ทำการกรองข้อมูล จากนั้นค่อยไปดู Code VBA ที่ถูกสร้างขึ้นมาได้ซึ่งคุณจะเห็น Property และ Method ที่ถูกสร้างขึ้นมาอย่างแน่นอน ดังนั้นเรื่องนี้จึงไม่ใช่สิ่งที่ต้องกังวลอีกเช่นกัน

    Concept 4 : ตัวแปร และ Operator

    ตัวแปร

    การเขียนโปรแกรมนั้นมี Concept หนึ่งที่สำคัญนั่นก็คือ ตัวแปร

    คำว่าตัวแปร ตัวที่ค่าสามารถ “แปรเปลี่ยน” ไปได้เรื่อยๆ… พูดเหมือนขวานผ่าซาก แต่ก็เป็นแบบนั้นจริงๆ…

    หน้าที่ของมัน… ถ้าจะให้เข้าใจง่ายๆ ก็เป็นเหมือน กล่องที่เอาไว้เก็บค่าต่างๆ ซึ่งเราสามารถอ้างอิงค่าจากกล่องตัวแปรนี้ได้ ตรงนี้จะคล้ายๆกับการใช้ Cell Reference ใน Excel ที่เราสามารถเก็บค่าที่คำนวณแล้วเอาไว้ใน Cell เช่น A1 แล้วสามารถเอาค่าไปใช้ต่อได้โดยการใช้ Cell Reference ได้

    variable

    แต่ VBA เจ๋งกว่าตรงทีเราเปลี่ยนค่าของตัวแปรไปเรื่อยๆ ได้ด้วย! ทำยังไงมาดูกัน

    วิธีการใส่ค่าใหม่ลงไปในตัวแปร

    ให้ใช้เครื่องหมายเท่ากับ ในรูปแบบ ตัวแปร=ค่าที่จะใส่ลงไปในตัวแปร เช่น 

    x=30

    ถ้าต่อมาเราแสดงค่า x+5 ก็จะได้ค่า 35 ออกมานั่นเอง

    การสั่งงาน VBA จะเอาค่าฝั่งขวา มาใส่ในตัวแปรฝั่งซ้าย ดูแล้วเหมือนไม่มีอะไร แต่ถ้าเจอแบบนี้อาจมึนได้ เช่น
    x=x+1

    เฮ้ย ท่าจะเพี้ยนแล้ว x จะเท่ากับ x +1 ได้ไงกัน!?

    ใจเย็นครับ วิธีตีความที่ถูกต้องของคำสั่งบรรทัดนี้ก็คือ ให้เพิ่มค่า x จากเดิมไป 1 หน่วยต่างหากล่ะ!

    ก่อนจะจบในเรื่องของตัวแปร ผมต้องบอกก่อนว่า ตัวแปรใน VBA นั้นมีด้วยกันหลายประเภท (คล้ายๆ ใน Excel แหละครับ) เช่น เป็นตัวหนังสือ ตัวเลข ตรรกะ วันที่  แต่ละประเภทก็จะรองรับข้อมูลได้ต่างกันทำให้กินหน่วยความจำต่างกัน แต่ในเบื้องต้นนี้คุณยังไม่ต้องซีเรียสเรื่องนี้มากก็ได้ครับ

    Operator

    นอกจากตัวแปรแล้ว ใน VBA ก็จะมีพวกตัวดำเนินการ (Operator) คล้ายๆ Excel เลย  เช่น +,-,*,/, =,>,<,& …และอีกมายมาย ซึ่งเราสามารถนำมาใช้เขียนคำสั่งต่างๆ ได้ อีกเยอะแยะครับ เช่น เครื่องหมายทางคณิตศาสตร์เอาไว้คำนวณ, เครื่องหมายเปรียบเทียบ ทำให้เกิดค่า TRUE/FALSE ได้, เครื่องหมาย & เอาไว้เชื่อมข้อความ เป็นต้น

    Concept 5 : คำสั่งภาษา VBA จะทำงานจากบนลงล่างทีละบรรทัด

    VBA  มันจะทำจากบรรทัดบนลงล่างครับ (สั่งก่อนทำก่อนว่างั้นเถอะ)

    ดังนั้น ถ้าเขียนว่า

    พนักงาน A นัดหมายการประชุม

    พนักงาน B เตรียมขนมเบรค

    พนักงาน C จดบันทึกการประชุม

    แปลว่า พนักงาน A นัดหมายการประชุม ก่อน จากนั้น พนักงาน B เตรียมขนมเบรค แล้วจบด้วย พนักงาน C จดบันทึกการประชุม เรียงตามลำดับแบบนี้ ทีละบรรทัด ทีละคำสั่ง ไม่มีอะไรยุ่งยากครับ

    ไม่อยากสั่งทีละคำสั่ง อยากสั่งเป็นชุดเลยได้มะ?

    ในหลายๆ สถานการณ์ ถ้าผมขี้เกียจสั่งคำสั่ง 3 อันแยกกันแบบนั้นทุกครั้ง ผมก็สามารถรวบให้มันอยู่ภายใต้ชุดคำสั่งเดียวกันได้เลยครับ ซึ่งใน VBA เราจะเรียกชุดคำสั่งว่า Sub (ซึ่งจะ Run ชุดคำสั่งย่อยที่อยู่ภายในนั้นจากบนลงล่าง)

    sub

    เช่น ถ้าผมรวม 3 อันนั้นเข้าไปใน Sub ที่ชื่อว่า จัดงานประชุม ดังนี้

    Sub จัดงานประชุม()

    พนักงาน A นัดหมายการประชุม

    พนักงาน B เตรียมขนมเบรค

    พนักงาน C จดบันทึกการประชุม

    End sub

    แล้วครั้งต่อไปเมื่อผมสั่งคำสั่งว่า Call จัดงานประชุม() คราวนี้ VBA ก็จะทำ 3 คำสั่งนั้นตามลำดับเลย! ไม่ต้องมาสั่งแยกอีกต่อไป

    แล้วถ้ามีอยู่ Action เดียวยังต้องมี Sub อีกมั้ย?

    ใน VBA เราไม่สามารถใส่คำสั่งโดยที่ไม่มีที่อยู่ได้ แปลว่าถึงมีอยู่คำสั่งเดียว เราก็ต้องเอาไว้ใน Sub อยู่ดี

    แต่ในความจริงแล้ว ยังมีชุดคำสั่งอีกแบบนอกจาก Sub นั่นก็คือ Function ซึ่งจะพูดถึงใน Concept ถัดไป

    Concept 5 : เราสร้างฟังก์ชั่นใช้เองใน Excel ได้ด้วย VBA

    อย่างที่ผมบอกว่านอกจาก Sub แล้ว ใน VBA เรายังมีชุดคำสั่งอีกประเภทนั่นก็คือ Function นั่นเอง แล้วมันต่างจาก Sub ยังไงล่ะ?
    คำตอบคือ Function ต่างจาก sub ตรงที่สุดท้ายแล้วจะส่งค่าผลลัพธ์บางอย่างกลับออกมายังตัวแปร (ที่ชื่อเดียวกับฟังก์ชั่น) ด้วย

    พูดง่ายๆ Sub คือชุดคำสั่งที่ทำ Action ต่างๆ แล้วจบไป…
    แต่ Function ทำอะไรบางอย่าง (เช่นคำนวณค่า) แล้วส่งผลลัพธ์กลับมาไว้ในตัวแปร…

    function

    ถ้าฟังแล้วยังดูงงๆ อีก ผมอยากให้นึกถึงฟังก์ชั่นที่เราใช้ในสูตร Excel ตามปกติครับ มันคือสิ่งเดียวกันเลย!

    เช่น ฟังก์ชั่น LEFT จะเห็นว่ามี Argument อยู่ 2 ตัวด้วยกัน ซึ่งพอใส่ Input เข้าไปแล้ว ฟังก์ชั่น LEFT ก็จะทำงานอะไรซักอย่าง สุดท้ายก็จะได้ผลลัพธ์คือ อักขระจำนวน num_char จากทางซ้ายของข้อความ text  ออกมาใน Cell จนได้

    ซึ่งอันนี้แหละที่คล้ายกับการใช้ชุดคำสั่ง Function ใน VBA ซึ่งจะได้ผลลัพธ์เก็บไว้ในตัวแปร
    เช่น ถ้าผมอยากสร้างฟังก์ชั่นไว้หา % ที่เปลี่ยนแปลงไป โดยจะให้ชื่อว่า PERDIF ผมก็ทำได้ดังนี้

    Function PERDIF(ค่าก่อน,ค่าหลัง)

    ค่าที่เปลี่ยน = ค่าหลัง-ค่าก่อน

    PERDIF = ค่าที่เปลี่ยน/ค่าก่อน

    End Function

    เพียงแค่นี้ คุณก็สามารถใส่สูตร =PERDIF(100,150) ใน Cell แล้ว Excel ก็จะคำนวณออกมาจนได้เป็น 0.5 หรือ 50% ได้ทันที!
    เห็นมั้ยว่าการสร้างฟังก์ชั่นใช้เองไม่ยากเลย นี่แหละคือพลังของ VBA ล่ะ นี่ถ้าเอาไปใช้กับฟังก์ชั่นซับซ้อนๆ จะเจ๋งขนาดไหน!!

    Concept 6 : ชุดคำสั่ง VBA จะเริ่มทำงานเมื่อมีเหตุการณ์ (Event) บางอย่าง

    ชุดคำสั่งทั้ง Sub และ Function อยู่ดีๆ มันจะเริ่มทำงานเองไม่ได้ครับ มันจะต้องมีกลไกบางอย่างไปสั่งการให้ VBA Run ชุดคำสั่งดังกล่าว ซึ่งเราจะเรียกกลไกหรือเหตุการณ์ที่มาสั่งการนี้ว่า Event ครับ

    ตัวอย่างของ Event เช่น การคลิ๊กปุ่มบนหน้าจอ, การกดปุ่มบน Keyboard, การเปิดไฟล์ขึ้นมา, การแก้ไขข้อมูล, การเรียกใช้ Sub , การเรียกใช้ Function เป็นต้น

    event

    แปลว่าเราสามารถกำหนดได้ว่า เมื่อเกิดเหตุการณ์ xx จะใช้สั่งคำสั่ง yy เป็นต้น ซึ่งสิ่งเหล่านี้มีประโยชน์มากในการทำงานอัตโนมัติ เมื่อผู้ใช้งานทำงานต่างๆ ใน Excel ก็ล้วนสามารถสั่งให้ VBA ทำงานได้ทั้งสิ้น (ที่ฮิตมากคือการกดปุ่ม, การเปิดไฟล์เข้ามา)

    เช่น

    Private Sub Workbook_Open()

    คำสั่ง A (ที่จะให้ทำ เมื่อเปิดไฟล์ขึ้นมา)

    End Sub

    เมื่อเราใส่คำสั่งลงไปใน Event Workbook_Open() แปลว่า
    เมื่อผู้ใช้งานเปิดไฟล์นี้ขึ้นมา มันจะรันคำสั่ง A โดยอัตโนมัติเลย เจ๋งป่ะล่ะ!!

    เรียกใช้ Sub หรือ Function ซ้อนกันก็ได้นะ

    sub-in-sub

    สิ่งที่ผมอยากจะบอกเพิ่มเติมก็คือ เราสามารถเรียกใช้ Sub หนึ่งภายใต้อีก Sub/Function ได้ เช่น เรียก SubA ถายใต้ Sub B ได้ และในทำนองเดียวกัน เราก็สามารถเรียกใช้ Function หนึ่งภายใต้อีก Sub/Function ได้เช่นกัน!!

    จะเห็นได้ว่า ถ้ามันซ้อนกันได้ขนาดนี้ VBA ก็จะทรงพลังมากขึ้นอีก เพราะเราใช้หลักการของ Divide & Conquer หรือ แบ่งหน้าที่กันทำทีละส่วนได้ แล้วค่อยสั่งคำสั่งให้มันมาทำงานร่วมกันอีกที!

    Concept 7 : ถ้าอยากให้ VBA ทำงานตามเงื่อนไขทำไง?

    อย่างที่ผมบอกใน Concept 5 ไปว่า VBA จะทำงานทีละบรรทัด.. แล้วถ้าเราไม่อยากให้มันทำงานทีละบรรทัด ต้องทำไงล่ะ?

    เราก็ต้องใส่คำสั่งที่ทำงานประเภท งานควบคุม ได้ ซึ่งการควบคุมมีประเภทหลักๆ ดังนี้

    IF
    1. ประเภททำงานตามเงื่อนไข เช่น
      • IF…Then…Else สามารถสั่งได้ว่า ถ้าเงื่อนไขเป็นจริง ให้ใช้ชุดคำสั่งอะไร เป็นเท็จจะใช้ชุดคำสั่งอะไร (มีทางแยก 2 ทาง) คล้ายๆ กับฟังก์ชั่น IF ของ Excel เลยครับ
      • Select Case… :ทำได้คล้ายๆ IF แต่จะแยกได้หลายๆ ทางเลย กำหนดได้ว่า ถ้าตัวแปรที่สนใจมีค่าเป็น A, B, C แต่ละอันจะให้ทำอะไรต่อ ตัวนี้คล้ายๆ กับฟังก์ชั่น CHOOSE ของ Excel เลยครับ แต่ดีกว่าตรงที่ไม่ได้จำกัดว่าตัวแปรต้องเป็นตัวเลขเหมือนกับ CHOOSE
      • On Error : เอาไว้จัดการเวลาเจอค่า Error ต่างๆ
    2. ประเภทให้ทำงานซ้ำ เช่น
      • For … Next  : สามารถกำหนดให้ทำงานซ้ำ (Loop) เป็นจำนวนรอบที่ต้องการได้ ซึ่งจะใช้ตัวแปร (เช่น i) มาช่วยนับจำนวนรอบ  เช่น อยากทำงาน 100 รอบ เมื่อเริ่มรอบแรกตัวแปรมีค่าเป็น 1 พอทำจบ โปรแกรมจะเพิ่มค่าไปอีก 1 ซึ่งทำจนตัวแปร i มีค่าเป็น 100 ก็จะเลิกทำนั่นเอง
      • For Each… : ใช้กับ Object ที่มีลูกๆ หลายตัว สามารถทำงานซ้ำจนกว่าจะวนครบลูกๆ ทุกคน
      • Do While…..Loop : สามารถกำหนดให้ทำซ้ำขณะที่เงื่อนไขยังเป็นจริง (ไม่รู้จำนวนรอบที่แน่นอน)
      • Do Until…..Loop : สามารถกำหนดให้ทำจนกว่าเงื่อนไขจะเป็นจริง (ไม่รู้จำนวนรอบที่แน่นอน)

    เมื่อรู้คำสั่งที่จะใช้ควบคุม Code VBA ได้แล้ว เราก็สามารถที่จะใช้เทคนิค Macro Recorder เพื่อสร้าง Code ที่เป็นส่วนงานปฏิบัติการ จากนั้นค่อยเอา Code ที่เอาไว้ควบคุมงานไปครอบ เพียงเท่านี้เราก็สามารถสร้างโปรแกรมที่ทรงพลังได้!

    Concept 8 : VBA เรียกใช้ฟังก์ชั่นของ Excel ได้ แถมควบคุมการทำงานนอก Excel ก็ยังได้!!

    worksheetfunction

    จริงๆ แล้วใน VBA ก็มีฟังก์ชั่นพื้นฐานหลายๆ อย่างให้ใช้โดยไม่เกี่ยวกับฟังก์ชั่นใน Excel เลย! บางตัวก็คล้ายกับฟังก์ชั่นใน Excel บางตัวก็ไม่เหมือนเลย เช่น LEN (นับจำนวนอักขระ), Cstr (แปลงให้เป็น Text), Datepart ( ดึงเอาส่วนของวันที่ออกมา เช่น วัน เดือน ปี), Instr (หาว่าอักขระที่ต้องการอยู่ตำแหน่งที่เท่าไหร่ของคำ) เป็นต้น

    แม้จะมีฟังก์ชั่นให้เลือกเยอะแยะ แต่มันก็ไม่เยอะเท่าใน Excel แน่นอน! ข่าวดีคือ ใน VBA เราสามารถเรียกใช้ฟังก์ชั่นของ Excel ได้ด้วย โดยการใช้คำสั่งที่ชื่อว่า WorksheetFunction ในรูปแบบ Application.WorksheetFunction.ชื่อฟังก์ชั่นในExcel(argument) เพียงเท่านี้คุณก็สามารถดึงพลังของ Excel มาช่วยใน VBA ได้อีกเยอะแยะ

    และนอกจากจะเอาพลังของฟังก์ชั่นใน Excel มาใช้ใน VBA ได้แล้ว เรายังสามารถใช้ VBA ควบคุมโปรแกรมอื่นๆ ได้ด้วย เช่น คุณสามารถสั่งให้ VBA ลบไฟล์ในเครื่องทิ้งได้เลยแบบไม่รู้เนื้อรู้ตัว (น่ากลัวมาก! ดังนั้นถ้าใครไม่แน่ใจ อย่าไปเปิด Run File Excel ที่มี VBA ของคนที่ไม่รู้จักนะครับ)  ซึ่ง Concept ในการไปควบคุมคนอื่นได้นั้น จะเป็นการเชื่อมต่อด้วยเครื่องมือที่ชื่อว่า Reference Library ซึ่งมีเครื่องมือให้เลือกอีกมากมายเลย

    Concept 9 : ติดปัญหาไม่ต้องกลัว ใช้เครื่องมือ Debug สิ

    การทำงานใน VBA นั้น แทบไม่มีทางที่คุณจะเขียน Code ทีเดียวแล้วใช้ได้เลยแบบไม่ผิดพลาด สิ่งสำคัญคือ ถ้าเกิด Error ขึ้นแล้วเราจะต้องหาทางแก้ไข

    311_0

    credit รูป : http://university.utest.com/writing-quality-bug-reports-and-utest-etiquette/

    ซึ่ง VBA ก็มีเครื่องมือช่วยเหลือดีๆ มาช่วยมากมาย โดยเฉพาะเครื่องมือในหมวด Debug ( Bug เป็นศัพท์คอมพิวเตอร์ หมายถึงความผิดพลาดของโปรแกรม ดั้งนั้น Debug จึงหมายถึงการกำจัดข้อผิดพลาดนั่นเอง)

    เครื่องมือ Debug จะช่วยหยุดการทำงานของ Code ในตำแหน่งที่เกิดความผิดพลาดให้ จากนั้นเราก็สามารถสั่งให้โปรแกรมค่อยๆ ทำงานทีละ Step แล้วค่อยตรวจดูผลลัพธ์ทีละขั้นได้ว่าผลลัพธ์เป็นไปตามที่คิดหรือไม่?

    ซึ่งเมื่อแก้ไขข้อผิดพลาดได้แล้ว ก็สามารถลอง Run โปรแกรมใหม่ เพื่อตรวจดูว่าข้อผิดพลาดหายไปรึยัง? (หรือมีข้อผิดพลาดใหม่เพิ่มมาอีก!)

    ปัญหาที่อาจจะพบได้บ่อยๆ และควรระวังไว้

    • รูปแบบของ Error ในการเขียนโปรแกรม : มี 3 รูปแบบใหญ่ๆ คือ
      • Error แบบจะๆ เขียนรูปแบบผิด ทำให้ Run ไม่ได้ : แบบนี้มันจะเตือนเราจะๆ เลย โดนเตือนก็แก้ไป เปิดหาวิธีการเขียนที่ถูกต้องตามเว็บ ตามหนังสือ หรือใน Help ก็ได้ ไม่ต้องคิดมากครับ
      • Run ได้แล้ว แต่ไปหยุดชะงักที่บางที่ : แบบนี้เจอที่ผิดแล้วค่อยแก้ไขไป ด้วยการ Debug จะช่วยได้ครับ
      • Run ได้ฉลุย แต่ผลลัพธ์ผิดโดยสิ้นเชิง : แบบนี้เรียกว่าผิดที่แนวคิดและตรรกะตั้งแต่แรก ต้องทบทวนความเข้าใจกันใหม่เลยทีเดียว
    • VBA เมื่อ Run Code ไปแล้วจะ Undo ไม่ได้! : ข้อนี้เป็นข้อจำกัดของ VBA เลย ที่ว่าเมื่อทำงานตามคำสั่งไปแล้ว หากเราไม่พอใจ เราจะไม่สามารถ Undo ได้เลย หากเผลอสั่งลบไป ก็จะหายไปเลยตลอดกาล!
      • ทางแก้ไข : หมุ่น Save Excel ไว้ก่อนจะ Run Code VBA เสมอ (Save ไหว้หลาย Version ได้ก็ดี 555)
    • มีการย้ายที่ Cell แล้ว Error : มีการเขียน VBA อ้างอิงกับ Cell อันนึงไว้โดยใช้ Cell Reference แต่ภายหลัง Cell นั้นถูกย้ายที่ใน Sheet Excel (ไม่ว่าจะ Cut/Insert/Delete) ผลคือ VBA ยังอ้างอิงไปยังที่เก่าอยู่ทำให้เกิด Error ได้
      • สาเหตุ : การเขียน Code ใน VBA มันไม่ฉลาดเหมือนสูตรใน Formula Bar ที่ว่าหากเราย้ายที่ Cell อ้างอิงแล้วสูตรจะย้ายตามให้โดยอัตโนมัติ เพราะ VBA จะยึดตามสิ่งที่เราเขียนไว้ ไม่มีการเปลี่ยนแปลง Code ให้เด็ดขาด
      • ทางแก้ไข : ให้ใช้การอ้างอิงไปที่ Defined name แทนการอ้างไปที่ Cell Reference เพราะ Defined Name มันเป็นส่วนหนึ่งของ Excel เองที่มีความฉลาดในการย้ายที่ Cell อยู่แล้ว

    Concept 10 : ความสามารถของ VBA ขึ้นกับจินตนาการของคุณ!

    จริงๆ Concept หลักๆ ของ VBA ก็ไม่พ้น 9 ข้อข้างบนอย่างที่ผมบอกไปแหละครับ มีแค่นี้จริงๆ แต่การที่เราจะสร้างโปรแกรม VBA เจ๋งๆ ขึ้นมาได้นั้น มันขึ้นอยู่กับความคิดของเรามากกว่า ว่าจะแก้ปัญหาที่พบเจอด้วยวิธีไหนดี?

    imagination

    บางทีเราแก้ปัญหาหนึ่งๆ ได้เช่นกัน แต่ใช้เวลารันนานมาก หรือไม่คงทนต่อการเปลี่ยนแปลง (เช่น หากมีคนแทรกแถวปุ๊ป Code เราพังเลย) แบบนี้เมื่อเรามีประสบการณ์มากขึ้น เราก็จะหาวิธีเขียนที่ดีขึ้น รันเร็วขึ้น ยืดหยุ่นมากขึ้นได้เรื่อยๆ เรียกได้ว่า เรียนรู้กันทั้งชีวิตก็คงไม่หมด เพราะถึงจะดีแล้ว..ก็ย่อมมีสิ่งที่ดีกว่าเสมอ แต่ผมว่ามันสนุกดีออก! ที่เราจะสามารถพัฒนาฝีมือ พัฒนางานของเราไปได้เรื่อยๆ

    ดังนั้นอย่าหยุดพัฒนาครับ ใครยังไม่ได้มีโอกาสลองใช้ VBA ก็เริ่มลองได้เลยครับ ไม่มีอะไรยากเกินความพยายาม!

    Step ต่อไป?

    ทั้งหมดในบทความนี้เป็นเพียง Concept ปูพื้นฐานทางความคิดก่อนครับ ตอนถัดๆ ไปจะมีตัวอย่างให้เห็นถาพชัดขึ้นนะ (โดยใช้ concepts ที่บอกนี่แหละ) อย่าลืมติดตามกันต่อนะครับ ^^

  • สร้างตารางสรุปยอดผ่อนเงินกู้ ด้วย Data Table

    สร้างตารางสรุปยอดผ่อนเงินกู้ ด้วย Data Table

    จากบทความที่แล้ว ผมได้พูดเรื่องของการใช้ Data Table มาวิเคราะห์คุณค่าของเวลาไปแล้ว… เพื่อให้เห็นภาพมากขึ้น ในบทความนี้ผมจะแสดงตัวอย่างการสร้างตารางสรุปยอดผ่อนเงินกู้ เมื่ออัตราดอกเบี้ยและระยะเวลากู้เปลี่ยนแปลงไปให้ดูครับ

    ก่อนอื่นให้สร้างการคำนวณยอดผ่อนต่องวดของซักสถานการณ์นึงให้ได้ก่อน ซึ่งเราจะใช้สูตร PMT ในการคำนวณดังภาพ

    =PMT(rate,nper,pv,[fv],[type])
    =PMT(อัตราดอกเบี้ยต่องวด,จำนวนงวดผ่อน,เงินต้น ให้ใส่ติดลบ เพราะ cash flow คนละทิศกัน)
    หมายเหตุ: ตัวอื่นเป็น optional ไม่ต้องใส่ก็ได้ครับ

    pmt-1

    จากนั้นเราก็สร้างตารางสรุป ว่าจะให้ค่าเปลี่ยนไปอย่างไรบ้าง โดยช่องหัวมุมให้ Link สูตรไปยังคำตอบ (B6) ให้เรียบร้อยก่อน

    (more…)
  • เวลาของคุณมีค่าเท่าไหร่? สอนวิเคราะห์ด้วย Data Table เบื้องต้น

    เวลาของคุณมีค่าเท่าไหร่? สอนวิเคราะห์ด้วย Data Table เบื้องต้น

    “ผมเสียดายแทนจริงๆ ที่หลายคนทำงานหนักโดยไม่จำเป็น… ใช้เวลาในการทำงานเยอะโดยไม่จำเป็น รู้หรือไม่ว่าหากคุณฝึก Excel มากขึ้นอีกนิดแล้วล่ะก็ คุณจะเก่งและสามารถทำงานได้เร็วขึ้นมาก!”

    นี่คือประโยคเริ่มต้นในคำนำของ หนังสือ Excel Level Up! ที่ผมเขียนไว้ ซึ่งเป็นเรื่องที่ผมเน้นมากมาโดยตลอด และมันคือวัตถุประสงค์ของการทำ inwexcel ออกมาเลยล่ะ!

    แล้วทำไมผมต้องเน้นนักเน้นหนาเรื่องการลดเวลาในการทำงาน?

    ก็เพราะเวลาเป็นหนึ่งในทรัพยากรที่ค่าที่สุดนั่นเอง! แถมเวลาคุณจะยิ่งมีค่าเยอะมากขึ้นเรื่อยๆ ตามกาลเวลาด้วย…
    ยิ่งคุณรวยมากขึ้น เวลาก็จะยิ่งมีค่ามากขึ้นไปเรื่อยๆ จนถึงขนาดมี Joke ที่บอกว่า ถ้า บิล เกตส์ ทำเงินตกพื้น $1,000 เค้าก็ไม่จำเป็นต้องก้มเก็บ เพราะว่ารายได้เค้ามากถึงวินาทีละ $250 นั่นเอง (แป๊ปเดียวก็ได้คืนแล้ว!)

    ดังนั้นเวลาของ Bill Gates จึงมีคุณค่าอยู่ที่ $250 ต่อวินาทีนั่นเอง…

    คุณค่าจริงๆ ของคนเรานั้นมากกว่าค่าจ้างนะ

    สมมติว่ามีคนจ้างคุณทำงานด้วยเงิน ชม.ละ 100 บาท แปลว่าคุณค่าที่คุณสร้างให้นายจ้างได้จริง จะต้องมากกว่า 100 แน่นอน เพราะถ้าจ้างแล้วไม่กำไร เค้าจะจ้างทำไม? อีกไม่นานคงต้องเลิกจ้างแล้วล่ะ… ดังนั้นเวลา 1 ชม. ของคุณย่อมมีคุณค่ามากกว่า 100 บาทที่เป็นค่าจ้างของคุณจริงมั้ยครับ?

    ผมจึงขอเรียกค่าจ้างของคุณ ว่าเป็นคุณค่าขั้นต่ำของคุณแล้วกัน

    แล้วเวลาของคุณมีค่าขั้นต่ำเท่าไหร่ล่ะ?

    คุณค่าเวลาของพวกเรา โดยเฉพาะมนุษย์เงินเดือน ก็จะคิดจากค้าจ้างซึ่งเป็นรายได้ต่อเดือน
    สมมติว่า ผมเงินเดือนประมาณ 22,000 บาท จะคิดเป็นรายได้ต่อชั่วโมงดังนี้

    สมมติทำงาน 22 วัน/เดือน x 8 ชม./วัน = 22,000/22/8 = 125 บาท / ชม. หรือ คิดใน Excel ได้ดังนี้

    your-time-value-1fix2

    ซึ่งจะเห็นว่า ไม่มีอะไรซับซ้อน การคำนวณแบบนี้ใครๆ ก็ทำได้จริงมั้ยครับ?… แต่ถ้าคุณอยากจะทำตารางสรุปผลให้เห็น รายได้ต่อชั่วโมง เมื่อระดับเงินเดือนเปลี่ยนไปล่ะ?

    ถ้าการคำนวณไม่ซับซ้อนมาก เราอาจเขียนสูตรให้อยู่บรรทัดเดียวกัน แล้วลาก Copy สูตรลงมาได้แบบนี้

    your-time-value-2

    ซึ่งยิ่งถ้าข้อมูลมีหลาย Step ก็จะเปลืองที่ค่อนข้างมาก

    ดังนั้น วันนี้ผมมีวิธีทำอีกแบบนึงมาเสนอ นั่นก็คือ ใช้เครื่องมือ Data Table มาช่วยนั่นเอง

    (more…)

  • VLOOKUP หลายเงื่อนไข ง่ายนิดเดียว!

    VLOOKUP หลายเงื่อนไข ง่ายนิดเดียว!

    มีหลายคนถามผมมาบ่อยมาก ว่าถ้าเราอยากจะ VLOOKUP หลายเงื่อนไข (Lookup_Value มี 2 ช่องขึ้นไป) ต้องทำยังไงดี? ตัวผมเองก็ดันไม่ได้เขียนตัวอย่างนี้ไว้ในหนังสือซะด้วยสิ ก็เลยขอมาเขียนในนี้ให้อ่านกันฟรีๆ เลยแล้วกัน!

    *สำหรับคนที่อยากรู้วิธี VLOOKUP คำเดียว แต่ได้ผลลัพธ์กลับมาหลายค่า ให้ดูตาม link นี้แทนครับ

    VLOOKUP หลายเงื่อนไขหรือมี Lookup_value หลายตัวได้ด้วยเหรอ?

    ผมจะบอกว่า ไอ้ lookup_value ของ VLOOKUP เนี่ย มันมีได้แค่ตัวเดียวแหละครับ
    ก็มันมี Argument เดียวไงจำได้มั้ย?
    มันเขียนว่า =VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

    เห็นมั้ยครับว่ามีแค่ตัวเดียว แล้วเราจะใส่เข้าไปหลายเงื่อนไขได้ยังไง?

    คำตอบก็คือ…มันมี Trick ครับ ถ้าคิดให้ดีๆ

    เราสามารถเอาค่าที่เราต้องการจะ Lookup ที่มีหลายๆ เงื่อนไขจับมัดเป็น Lookup_Value ก้อนเดียวก็ได้นี่นา

    ถ้ารู้แบบนี้แล้ว จะกลัวอะไรครับ? มาลองดูตัวอย่างจริงกันเลยดีกว่า!

    สมมติเรามีข้อมูลแบบนี้ครับ

    vlookup-multiple-1fix

    เราต้องการเอาข้อมูลอ้างอิงข้างบน มาสรุปเป็นตารางข้างล่าง  ซึ่งจะเห็นว่าเราไม่สามารถใช้ VLOOKUP ค่า A B C ตรงๆ ได้ เพราะการ Lookup แบบ Exact Match ถ้าเจอค่าซ้ำกันมันจะได้ค่าแรกสุดกลับมาเสมอ

    วิธีแก้ก็คือ ต้องทำให้ค่าที่ Lookup ไม่ซ้ำกันนั่นเอง โดยการจับค่ามามัดรวมกันเป็นค่าเดียว เช่น เอา สินค้า กับ คนขายมาเชื่อมกัน

    ซึ่งวิธีเชื่อมเราก็ใช้เครื่องหมาย & มาเชื่อมง่ายๆ นี่แหละครับ แต่ที่สำคัญต้องเชื่อมแล้วไม่ซ้ำกับบรรทัดอื่นนะครับ

    vlookup-multiple-2

    ข้อควรระวัง 1

    แต่วิธีนี้อาจมีความเสี่ยงตรงที่ ถ้าค่าที่เราเอามาเชื่อมกันแล้วมันอาจไปซ้ำกับค่าอื่นได้ เช่น

    • เชื่อม AA กับ ข ==> AAข
    • เชื่อม A กับ Aข ==> AAข
      ซึ่งออกมาเหมือนกันทั้งที่ตั้งต้นคนละอันเลย!

    ดังนั้นผมแนะนำให้ตอนเชื่อมตั่นด้วยสัญลักษณ์แปลกๆ เช่น | เสมอ ซึ่งป้องกันค่าไม่ให้ซ้ำกันโดยไม่ตั้งใจได้ เช่น

    • เชื่อม AA กับ ข ==> AA|ข
    • เชื่อม A กับ Aข ==> A|Aข
      ออกมาเป็นคนละอันกัน ซึ่งถูกต้อง!

    ดังนั้นคอลัมน์พิเศษของผมจึงออกมาเป็นแบบนี้

    vlookup-multiple-3

    ทีนี้เราก็สามารถ VLookup ได้แล้วล่ะครับ

    =VLOOKUP($C13&”|”&D$12,$B$2:$E$9,4,0)

    ซึ่ง $C13&”|”&D$12 ก็คือ สินค้า|คนขาย นั่นเอง

    VLOOKUP หลายเงื่อนไข

    ตัวที่ออกมาเป็น #N/A แสดงว่าไม่อยู่ในตารางข้างบน ซึ่งเราก็สามารถแปลงให้เป็น 0 ได้ โดยการใช้ IFERROR ซ้อนไปให้แสดง 0 แทน เป็นต้น

    vlookup-multiple-5

    แค่นี้ก็สามารถได้ผลลัพธ์ตามที่ต้องการแล้วครับ

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

    เทคนิคเสริมและข้อควรระวัง! กรณีข้อมูลที่สรุปเป็นตัวเลข

    ขอบคุณ คุณ Songsak YO Kitthawonarcheep มากครับ ที่เข้ามาเตือนในเพจ Facebook เกี่ยวกับตัวอย่างข้างบน ซึ่งอาจผิดได้ในบางกรณี

    กรณีที่ข้อมูลที่ต้องการนำมาสรุปผลเป็นข้อมูลตัวเลข หรือบางทีข้อมูลดิบอาจมี Lookup_Value หลายบรรทัดซ้ำกัน เช่น มีสินค้า A กับ คนขาย นาย ก คู่กันหลายบรรทัด (ทำให้ค่า Lookup_Value ไม่ใช่ค่า unique อย่างแท้จริง) การใช้ VLOOKUP ทำให้ได้มาแต่ค่าแรก ซึ่งจะทำให้ผลสรุปผิดได้

    วิธีที่ดีกว่าในกรณีที่ข้อมูลเป็นตัวเลขแบบนี้ คือ การใช้พวก SUMIF หรือ SUMIFS มาช่วยแทน (คิดเหมือน Pivot Table) เช่นตามรูปนี้ครับ

    vlookup-multiple-6

    สังเกตว่าได้ค่าเท่ากับวิธี VLOOKUP ข้างบนเป๊ะเลย (ถ้าค่า Lookup_Value ซ้ำกันหลายบรรทัด วิธีนี้จะถูกต้องกว่า เพราะ VLOOKUP จะได้แต่ค่าบนสุดทำให้ผลออกมาน้อยเกินจริง) คำนวณเร็วกว่า แถมไม่ต้องมาดัก Error ด้วย เจ๋งจริงๆ ครับ

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

  • 10 ข้อคิดจากเกมออนไลน์ ใช้พัฒนาความก้าวหน้าทักษะ Excel

    10 ข้อคิดจากเกมออนไลน์ ใช้พัฒนาความก้าวหน้าทักษะ Excel

    ใครว่าเกมไร้สาระ ผมขอเถียงเลยด้วยบทความนี้ ข้อคิดจากเกมดีๆ นั้นมีมากมาย มีอะไรบ้างมาดูกันครับ!

    Life is a Game

    ผมเห็นด้วยเต็มๆ กับคำพูดนี้ โดยเฉพาะอย่างยิ่งช่วงที่ผมเริ่มฝึกฝนการใช้ Excel ใหม่ๆ ผมรู้สึกว่าผมกำลังเล่นเกม Online RPG อยู่ชัดๆ

    มันทำให้ผมนึกย้อนกลับสมัยที่ผมเรียนมหาวิทยาลัย (ประมาณปี 2001…) ช่วงนั้นเกมออนไลน์ที่ชื่อว่า Ragnarok Online กำลังดังมากๆ  และผมก็เป็นหนึ่งคนที่ติดเกมนี้เข้าอย่างจัง ซึ่งพอมาถึงในยุคปัจจุบันแล้วมองย้อนกลับไป ยิ่งเห็นชัดว่าการพัฒนาของตัวละครของเราในเกมมันเหมือนกับการพัฒนาตัวเองในชีวิตจริงมากแค่ไหน

    ซึ่งผมขอสรุปข้อคิดดีๆ ที่ได้จากการเล่นเกมมาให้ ว่าเราจะเอามาปรับใช้กับการพัฒนาทักษะของเราในชีวิตจริง รวมถึงเรื่องของการพัฒนาฝีมือ Excel ของเราได้ยังไง มีอะไรบ้าง มาดูกันเลย!

    10 ข้อคิดจากเกม

    1. ค้นหาเป้าหมายของชีวิต

    question

    Credit รูป : http://rostory.irowiki.org/letters/friends/page2/

    ในเกม Online RPG นั้นมีลักษณะเด่นอย่างหนึ่งที่ต่างจากเกมทั่วไป นั่นก็คือ มันไม่มีเป้าหมายที่ชัดเจนที่จะบอกว่าเราต้องทำอะไรถึงจะเรียกว่า “ชนะเกม” ได้ แต่ละคนต้องหาเป้าหมายของตัวเอง กำหนดชีวิตตัวเองว่าวันๆ จะทำอะไรบ้าง?

    บางคนก็คิดเป้าหมายว่าต้องจัดการ Boss ให้ได้ บางคนก็อาจตั้งเป้าว่าต้องพัฒนาตัวเองให้เก่งจนไปถึง Level 99 ให้ได้ บางคนอาจแค่อยากเจอเพื่อนดีๆ มิตรภาพดีๆ ก็พอแล้ว

    marriage_3-fix

    Credit รูป : http://www.playragnarok.com/news/updatedetail.aspx?id=144

    ในชีวิตจริงก็เช่นกัน มันไม่มีใครกำหนดให้เราชัดเจนหรอกว่า ชีวิตเราต้องทำอะไร ถึงจะเรียกว่า “สำเร็จ” มันเป็นสิ่งที่เราต้องนิยามให้ตัวเอง กำหนดชีวิตตัวเองทั้งนั้น การฝึกฝน Excel ก็เหมือนกัน สุดท้ายแล้วคุณอยากจะใช้ Excel ได้เก่งแค่ไหน ใช้ทำอะไร มีเป้าหมายอะไร มันเป็นเรื่องของแต่ละคนล้วนๆ

    แต่ที่สำคัญที่สุดคือ คุณควรจะต้องมีเป้าหมาย และเป้าหมายที่ดีควรทำให้คุณตื่นเต้นหรือมีความสุข และอยากจะก้าวไปให้ถึงเป้าหมายนั้นในทุกๆ วัน ดังนั้น ถ้ายังไม่มี อย่าลืมคิด Mission ของคุณด้วย!

    2. สายอาชีพ

    ต้องเล่าแบบนี้ครับ ในเกม RPG ส่วนใหญ่ตัวละครที่เราเลือก ท้ายที่สุดแล้วจะสามารถพัฒนาจนมีความสามารถที่แตกต่างกัน โดยจะแบ่งเป็น “สายอาชีพ” ต่างๆ ซึ่งอาจมีอาชีพขั้นพื้นฐานก่อนแล้วค่อยเติบโตไปเป็นอาชีพขั้นสูง

    Job_tree_girl

    Credit รูป : http://www.class2-juti.com/feed/3.html

    ซึ่งการใช้ Excel ก็มีลักษณะคล้ายๆ สายอาชีพเช่นกัน แต่ผมขอเรียกว่า “สายทักษะ” แทน และมันก็มีสายทักษะขั้นสูงด้วย ซึ่งผมขอแบ่งออกเป็น 4 ทักษะขั้นสูงดังนี้

    excel-class
    • Master of VBA : เน้นการแก้ปัญหาด้วยการเขียนโปรแกรมเป็นหลัก ซึ่งคนสายนี้จะทำสิ่งมหัศจรรย์ที่คนทั่วไปมักร้องว้าว! เพราะ VBA ทำได้ทุกอย่างที่คนนั่งถึกๆ ทำได้เหมือนกับเสกเวทย์มนตร์ และยังสามารถทำในสิ่งที่การเขียนสูตรทำไม่ได้อีกด้วย แต่ติดข้อจำกัดตรงที่เป็นกลุ่มทักษะที่ต้องการ Skill ต่างไปจากทักษะ Excel ดั้งเดิมมากที่สุด ทำให้เรียนรู้ยาก และในบางสถานการณ์จะถูกห้ามใช้พลัง VBA โดยสิ้นเชิงเลย (บางทีคนก็ไม่ยอมให้สร้างไฟล์ที่มี VBA)
    • Master of Array Formula : สายที่เน้นการใช้สูตรคำนวณ เก่งการใช้สูตรในการแก้ปัญหามาก สามารถใช้ Array Formula ได้อย่างคล่องแคล่ว คนกลุ่มนี้สามารถรับภารกิจลุยไปได้เกือบทุกพื้นที่ เพราะไม่มีความน่ากลัวแอบแฝงเหมือนกลุ่มนักเขียนโปรแกรม (ไม่ติดข้อจำกัดเรื่องที่ว่าห้ามใช้ VBA)
    • Master of Power Tool : สายนี้เน้นการวิเคราะห์ข้อมูลเป็นหลัก ชอบลุยกับข้อมูลจำนวนมาก  มีความเชี่ยวชาญด้านการใช้พวก Power Query, Power Pivot, DAX Formula/DAX Pattern ซึ่งเป็นสุดยอดเครื่องมือในการวิเคราะห์ข้อมูลที่ Excel มีมาให้ด้วย รวมถึง Power BI ที่รวมทุกอย่างที่กล่าวมา ซึ่งแนวโน้มความต้องการในยุคนี้น่าจะมาแรงมากจากความต้องการเรื่องของ Big Data
    • Master of Visualization : สายนี้เน้นการสร้างแผนภูมิ กราฟ หรืออะไรก็ได้ที่ทำให้ข้อมูลที่เดิมดูเข้าใจยาก กลับดูง่ายขึ้น ซึ่งนอกจากทักษะด้าน Excel โดยรวมที่ดีแล้ว คนกลุ่มนี้จะต้องมีทักษะด้านการนำเสนอที่ดีด้วย ซึ่งยิ่งข้อมูลเยอะ ยิ่งต้องอาศัยการย่อยเพื่อนำเสนอที่ดี ดังนั้น
    • Super Novice : เน้นใช้ความรู้พื้นฐานของ Excel ทำงานเพียงอย่างเดียว แต่ใช้อย่างลึกซึ้ง พยายามขุดความสามารถที่มีของ Excel ดั้งเดิมออกมาอย่างเต็มที่ คนที่มาสายนี้มักมีความเฉลียวค่อนข้างสูง และรู้จักการพลิกแพลงเพื่อหาคำตอบเป็นอย่างดี เช่น ไม่จำเป็นต้องหาคำตอบด้วยวิธีตรงๆ ซึ่งอาจต้องใช้ VBA หรือ Array Formula แต่คนสายนี้อาจแค่สร้างคอลัมน์ช่วย (Helper Column) สุดท้ายก็ทำงานได้เหมือนกัน
    • สายอื่นๆ :  คุณคิดว่ามีอะไรบ้างช่วย Comment บอกทีครับ ^^

    หากใครสามารถวางแผนได้ตั้งแต่เนิ่นๆ ค้นหาตัวเองเจอว่าสุดท้ายแล้วตัวเองจะเลือกสายอาชีพอะไร จะได้เปรียบคนที่โลเลเปลี่ยนไปเปลี่ยนมามาก เพราะคุณจะไม่เสียเวลาไปกับทักษะที่สุดท้ายไม่ได้ส่งเสริมสายอาชีพคุณ อย่างไรก็ตาม ถ้ายังหาตัวเองไม่เจอ คุณก็อย่าคิดมาก คุณแค่ยังทำโน่นทำนี่ไม่มากพอ ยังมีประสบการณ์ไม่มากพอ ก็เลยยังไม่รู้จักตัวเองเท่านั้นเอง

    อย่างไรก็ตาม เรื่องของ Demand/Supply ก็เป็นอีกหนึ่งปัจจัยที่ต้องคำนึงถึง เพราะหากสุดท้ายในโลกที่คุณอยู่มีสายอาชีพ/สายทักษะที่คุณเลือกเต็มไปหมดเลย Supply ก็จะเยอะเกินความต้องการ บางทีคุณไปเลือกเป็นสายอาชีพที่ไม่ค่อยมีคนเลือก อาจจะเป็นที่ต้องการมากกว่าก็ได้

    แต่คุณไม่จำเป็นต้องเก่ง Excel ไปพร้อมกันหมดทุกสายทักษะ ผมเชียร์ให้คุณเก่งทีละด้านไปเลยดีกว่า เอาให้สุด!! เพื่อให้เป็น Expert ไปเลย ถ้าคิดว่าเรียนรู้สุดแล้ว ค่อยลองหันมาเรียนรู้สายอื่นเพิ่มเติมทีหลังก็ได้

    3. Skill Tree

    การจะมุ่งไปสู่สายอาชีพต่างๆ ได้จะมีสิ่งที่เรียกว่า Skill Tree ซึ่งเป็นเหมือนแผนที่ คอยบอกว่าหากคุณต้องการจะพัฒนาทักษะเจ๋งๆ ในปลายทางแล้ว คุณจะต้องผ่านทักษะอะไรก่อนบ้าง 

    acolyte

    Credit รูป : http://scottandmona.com/photographyyku/.c/9/1/Ro%20Skill%20Tree.html 

    ซึ่งประเด็นนี้เป็นจุดที่ผมคิดว่าตรงกับใน Excel สุดๆ จนผมต้องแอบเอาไปลงในหนังสือนิดหน่อยดังรูปข้างล่างนี้

    skill-tree-comparison3

    แต่ในความเป็นจริงแล้วการจัดทักษะมันมองลึกลงไปกว่านี้ได้อีกเยอะ เช่น การใช้ IF อาจต้องแบ่งเป็นหลาย Level ตั้งแต่ การเข้าใจ Logic TRUE/FALSE, การเขียน IF ขั้นเดียว, การผสม TRUE/FALSE หลายๆตัวเข้าด้วยกัน, การเขียน IF ซ้อน IF เป็นต้น

    ซึ่งทุกฟังก์ชั่น ทุก Skill สามารถลงลึกไปได้หลาย Level เช่นเดียวกัน โดยเฉพาะเวลาขึ้นสายทักษะขั้นสุดยอดอย่างพวก VBA, Array Formula, PowerPivot ยังมีเรื่องที่ต้องเรียนรู้อีกเป็นพวง (เหมือนกับการขึ้น Job ใหม่ในเกมนั่นแหละครับ)

    4. เก็บประสบการณ์

    การจะไปถึงเป้าหมายในเกมนั้น คุณจะต้องมีความสามารถและเก่งพอที่จะผจญภัยไปยังดินแดนแสนอันตรายได้ แน่นอนว่าตอนเข้าเล่นเกมใหม่ๆ คุณเป็นเพียงมือใหม่ (Novice) ที่ค่อนข้างไร้ความสามารถ ทำอะไรก็ไม่เป็น (แต่ก็มักมีคนเก่งๆ มาช่วยนะ)

    คุณจะเก่งขึ้นได้โดยการสู้กับศัตรูเพื่อเก็บค่าประสบการณ์ (แท่งสีฟ้าๆ 2 อันล่างในรูป) ซึ่งถ้าเก็บได้มากพอก็จะเกิดปรากฏการณ์ที่เรียกว่า Level up! ขึ้น แล้วคุณก็จะเก่งกว่าเดิมพอสมควรเลยล่ะ!

    levelup

    Credit รูป : http://rostory.irowiki.org/lockeypoo/friends/

    ในการฝึก Excel ก็เช่นกัน มันไม่มีใครเก่งมาตั้งแต่แรกหรอกครับ คนเราต้องค่อยๆ ฝึกฝน เจอปัญหาง่ายๆ ก่อน พอเก็บประสบการณ์มากพอก็สามารถที่จะลองลุยปัญหาที่ยากขึ้นเรื่อยๆได้

    เมื่อคุณ Level Up! ไปสูงขึ้นแล้ว ยิ่งต้องใช้แต้มประสบการณ์มากขึ้นเรื่อยๆ ในการที่จะ Level Up! ไปขั้นถัดไปได้ ใน Excel ก็เช่นกัน หากคุณเก่งขึ้นในระดับหนึ่งแล้ว คุณต้องหาอะไรที่ท้าทายมากๆ ทำ ไม่งั้นคุณจะ Level Up! ช้ากว่าที่ควรจะเป็นมาก

    จุดต่างที่สำคัญในประเด็นนี้คือ ในเกมไม่ว่าจะฝึกอะไรก็ตาม เราก็สามารถเลือกไป Level Up ทักษะอีกอย่างที่ต้องการได้

    แต่ในชีวิตจริง อยาก Level Up! เรื่องไหนก็ต้องฝึกฝนเรื่องนั้น เช่น ใน Excel คุณอยากเก่งเรื่อง VLOOKUP คงไม่สามารถไปฝึกจากการเขียน IF บ่อยๆ ได้หรอกนะครับ!

    5. ทุกการฝึกฝนมีค่าเสมอ

    Up-Stat

    Credit รูป : http://reg.ragnarok.in.th/ro_guide/chap2/chap2_5.html

    ซึ่งแน่นอนว่าขั้นตอนการฝึกฝนเพื่อเก็บเกี่ยวประสบการณ์ช่วงแรกๆ นั้นเป็นช่วงเวลาที่อาจจะน่าเบื่อ เพราะฝึกไปตั้งนานก็อาจยังไม่รู้สึกว่าเก่งขึ้นซักที แถมยังไปอวดคนอื่นไม่ได้ด้วย เพราะฝีมือยังอ่อนเกินไป

    แต่ผมอยากให้คิดไว้เสมอว่า “ทุกการฝึกฝนมีค่าเสมอ” แม้ปัญหาที่คุณกำลังแก้อยู่ จะไม่ได้ทำให้คุณ Level Up! ทันที แต่ผมมั่นใจว่าคุณต้องได้รับค่าประสบการณ์ไปสะสมเรียบร้อยแล้วแน่นอน ซึ่งถ้าสะสมมากพอ การ Level Up! จะต้องเกิดขึ้นอย่างแน่นอน

    ดังนั้นให้คุณจินตนาการเลยว่า ทุกครั้งที่คุณฝึกฝนตัวเอง แต้มตัวเลขประสบการณ์บนหัวของคุณมันจะค่อยๆ เด้งเพิ่มขึ้นอย่างแน่นอน !! รอวันที่จะ Level Up! ได้เลย

    6. เพื่อนและมิตรภาพ

    ไม่มีอะไรแย่ไปกว่าการเดินทางคนเดียวเพียงลำพัง เพราะมันทั้งเหนื่อยและน่าเบื่อ… แม้บางคนจะชอบลุยเดี่ยว ทำงานคนเดียวได้ แต่ผมเชื่อว่ามันทำได้ก็แค่ในฉากที่มันไม่โหดร้ายเกินไปเท่านั้นแหละ หากคุณต้องบุกลงไปใน Dungeon แสนโหดร้ายเพียงคนเดียว โอกาสรอดกลับมาก็ยาก

    และบางทีคุณอาจต้องตัดสินใจเลือกพัฒนาทักษะแบบเป็ดๆ เพื่อเอาชีวิตรอดด้วยตัวคนเดียวได้ ทำให้ไม่มีโอกาสพัฒนาไปสุดซักด้าน ซึ่งเป็นเรื่องที่น่าเสียดายมาก

    CPlvwJgUcAA5Hv5

    credit รูป : https://twitter.com/hashtag/ชุบทีมีใบ

    ในทางกลับกัน หากคุณมีเพื่อนร่วมเดินทาง ทั้งทั้งสบาย และทั้งสนุก (ในเกมเรียกกลุ่มเพื่อนว่า Party ซึ่งผมมองว่ามันทั้งหมายถึงกลุ่มพรรคพวก และปาร์ตี้มันก็ควรจะสนุกจริงๆ นั่นแหละ) แถมคุณยังใช้หลักการ “แบ่งงานกันทำ” ได้ คุณตกลงกันได้ว่า ใครจะเป็นสายลุย ใครจะเป็นสาย Support จะลุยแบบไหน Support แนวไหน เอาให้มันเจ๋งสุดๆ ไปเลยซักด้านหนึ่ง ให้จุดแข็งของคนหนึ่งไปปิดจุดอ่อนอีกคนหนึ่งได้ เท่านี้กลุ่มของคุณก็จะเก่งขึ้นมาก

    party-wolf

    Credit รูป : http://www.robrowser.com/blog/party-system-just-landed

    ใน Excel ก็เช่นกัน หากคุณใช้สูตรหรือฟังก์ชั่นหลายอย่างผสมพลังรวมกัน มันจะยิ่งทวีอานุภาพ และใช้งานได้หลากหลายกว่าการใช้สูตรเดี่ยวๆ เป็นอย่างมาก

    เช่น ใช้พวก AND คู่กับ IF หรือ สูตร INDEX คู่กับ MATCH ก็เข้าขากันได้ดีทีเดียว

    mix-function

    7. การเตรียมตัวในแต่ละศึก

    ในเกมก่อนที่เราจะออกไปลุยเก็บประสบการณ์ในฉากต่างๆ หรือใน Dungeon ก็ตาม เราจะต้องรู้ก่อนว่าศัตรูหรือปัญหาที่เราจะเจอนั้นมีลักษณะเป็นยังไง แพ้ทางอะไร เรามีอะไรที่จะไปสู้ด้วยได้ และควรจะสู้ด้วยวิธีไหนถึงจะมีประสิทธิภาพ เข้ากับคำคมที่ว่า “รู้เขา รู้เรา” นั่นแหละครับ ซึ่งนอกจากจะรู้แล้ว ก็ต้องเตรียมอาวุธและอุปกรณ์ต่างๆ ให้พร้อมด้วย เช่น เตรียม Shortcut คำสั่ง/item ที่ใช้บ่อยๆ ไว้เลย เวลาใช้ก็กดปุ่มง่ายๆ

    prepare2

    Credit รูป : http://www.roguides.co.in/2010/08/pvp-champion-build-guide-using.html

    qat

    ซึ่งใน Excel เราก็สามารถเตรียมเรื่องแบบนี้ได้เหมือนกันครับ คุณสามารถศึกษาก่อนได้ว่า เจ้านายหรือลูกค้าคุณชอบงานแบบไหน คุณจะได้ทำงานได้ถูกใจ เพราะแต่ละคนก็ชอบไม่เหมือนกัน

    รวมถึงคุณจะต้องทำงานแบบไหนบ่อยๆ คุณก็ควรจะเตรียม Quick Access Toolbar ซึ่งจะกดเรียกใช้ง่ายมาก ทั้งใช้ Mouse หรือ Keyboard Alt+1,2,3,4… ก็ได้ หรือจะเรียนรู้ Shortcut อื่นๆ ให้พร้อมกับการทำงานนั้นๆ ให้มากที่สุด เพื่อที่ว่าเมื่อเจอศัตรูหรือปัญหา จะได้กดท่าไม้ตายต่างๆ กระหน่ำโจมตีได้อย่างรวดเร็ว

    8. รางวัลที่ได้จากการจัดการศัตรู

    mvp

    Credit รูป : https://forums.warpportal.com/index.php?/topic/157495-ragnarok-player-history-archive/

    ในเกมเวลาที่เราจัดการกับศัตรูได้ สุดท้ายก็จะได้ประสบการณ์มาเพื่อให้ตัวเอง Level Up! และอาจได้ Item เจ๋งๆ ติดไม้ติดมือมาด้วย

    ถ้าเราลงมือคนเดียว เราก็ได้ผลลัพธ์นั้นคนเดียวแน่นอน แต่ถ้าเราไปลุยกับเพื่อนเป็น Party คนที่ลงมือจัดการกับปัญหามากที่สุด จะได้ค่าประสบการณ์มากที่สุดและได้รับ Item ชิ้นพิเศษไป

    ใน Excel ก็เหมือนกันครับ หากคุณมีโปรเจคบางอย่างที่ต้องทำ ไม่แปลกและไม่ผิดหากคุณจะขอความช่วยเหลือจากคนอื่น แต่ถ้าหากคุณขอให้คนอื่นช่วยโดยที่คุณไม่ทำอะไรเลย สุดท้ายแม้โปรเจคนั้นจะจบลงได้ แต่คุณก็แทบจะไม่ได้รับอะไรจากมันเลยแม้แต่ประสบการณ์ของการทำงาน และสุดท้ายความจริงก็เป็นสิ่งไม่ตายครับ ผู้ใหญ่หรือลูกค้าต้องรู้อยู่แล้วว่าใครเป็นคนหลักในการทำผลงานชิ้นนั้นๆ แล้วรางวัลพิเศษก็ย่อมตกอยู่กับผู้ที่ลงมือทำอย่างแน่นอน

    9. จะใช้ของดี ตัวเราเองก็ต้องเจ๋งด้วย

    อุปกรณ์ต่างๆ ในเกมนั้นมีความสำคัญที่จะช่วยทำให้ตัวละครที่เราเล่นเก่งขึ้นมาก เช่น ถ้าปกติตัวละครมีพลังโจมตี 87 แต่พอใส่ Item ต่างๆ ลงไป อาจช่วยให้พลังโจมตีเยอะขึ้นได้ เป็นต้น

    Build-Champion-MVP-Ragnarok

    credit รูป : http://ragnarokgameplay.blogspot.com/2014/07/build-champion-full-mvp-ragnarok.html

    แต่ทว่าส่วนใหญ่แล้วมันก็จะมีระดับความเก่งของตัวละครกำหนดอยู่ว่า ถ้าจะใช้อุปกรณ์ช่วยเหลือเจ๋งๆ ได้ จะต้องมีความเก่งระดับไหน เช่น คุณจะต้องอยู่ใน Level 40 ขึ้นไป เป็นต้น

    ในชีวิตจริงก็เหมือนกันครับ หนังสือบางเล่ม สัมมนาบางคอร์ส อาจทำให้คุณบรรลุ Excel ขั้นสูงสุดได้ แต่ถ้าคุณมีความรู้พื้นฐานไม่พอ คุณก็ไม่สามารถใช้ประโยชน์จาก Item ชิ้นนั้นได้อย่างเต็มที่ ดังนั้นเราต้องอย่าลืมพัฒนาทักษะของตัวเราให้พร้อมและเลือก item ให้เหมาะกับระดับของตัวเองด้วย

    10. วิธีการเดินทางสำคัญไม่แพ้เป้าหมาย

    เมื่อคุณผจญภัยในโลกแห่งเกม Online RPG ไปซักพัก หลายคนจะเริ่มรู้สึกว่าตัวเองพัฒนาช้าเกินไป เลยเริ่มจะทำอะไรที่ผิดกฎเกณฑ์ของเกมที่ตั้งไว้ ถ้าโชคดียังไม่มีใครจับได้ก็ดีไป แต่ถ้าโชคร้ายคุณอาจจะถูกแบน อดเล่นเกมนั้นไปอีกตลอดกาล

    ในชีวิตจริงของคนเรา มีสิ่งยั่วยุมากมายให้ทำในวิธีที่ไม่เหมาะสม ผมอยากจะให้ทุกคนใจแข็งไว้ อย่าไปหลงในความโลภที่มาหลอกล่อคุณ ให้คุณตั้งมั่นในความตั้งใจและในเป้าหมายของตัวเองไว้ แล้วลงมือทำมันด้วยวิธีที่ถูกต้องตามกฎเกณฑ์ของสังคม และถูกต้องตามหลักศีลธรรมเท่านั้น

    1016401_809976285685816_475014996_n

    Credit รูป : http://ratemyserver.net/index.php?page=detailedlistserver&serid=16985&url_sname=Kazue%20RO

    การทำแบบนี้ไม่เพียงจะทำให้คุณใช้ชีวิตได้อย่างสบายใจ มันยังทำให้คุณภูมิใจ สามารถที่จะเล่าให้คนอื่นฟังได้อย่างเต็มปาก ว่าสุดท้ายแล้วคุณเปลี่ยนจาก Novice จนกลายมาเป็นคนที่ประสบความสำเร็จได้ยังไง

    ซึ่งหากคุณโกงมา ความภูมิใจเหล่านี้ก็จะหายไปตลอดกาล ซึ่งเป็นสิ่งที่น่าเสียดายจริงๆ ครับ

    หากคุณมีข้อคิดดีๆ ที่ประทับใจจากการเล่นเกม อย่าลืมเอามาแชร์กันบ้างนะครับ อยากฟังจริงๆ ^^

  • สารพัดวิธีนับข้อมูลแบบไม่ซ้ำกันในคอลัมน์

    สารพัดวิธีนับข้อมูลแบบไม่ซ้ำกันในคอลัมน์

    อย่างที่ผมเคยบอกไปแล้วว่าการแก้ปัญหาหนึ่งๆ ใน Excel นั้นสามารถทำได้หลายวิธีมาก ซึ่งปัญหาการนับข้อมูลแบบไม่ซ้ำกันในคอลัมน์ก็เช่นกัน จะมีวิธีไหนบ้างมาดูกันครับ!!

    สถานการณ์ของเราคือ…

    สมมติว่าเรามีข้อมูลอยู่ตารางหนึ่ง เป็นตารางการขายของในช่วงเดือนที่ผ่านมา…
    ลักษณะข้อมูลคือ 1 บรรทัดเป็น 1 order ซึ่งแต่ละ order ก็จะมี Sales นักขายกำกับอยู่ว่าชื่ออะไร

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

    สมมติข้อมูลเป็นแบบนี้ (มีแค่ 10 บรรทัดพอ) => distinct-count

    distinct-data

    ถ้าเราเจอปัญหาแบบนี้ จะแก้ไขได้ยังไงมาดูกันครับ!

    (more…)

  • วันที่ 23 ตค. นี้ เชิญ Level Up! กันได้ทั่วประเทศ !

    วันที่ 23 ตค. นี้ เชิญ Level Up! กันได้ทั่วประเทศ !

    – หนังสือ Excel Level Up! วางแผงที่ร้านหนังสือชั้นนำทั่วประเทศ
    – ที่งานหนังสือ เวลา 17:00-18:00 ผมไปแจกลายเซ็นที่บูธร้านนายอินทร์ Q26 โซน C ชั้น 2
    ใครสะดวกก็เชิญมารับพลัง Level Up! ได้เลยนะครับ!
    – ใครไม่สะดวกไป ก็สั่ง Online ได้ ครับ

     

  • วิธีการสร้าง Filter มากกว่า 1 ตารางใน 1 Sheet

    วิธีการสร้าง Filter มากกว่า 1 ตารางใน 1 Sheet

    table-filter-0

    ปกติแล้วถ้าเรา [Home]–>Editting –> Sort & Filter –> Filter
    หรือว่าจะกดจาก [Data]–> Sort & Filter –> Filter ก็ตาม
    เราจะสามารถทำได้ทีละตารางต่อ 1 sheet เท่านั้นครับ (พอเลือกอีกอัน อันแรกก็จะหายไป)

    คำถาม คือ เราสามารถทำ Filter มากกว่า 1 ตารางต่อ 1 Sheet ได้หรือไม่?

    คำตอบ คือ แม้เราใช้ Filter ตรงๆ ไม่ได้ แต่เราใช้เครื่องมืออื่นมาช่วยได้ นั่นก็คือ การใช้เครื่องมือ Table นั่นเองครับ

    table-filter

    วิธีทำก็ง่านแสนง่ายครับ นั้นก็คือ ให้คลิ๊กเลือกช่องที่อยู่ในตารางที่เราต้องการจะ Filter แล้วกด Ctrl+T เพื่อสร้าง Table แต่อย่าลืมเช็คความครอบคลุมให้ดีก่อนกด Ok ล่ะ โดยคุณสามารถทำวิธีนี้กี่ตารางก็ได้ตามใจชอบครับ

    ที่นี้คุณก็จะสามารถสร้างตารางที่มีหัว Filter ได้มากกว่า 1 อันต่อ 1 sheet แล้วล่ะครับ!!

  • Intro to Excel Slide

    เป็น Slide ที่ใช้สอนเพื่อปูพื้นฐาน Excel ให้กับนักศึกษาจบใหม่ และผู้ที่สนใจ ใน Event CareerVisa Boot Camp – Excel Training ที่จัดโดย CareerVisa Thailand ครับ เอามา Post เผื่อแฟนเพจคนอื่นๆด้วย

  • Fuzzy Lookup สะกดผิดก็ Lookup หาเจอ!

    Fuzzy Lookup สะกดผิดก็ Lookup หาเจอ!

    คุณเคยมีปัญหาต้องใช้ VLOOKUP ในการ Map ข้อมูล แต่คำค้นหา (lookup_value) สะกดผิด เลยไม่ตรงกับค่าในตารางอ้างอิงมั๊ยครับ?

    ใน VLOOKUP นั้น ถึงแม้จะมีโหมด Approximate Match ก็ตาม แต่ความสามารถของมันไม่สามารถหาคำใกล้เคียงได้เหมือนชื่อมันหรอกนะครับ การจะ Lookup คำแบบสะกดผิดได้ต้องใช้วิธีอื่น เช่น เขียน VBA ซึ่งค่อนข้างยากมาก

    แต่ผมมีข่าวดีมาบอก คือ เราสามารถใช้ Add-in ที่ชื่อ Fuzzy Lookup ของ Microsoft มาแก้ปัญหานี้ได้ครับ ฟรีด้วย!

    • ก่อนอื่น คุณต้องไปดาวน์โหลด add-in ดังกล่าวก่อนที่ https://www.microsoft.com/en-us/download/details.aspx?id=15011
    • จากนั้นลงโปรแกรม แล้วปิด-เปิด Excel ใหม่
    • จากนั้นพอเข้า Excel แล้วมันจะมี Ribbon ขึ้นมาใหม่ 1 อัน ชื่อว่า “Fuzzy Lookup” ดังภาพ

    Fuzzy Lookup สะกดผิดก็ Lookup หาเจอ! 1

    วิธีการใช้มีดังนี้

    fuzzy-2

    • ให้แปลงตารางทั้งฝั่งตารางอ้างอิง และฝั่งคำค้นหาให้เป็น Table ซะก่อน โดยเลือกข้อมูลช่องใดช่องหนึ่งแล้วกด Ctrl+T เช่น คลิ๊ก A1 กด Ctrl+T จากนั้นคลิ๊ก D1 กด Ctrl+T

    fuzzy-3

    fuzzy-4

    จากนั้น ให้เลือก Cell ที่ต้องการแสดงผลลัพธ์ แล้วไปเลือก Fuzzy Lookup ใน Ribbon

    • เลือกตารางที่จะให้เชื่อมกัน (ถ้าตั้งชื่อไว้ก่อนตอนสร้าง Table จะช่วยให้ไม่งง)
    • จากนั้นเลือกคอลัมน์ที่จะให้เชื่อมกัน
    • จากนั้นกดปุ่มตรงกลาง

    fuzzy-5

    จากนั้นเลือกคอลัมน์ที่ต้องการให้แสดงผล เลื่อนปรับความแม่น (ความเหมือนของคำ)ในการค้นหา ยิ่งมากยิ่งแม่น แต่บางช่องอาจไม่แสดงผลลัพธ์ออกมา หากมีความแม่นต่ำกว่าที่กำหนด

    fuzzy-6

    จากนั้นกด Go มันจะแสดงผลลัพธ์ในที่ที่ Active Cell อยู่ ถ้าเลือก Similarity ก็จะมีคะแนนความแม่นออกมาด้วย
    หากผลออกมาน้อยเกินไป ลองปรับระดับความแม่นให้ลดลงได้ครับ

    fuzzy-7

    นี่คือวิธีใช้คร่าวๆ ของเครื่องมือนี้ครับ ซึ่งข้อดีคือ Lookup ข้อมูลที่สะกดผิดได้ด้วย แต่ข้อเสียคือ ต้องมากดเครื่องมือทุกครั้ง (เพราะไม่ใช่สูตร) ซึ่งผมว่าอย่างน้อยมันดีกว่าเรามานั่งดูด้วยตาแล้วแก้ข้อมูลให้ถูกต้องเองก่อน Map ข้อมูลด้วย VLOOKUP แน่นอนครับ

  • การสร้างกราฟ

    การสร้างกราฟ

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

    ดังนั้นกราฟหรือแผนภูมิจึงเป็นสิ่งที่จำเป็นต่อการนำเสนองานเป็นอย่างยิ่ง เพราะช่วยประหยัดเวลาในการอธิบาย และทำให้การนำเสนอน่าสนใจ และเป็นที่จดจำมากขึ้น นอกจากนี้จากการวิจัย และประสบการณ์ส่วนตัวบอกว่า คนเราจำภาพได้ดีกว่าตัวอักษรแน่นอน จริงมั๊ยครับ?

    Step ของการทำกราฟ มีดังนี้

    1. Think :คิดวัตถุประสงค์ของการนำเสนอกราฟ และผลลัพธ์สุดท้ายที่อยากได้
    2. Prepare :เตรียมข้อมูล (เช่น สรุปข้อมูลจาก Data ดิบ)
    3. Create :สร้างกราฟ
    4. Customize: ปรับแต่งกราฟ

    เรามาเริ่มที่ Step แรกกันเลยครับ

    1. Think : คิดวัตถุประสงค์ของกราฟ และผลลัพธ์สุดท้ายที่อยากได้

    วัตถุประสงค์ของการทำกราฟนั้นมีอยู่ค่อนข้างหลากหลาย ส่วนตัวของผมเองมองว่าที่สำคัญคือคุณต้องรู้ว่าอยากจะสื่อสารอะไร และคุณควรวาดภาพในใจ (หรือในกระดาษ) ก่อนว่าสุดท้ายแล้วกราฟควรจะออกมาหน้าตาแบบไหน

    ดังนั้นก่อนอื่น ผมจะขอแนะนำให้รู้จักประเภทกราฟมาตรฐานใน Excel กันก่อนครับว่ามีอะไรบ้าง และแต่ละอัน เหมาะกับการทำงานแบบไหน

    Column

    column

    การเปรียบเทียบข้อมูล

    ไม่ว่าจะเป็น เทียบระหว่างแต่ละกลุ่ม, เทียบกับมาตรฐาน หรือ เป้าหมายบางอย่าง

    มองเห็นง่ายกว่า Pie Chart  เยอะ เพราะสายตาคนเรามองเปรียบเทียบ แนวนอน หรือ แนวตั้ง ได้ดีกว่า เทียบองศามุมว่าแคบหรือกว้าง แต่แย่กว่า Bar Chart นิดหน่อย

    บอกการแจกแจงความถี่

    เพื่อให้เห็นการกระจายตัวของข้อมูล อันนี้เหมาะกับพวก Column Chart โดยอาจแบ่งช่วงให้ถี่ๆ และจัดวางให้แต่ละแท่งชิดกัน เพื่อให้กราฟออกมาคล้ายกับกราฟ Histogram มากที่สุด

    บอกสัดส่วนขององค์ประกอบ

    เพื่อบอกองค์ประกอบว่าแต่ละส่วนมีมากน้อยแค่ไหน (ใช้กับพวก Stacked Column Chart)

    Bar

    bar

    การเปรียบเทียบข้อมูล

    อันนี้อาจมองง่ายกว่า Column Chart เล็กน้อย

    เอาไว้หลอกตา ทำ Box plot / Gantt Chart ได้

    เช่นทำให้ช่องบางช่องมองไม่เห็น (ปรับ Fill Color)

    Line

    line

    บอกแนวโน้ม

    คล้ายกับ Scatter Plot มาก แต่ต่างกันตรงที่

    Line Chart ทุก Series จะมองแกน X ร่วมกัน และมองเป็นแค่ Text Label (เช่น เลข 1,3,10 จะมีระยะห่างในแกน X เท่ากันหมด เพราะไม่ได้ลงตามตำแหน่ง Scale จริง)

    Scatter Plot จะใช้ค่า X มา Plot ลงตามตำแหน่งแกน X ตาม Scale จริงๆ (เช่น เลข 1,3,10 จะมีระยะห่างต่างกันเพราะลงตาม Scale จริง) นอกจากนี้ยังสร้างกราฟแนวโน้ม (Trend Line) รวมถึงสมการแสดงความสัมพันธ์ได้ด้วยโดยการคลิ๊กขวา à Add Trend line

    Scatter

    scatter

    คล้ายกับ Line Chart

    การแสดงความสัมพันธ์ระหว่างตัวแปร

    เช่น การแสดงความสัมพันธ์ระหว่างตัวแปร 2 ตัว อันนี้ต้อง Scatter Plot เท่านั้น โดยเราสามารถใส่ Trend Line และสมการแสดงความสัมพันธ์ได้ด้วย

    บอกแนวโน้ม คาดการณ์อนาคต

    อันนี้เหมาะกับการใช้ Scatter Plot แล้วใส่ Trend มาก

    Pie

    pie

    บอกสัดส่วนขององค์ประกอบ

    เพื่อบอกองค์ประกอบว่าแต่ละส่วนมีมากน้อยแค่ไหน

    Area

    area

    มักเอาไว้ใช้เป็นเทคนิคในการหลอกตาเช่นกัน (จะพูดถึงในบทถัดไป)

    Others

    others

    ไม่ค่อยได้ใช้ในชีวิตจริงในสถานการณ์ทั่วไปเท่าไหร่ เอาไว้ใช้ในเรื่องเจาะจงมากๆ เช่น การวิเคราะห์หุ้น ด้วย Stock Chart หรือการ Plot ความสัมพันธ์ 3 ตัวแปรด้วย Bubble Chart

    2. Prepare : เตรียมข้อมูล

    การเตรียมข้อมูลเพื่อการทำกราฟ หลายๆครั้ง คุณอาจต้องพึ่งพาความรู้พื้นฐานเหล่านี้ก่อน

    • Function พวกที่ใช้เพื่อการสรุปข้อมูลเช่น SUM, COUNT, AVERAGE, MAX, MIN, SUMIF, COUNTIF
    • การใช้ Sort & Filter หรือ Advanced Filter
    • การใช้ PivotTable (เป็นวิธีที่สะดวกมาก แนะนำเลย)

    ปกติแล้ว คุณควรจะเตรียมข้อมูลให้เหมือนกับเตรียมฐานข้อมูลตามปกติ คือ
    ใส่ข้อมูลแต่ละรายการหรือแต่ละกลุ่ม  แยกไว้คนละแถว (คล้ายกับ Record ใน Database)

    • ใส่การวัดข้อมูลในแต่ละมิติ ไว้แยกคอลัมน์กัน (คล้ายๆกับ Field ข้อมูลใน Database)
    • ปกติแล้ว Excel จะเปรียบเทียบว่า จำนวน Row กับColumn อันไหนมีจำนวนมากกว่ากัน Excel จะเอาอันนั้นไปเป็นแกน X (แนวนอน) ของกราฟให้โดยอัตโนมัติ (ถ้าจำนวนเท่ากันพอดี จะเอาข้อมูลแต่ละแถวไปเป็น Category แนวนอน )
    graph-00
    graph-01

    3. Create : การสร้างกราฟ

    มาถึงขั้นตอนนี้ก็เข้าหน้าที่หลักของ Excel แล้วล่ะครับ เมื่อมีข้อมูลเตรียมไว้ในตารางแล้ว ให้คุณลาก Selection ครอบคลุมพื้นที่ของข้อมูลทั้งหมด (หรือจะกดที่ช่อง ใดช่อง หนึ่งของข้อมูลก็ได้) จากนั้นไปที่ [Insert] –> Charts –> เลือกรูปแบบกราฟที่ต้องการ ตามที่ได้แนะนำไปข้างบน ซึ่งในที่นี้ผมเลือก Column –> 2D Column –> Clustered Column ครับ

    ถ้าหลังจากสร้างกราฟแล้วยังไม่ตรงกับที่คิด…

    • เมื่อเลือกรูปแบบกราฟไปแล้ว ถ้ากราฟมันสร้างออกมาสลับแกน x แกน y คือกลับทิศกับสิ่งที่เราคิดไว้แต่แรก คุณสามารถกด (Chart)[[Design]] –> Data –> Switch Row/Column  ได้เลยครับ
    • บางครั้งเมื่อสร้างกราฟไปแล้ว แต่ภายหลังอยากจะใส่ข้อมูลเพิ่มลงไปอีก มีวิธีที่สามารถเพิ่มข้อมูลใหม่ได้ง่ายๆ นั่นก็คือ คุณสามารถกด Copy ข้อมูล (Ctrl+C) เฉพาะส่วนที่จะเพิ่มจากตาราง แล้วเลือกที่กราฟ จากนั้นกด Paste (Ctrl+V) ได้เลย
      copy-data-chart

    4. Customize : ปรับแต่งกราฟ

    ต่อไปเป็นขั้นตอนสุดท้าย นั่นคือการปรับแต่งกราฟ ซึ่งการที่เราจะปรับแต่งกราฟได้นั้น คุณควรจะต้องรู้จักส่วนประกอบของกราฟซะก่อนครับ

    ส่วนประกอบของกราฟ

    chart-component

    วิธีที่ง่ายที่สุดที่จะเข้าใจส่วนประกอบของกราฟ ก็คือ ให้ไปที่ Ribbon Layout ที่อยู่ภายใต้ Chart Tools เลยครับ (ต้องเลือกที่กราฟก่อน) ในนั้นจะแบ่งออกเป็นหลายๆ หมวด ดังนี้

    • Current Selection: เอาไว้เลือกส่วนประกอบของกราฟ สะดวกมากเวลากราฟเริ่มซับซ้อน แต่ละส่วนบังกันจนใช้ Mouse เลือกไม่ถนัด  ลองคลิ๊กดูจะรู้ว่าแต่ละส่วนของกราฟเรียกว่าอะไร พอเลือกแล้วสามารถกด Format Selection เพื่อปรับแต่งส่วนนั้นได้อีก
    • Insert : เอาไว้ใส่รูปภาพ ลูกศร หรือข้อความประกอบเพิ่มเติม ซึ่งผมไม่ขอพูดถึงแล้วกัน
    • Labels : เป็นป้ายกำกับประจำกราฟ เช่น ชื่อกราฟ ชื่อแกน x (แนวนอน) ชื่อแกน y (แนวตั้ง)
    • Axes : เป็นการกำหนดองค์ประกอบพวกแกน x แกน y หรือแม้แต่แกน y หรือแกน x อันที่สอง รวมถึงเส้น Gridline ย่อยๆ ของแต่ละแกน เพื่อให้มองเปรียบเทียบข้อมูลกันได้ชัดเจน
    • Background : เป็นการกำหนดพวกพื้นหลัง เช่น สี หรือลูกเล่นเพื่อความสวยงามอื่นๆ

    การปรับ Format ของ Data Series

    สามารถเลือกสิ่งที่ต้องการจะปรับ แล้วไปที่ Ribbon Format แล้วใส่สี Fill หรือ สีขอบได้ตามต้องการ

    โดยที่การเลือก Data Series นั้น มีเทคนิคเล็กน้อย คือ

    • ถ้าคลิ๊กซ้ายที่ Data Series ทีเดียว มันจะเลือก Data Series นั้นในทุกๆ Category เลย
    • ถ้าคลิ๊กซ้ายซ้ำอีกรอบเฉพาะบาง Category มันจะเลือกเจาะจงเฉพาะ Category นั้นๆ ได้
    • หรืออาจเลือกจาก (Chart) [[Layout]] –> Current Selection –> เลือก Dropdown ก็ได้

    เทคนิคการปรับ Format Selection

    คุณสามารถคลิ๊ก Format Selection ส่วนประกอบหนึ่ง แล้วเปิดหน้าต่างค้างไว้ (คุณสามารถสังเกตว่ากำลัง Format ส่วนไหนอยู่ได้จากชื่อ Windows เช่น Format Data Series)

    เมื่อต้องการแก้ไขส่วนประกอบอื่น คุณสามารถไปคลิ๊กที่ส่วนประกอบอื่นๆ ของกราฟได้เลย ตัว Format Selection จะเปลี่ยนไปเองโดยอัตโนมัติ ขึ้นอยู่กับว่าเรากำลังเลือกส่วนประกอบไหนอยู่

    format-selection

    การปรับ Scale ของแกน X หรือ Y

    ให้เลือกที่แกนที่ต้องการจะแก้ จากนั้นคลิ๊กขวา –> Format Axis

    format-axis

    ใน Axis Option สามารถตั้งค่าสูงสุด ต่ำสุด หรือแม้กระทั่ง ค่า Major Unit (Grid ใหญ่) และ Minor Unit (Grid เล็ก)ได้ แต่ถ้าจะปรับค่า ต้องเปลี่ยนจาก Auto เป็น Fixed ซะก่อน

    ยังมี Option อื่นๆ อีกเยอะแยะ ลองเล่นดูนะครับ เช่น

    • Value in reverse order : กลับทิศของแกน
    • Logarithmic scale : เอาไว้ปรับฐานแกนเวลาข้อมูลมีตั้งแต่ค่าน้อยมาก ไปจนถึงค่าที่เยอะสุดๆ โดยการใช้ค่า Log Base ต่างๆ เช่น ฐาน 10 มาปรับนั่นเอง (คนทำงานวิทยาศาสตร์หรือวิศวกรรมศาสตร์น่าจะเป็นคนใช้ตัวนี้ครับ)
    • Display units : แถมตั้งหน่วยของตัวเลขได้ด้วยว่าต้องการเป็นหลักหน่วย หลักพัน หลักล้าน
    • Major Tick Mark : เส้นขีดแบ่ง Scale หลัก
    • Minor Tick Mark : เส้นขีดแบ่ง Scale ย่อย
    • Horizontal axis crosses : การตั้งจุดตัดแกน ว่าจะให้อีกแกนหนึ่งมาตัดแกนที่กำลัง Format อยู่ ณ ค่าที่เท่าไหร่

    การเปลี่ยนประเภทกราฟ / การทำกราฟแบบ Hybrid หรือแบบลูกผสม

    การเปลี่ยนประเภทกราฟ  (เปลี่ยน ทุกๆ Series )

    ในกรณีนี้สามารถทำได้ง่ายๆ คือ คลิ๊กที่กราฟ แล้วไปที่ (Chart) [[Design]] –>Type –> Change Chart Type จากนั้นเลือกกราฟประเภทใหม่ที่ต้องการได้เลย อันนี้ไม่มีอะไรซับซ้อน

    การทำกราฟลูกผสม

    อันนี้หลักการคือ ให้เปลี่ยนประเภทกราฟให้กับข้อมูลแค่บางส่วน (บาง Series ) นั่นเอง

    ในกรณีนี้มีขั้นตอน คือ ให้เลือกเฉพาะ Series ที่ต้องการเปลี่ยนประเภทกราฟ แล้วคลิ๊กขวา –> Change Series Chart Type จากนั้นเลือกกราฟประเภทใหม่ที่ต้องการได้เลย

    change-type

    เลือกประเภทกราฟที่ต้องการ เช่น Line Chart จะเห็นว่าเฉพาะ Series ที่เราเลือก (Max Score) เท่านั้นที่เปลี่ยนไป

    change-type2

    การปรับแก้แหล่งที่มาของข้อมูล (Data Source)

    เราสามารถปรับแก้การเลือกใช้ Data Source โดยคลิ๊ก (Chart) [[Design]] –>Data –> Select Data จากนั้นมันจะขึ้นหน้าต่างออกมา ฝั่งซ้ายจะเป็น Data Series ที่เป็นแกน Y, ฝั่งขวาเป็นแกน X

    data-source

    การเพิ่ม/ลบ Data Series : ให้กด Add / Remove

    จะสลับ Sequence ลำดับก่อนหลัง : อันนี้ไว้ปรับเวลากราฟบังกันได้ คือจะปรับให้อันไหนอยู่ด้านหน้า-หลัง นั่นเอง วิธีการคือให้กดลูกศรขึ้นลงข้างๆคำว่า Remove

    การแก้ไขชื่อ และข้อมูลแกน X หรือ แกน Y : เลือก Data Series ที่ต้องการ แล้วกด Edit

    compare-chart

    การเพิ่มแกนอันที่ 2

    มีประโยชน์ในกรณีที่ Data Series ในกราฟ มีค่าต่างกันมากๆ จนไม่ควรนำมา Plot บนแกนเดียวกัน เช่น มีค่าที่แสดงยอดการผลิตสินค้า (อาจมีค่าเป็นพัน) กับ %ความผิดพลาด (มีค่าแค่ไม่เกิน 100% หรือไม่เกิน 1) จึงควรจะ Plot แยกแกน Y ใช้คนละแกนกันเป็นต้นการเพิ่มแกนอันที่ 2 (Secondary Axis)

    ซึ่งการเพิ่ม Secondary Axis มี 2 แบบด้วยกัน คือ เพิ่มแกน Y อันที่2 กับ เพิ่มแกน X อันที่ 2

    การเพิ่มแกน Y อันที่สอง

    สมมติข้อมูลของผม Data Series %Fail ซึ่งมีค่าน้อยมากๆ (เพราะเป็น %) ทำให้เวลา Plot รวมกับ Data Series ยอดการผลิตสินค้า บนแกน Y เดียวกันจะแทบมองไม่เห็น

    Second-axis1

    ทางแก้ไขก็คือ ผมต้องเอาค่า %ความผิดพลาด นี้ไป Plot ลงใน Secondary Y-Axis นั่นเอง

    ไปให้ทำดังนี้ เลือก Series %Fail แล้ว Format Data Seriesโดยอาจเลือกจาก Dropdown ใน Current Selection แล้วกด Format Selection เพราะจิ้มเอาน่าจะยาก เพราะมองกราฟไม่เห็นด้วยซ้ำ!

    selection-hard

    จากนั้นใน Series Option –> เลือก Plot on Secondary Axis

    Second-axis2

    จะเห็นว่ากราฟแสดงออกมาแล้ว แลละมีแกน Y อันที่สองโผล่ออกมาด้วย ต่อไปก็อาจจะเปลี่ยนประเภทกราฟให้เป็นกราฟเส้นเพื่อความสวยงามอีกทีก็ได้

    Second-axis3
    การเพิ่มแกน X อันที่สอง

    หากต้องการจะเพิ่มแกน X อันที่สอง ต้องทำหลังจากเพิ่มแกน Y อันที่ 2 ไปก่อนครับ ถึงจะมี Option โผล่มาให้เลือก โดยให้ไปที่ (Chart)[[Layout]]–> Axes –>Axes –> Secondary Horizontal Axis –> แล้วเลือกแบบที่ต้องการได้เลย

    อยาก Plot กราฟจาก Cell ที่ซ่อนอยู่ ทำยังไงดี?

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

    hide-1
    hide-2

    สามารถแก้ไขได้ง่ายๆ ดังนี้ครับ

    1. เลือกที่กราฟที่เราต้องการแก้ไข แล้ว คลิ๊กขวา–> Select Data…
    2. เลือกปุ่ม Hidden and Empty Cells
    3. ติ๊ก Show data in hidden rows and columns แล้วกด OK
    hide-3
    hide-4

    คำแนะนำในการสร้าง Chart ที่ดี

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

    • เลือกกราฟ Basic ที่สุดถ้าเป็นไปได้: ผมไม่แนะนำให้ใช้กราฟในรูปแบบที่ประหลาดๆ โดยเฉพาะพวกกราฟ 3 มิตินะครับ เพราะนอกจากจะดูรกแล้ว ยังหลอกตาสุดๆ อีกด้วย
    • ลบสิ่งที่ไม่จำเป็นออก ในกราฟที่มีทั้ง Legend และ คำบรรยายใต้ Series ซึ่งซ้ำซ้อนกัน ให้ลบอันใดอันหนึ่งทิ้งไป (ผมมักจะเลือกลบ Legend ทิ้ง เพราะต้องกวาดสายตาไปดู ทำให้ไม่สะดวก
    • พยายามอย่าใส่ข้อมูลหลาย Series พร้อมๆ กันมากเกินไป เช่น อย่าใส่เกิน 2 อัน เพราะจะเริ่มดูไม่รู้เรื่องแล้ว แต่ก่อนผมก็เคยเป็นพวกบ้ายัดข้อมูลมาก่อนครับ แต่เชื่อผมเถอะว่ามันไม่ Work!
    • หากข้อมูลมีหลายกลุ่ม แล้วต้องการเปรียบเทียบกัน ให้พยายาม Group รวมกลุ่มที่ไม่สำคัญเข้าด้วยกันก่อน
    • อย่าใส่สีเยอะเกินไป การใส่สีเยอะๆ ทำให้คนอ่านไม่รู้จะเลือกดูตัวไหนดี กราฟที่ดีควรจะดูจากระยะไกลแล้วก็พอเห็นภาพได้เลย ถ้าเป็นไปได้ควรเน้นใส่สีเด่นๆ ที่ข้อมูลที่สำคัญเท่านั้น ข้อมูลอื่นๆ อาจใช้โทนสีเทาไปเลยก็ยังได้
    • ใส่คำบรรยายให้กราฟด้วย หากคุณไม่บอกผู้อ่านให้ชัดว่ามันคือกราฟอะไร แต่ละแกนคืออะไร ผู้อ่านกราฟอ่านดูกราฟไม่รู้เรื่องเลยก็ได้
    การทำกราฟที่ไม่ดีการทำกราฟที่ดีกว่า
     bad-chart good-chart

    การนำกราฟไปใช้ใน Powerpoint

    ในสถานการณ์ส่วนใหญ่ของชีวิตคนทำงาน คุณมักจะต้องทำกราฟต่อเมื่อคุณต้องนำเสนองานบางอย่างต่อเจ้านาย และการนำเสนอนั้นก็มักจะต้องใช้โปรแกรมยอดฮิตอย่าง Powerpoint ด้วย!

    แต่ผมพูดตามตรงว่าการทำกราฟใน Powerpoint มันไม่สะดวกเท่า Excel หรอกครับ แม้ว่ามันจะเปิดตาราง Excel มาให้กรอกก็เถอะ เพราะเวลา Add กราฟใน Powerpoint 1 อัน มันก็จะเปิด Excel ขึ้นมาใหม่ 1 ไฟล์เพื่อ Support ข้อมูลสำหรับกราฟนั้นๆ ซึ่งทำให้มีไฟล์กราฟเยอะแยะกระจัดกระจายมาก ดังนั้นผมแนะนำว่าคุณควรจะสร้างกราฟใน Excel ให้เสร็จแล้วค่อยเอาไปใช้ใน Powerpoint จะดีกว่าครับ

    หากเป็น Powerpoint รุ่นเก่าๆ ผมอยากจะแนะนำวิธี Copy กราฟจาก Excel แล้วไปเลือกใน Powerpoint แล้วค่อย Paste Special –> Paste Link จะได้รูปกราฟที่เหมือน Excel ที่สุด (แต่แก้ไขใน Powerpoint ตรงๆไม่ได้) และยัง Update ค่าตาม เวลาคุณเปลี่ยนข้อมูลใน Excel ด้วย

    pastelink

    แต่หากเป็น Powerpoint รุ่นใหม่ๆ แล้ว เมื่อคุณกด Paste กราฟลงไปตรงๆ ข้อมูลก็ยังสามารถ Link กับ Excel ต้นฉบับได้อยู่ แถมยังสามารถเปลี่ยนรูปแบบและสีสันต่างๆ ใน Powerpoint ให้เข้ากับ Theme ของ Presentation ได้อีกด้วย (Link ข้อมูลจาก Excel แต่รูปแบบกราฟไปทำใน Powerpoint)

  • การกำหนด Custom Number Format

    การกำหนด Custom Number Format

    ใน Excel นั้น เราสามารถทำให้ข้อมูล 2 ช่องที่แท้จริงแล้วข้างในเป็นข้อมูลตัวเดียวกัน แสดงผลออกมาต่างกันได้ (เหมือนเวลาเราเปลี่ยนเคสมือถือ ข้างในก็ยังเป็นเครื่องเดิม แต่คนที่มองเห็นจะรู้สึกว่าเป็นคนละเครื่องอัน ประมาณนั้น)

    วิธีการคือ ต้องกำหนด “รูปแบบ” (Format) ของทั้งสองช่องให้ไม่เหมือนกัน ยกตัวอย่างเช่น

    ในช่อง A1, A2, และ A3 มีเลข 2.345 ทั้งคู่

    • ช่องแรกกำหนดรูปแบบเป็น General ก็จะเห็นเป็น 2.345
    • ช่องที่สองกำหนดเป็น Number ที่มีทศนิยม 2 ตัวแหน่ง จะเห็นค่าเป็น 2.35 แทน (แต่ค่าที่แท้จริงของช่องนั่นก็ยังเป็น 2.345 อยู่นะครับ)
    • ช่องสุดท้ายกำหนดรูปแบบเป็นวันที่และเวลา เราจะเห็นค่าเป็น 2/1/1900  8:16:48 (แต่ค่าที่แท้จริงของช่องนั่นก็ยังเป็น 2.345 อยู่นะครับ… ใครงงว่าทำไมเป็นแบบนี้ สามารถไปอ่านได้ที่ การทำงานเกี่ยวกับวันและเวลา )

    นี่คือความสามารถของการเปลี่ยนหรือกำหนด Format ที่ทำให้ค่าเดียวกัน แสดงผลไม่เหมือนกันได้

    การกำหนด Format เบื้องต้น

    3_number_format_box

    ซึ่งปกติการกำหนด Format ทำได้โดยเลือกช่องที่เราต้องการ จากนั้นเลือกแถบ Home => ในช่อง Number สามารถเลือก Drop Down Format ต่างๆ ที่โปรแกรม Excel ได้ทำไว้ให้แล้ว เช่น General, Number, Currency, Date, Text, และอีกมากมาย ให้ลองกดเล่นดูนะครับ ปกติแล้ว Format พวกนี้จะเอาไว้ใช้กับข้อมูลที่เป็นตัวเลขนะครับ

    การกำหนด Format แบบขั้นสูง (Custom Format)

    เราจะใช้ Custom Number Format เมื่อต้องการกำหนดรูปแบบตัวเลขที่ไม่มีให้เลือกในรูปแบบมาตรฐาน พูดง่ายๆ คือ ถ้าของสำเร็จรูปไม่มีให้ใช้ เราก็เลยต้อง Customize ขึ้นมาซะเองเลย

    ซึ่ง Custom Format มีวิธีการทำดังนี้

    1. ให้เลือก Cell/Range ช่องที่ต้องการ จากนั้นคลิ๊กขวา => Format Cell => Custom
      หรือ เลือกช่องที่เราต้องการ จากนั้น กด Ctrl+1 => Custom
    2. จากนั้นไปตรง Type: แล้วพิมพ์รูปแบบที่ต้องการได้เลยครับ…

    แล้วไอ้รูปแบบที่เราต้องพิมพ์ลงไปคืออะไรล่ะ?? ผมจะบอกวิธีให้ครับ

    วิธีการเขียน Custom Number Format

    หากข้อมูลจริงๆ ที่เราพิมพ์ลงไป เป็นเลข  43210.525 แต่เราต้องการเปลี่ยนให้มีรูปแบบที่แสดงแตกต่างกันไปตาม Custom Format ซึ่งหลังจากเลือก Format Cell –> Custom แล้วจะเห็นว่ามีตัวอย่างวิธีเขียนขึ้นมาให้ดูมากมาย

    custom-format

    ซึ่งหลักการที่สำคัญคือ Custom Format แต่ละตัวที่เราพิมพ์ลงไปจะแทนตำแหน่งของตัวเลข 1 ตำแหน่ง โดยมีความหมายไม่เหมือนกัน ซึ่งผมขอแบ่งออกเป็นกลุ่มๆ ได้ดังนี้

    กลุ่มแทนตำแหน่งตัวเลข

    custom-format-number
    • 0 (เลขศูนย์) บ่งบอกว่าตำแหน่งนั้นจะต้องแสดงตัวเลขออกมาเสมอ แปลว่า เลข 0 จะถูกแสดงออกมาแม้ไม่จำเป็นก็ตาม
      การกำหนด Custom Number Format 2
    • # (เครื่องหมายชาร์ป) บ่งบอกว่าตำแหน่งนั้นไม่ต้องแสดงตัวเลข (เช่น 0) ถ้าไม่จำเป็นจะเห็นว่าเลข 0 ที่เป็นตัวหนาสีแดงยังคงถูกแสดงค่าแม้จะไม่มีความหมายใดๆ
      sharp
      จะเห็นว่ามันจะไม่แสดงเลข 0 ที่ไม่จำเป็น เช่น  เลข 0 ก่อนเลข 4 และหลังเลข 5 ตัวสุดท้าย
    • ? (เครื่องหมายคำถาม) บ่งบอกว่าตำแหน่งนั้นถ้าเลข 0 ไม่มีความหมาย ให้แทนด้วยช่องว่าง (ต่างจาก # ตรงที่จะตัดเลข 0 ที่ไม่มีความหมายทิ้งไปเลย)
      question
      ว สีแดง จริงๆ คือ ช่องว่าง (space) มีการกินตำแหน่งตัวอักษรจริงๆ

    กลุ่มเครื่องหมายประกอบตัวเลข

    custom-format-number2
    • . (จุด) จะบอกตำแหน่งของทศนิยมว่าอยู่ตรงไหน (มีการปัดเศษทศนิยม)
      เช่น00 (หลังจุดมี 2 ตัว = ทศนิยม 2 ตำแหน่ง ) ค่าจะจะแสดงเป็น43210.53 (ปัดขึ้น)
      dot
    • , (Comma) เป็นการลดตำแหน่งลงไปทีละ 3 หลัก (หารทีละ 1000) ซึ่งมีประโยชน์มากๆ ในการทำเลขเยอะๆ ยาวๆ ให้อ่านง่ายขึ้น
      • ใส่ comma ตามหลัง 1 ตัวเลขหายไป 3 หลัก (หารพัน)
        เช่น0000, จะได้ว่า = 43210.525/1000 = 43.210525 = 43.2105
      • ใส่ comma ตามหลัง 2 ตัวเลขหายไป 6 หลัก (หารล้าน)
        เช่น0000,, จะได้ว่า = 42310.525/1000000 = 0.043210525 = 0.0432
    • E+ เป็นการใส่สัญลักษณ์เลข Scientific เช่น 00 E+00 จะทำให้เห็นเลข เป็น 4.32 E+04
    • ใส่ * ตามด้วยอักขระที่ต้องการ เพื่อให้ Excel ใส่เครื่องหมายนั้นๆ ไปจนเต็มเนื้อที่ Cell เช่น 0,000*-
      • จะแสดงเป็น 43,211—————— (ขีดไปจนสุด cell)
    • ใส่ _ตามด้วยอักขระที่ต้องการ เพื่อให้ Excel เว้นวรรคด้วยความกว้างของอักขระนั้น
      เช่น _H จะเป็นการเว้นช่องว่างด้วยความกว้างเท่าตัว H (พิมพ์ใหญ่)
      หากใส่เป็น 0,0_H00 จะเห็นเป็น 43,2 11นั่นเอง

    กลุ่มตัวอักษร

    • หากจะใส่ข้อความ (Text) ร่วมใน Custom Format ด้วย (เช่นเป็น Label หรือเป็น หน่วยการนับ) ให้ใส่ในเครื่องหมายคำพูด
      • ยกเว้น ตัว $ – + / ( ) : space ไม่ต้องใส่เครื่องหมายคำพูดครอบก็ได้
        เช่น “ผมมีเงิน” #,##0.00 “บาท” จะได้ว่า ผมมีเงิน 43,210.53 บาท
        custom-format-text1
        สังเกต! ค่าที่แท้จริงใน Cell ยังเป็นตัวเลข ซึ่งสามารถเอาไปคำนวณได้อยู่
    • @ เป็นตำแหน่งที่ให้วาง Value ตัวหนังสือที่อยู่ใน Cell (Text Place Holder)
      เช่น @ “บาท” แม้ว่าเวลาพิมพ์ใน Cell ว่า “ห้าร้อย” เฉยๆ แต่ Excel จะแสดงออกมาเป็น “ห้าร้อย บาท” แต่ถ้าใช้ Custom Format ว่า “ผมมีเงิน” @ “บาท” ก็จะขึ้นว่า ผมมีเงิน ห้าร้อย บาท นั่นเอง
      custom-format-text2 

    กลุ่มแทน วันที่ และ เวลา

    • วันที่ ใช้สัญลักษณ์ d m y (วัน เดือน ปี) มาแทน ซึ่งใส่ได้หลายรูปแบบมาก ดังนี้
      date
    • เวลา  ใช้เครื่องหมาย h m s(ชม. นาที วินาที ) มาแทนดังนี้ 
    • สัญลักษณ์หลัก คือhแทน ชั่วโมง/ mmแทน นาที / ssแทน วินาที
      • ถ้าใส่เครื่องหมาย [ ] เวลาใส่ลงไปแล้วจะหมายถึงให้ใช้ค่าแบบที่เกินเวลาปกติได้ เช่น [h] เกิน 24 ชม. [m] เกิน 60 นาที [s] เกิน 60 วินาทีได้
    • AM/PM, am/pm, A/P, a/p ให้เป็นระบบ AM/PM ถ้าไม่ใส่จะเป็นระบบ 24 ชม.
      time

    Escape Character

    บางทีเราต้องการใส่ character พิเศษให้เป็นคำธรรมดาๆ นอกจากจะใส่ ” ” ครอบแล้ว ยังสามารถใช้ \นำหน้า code นั้นๆ ได้ด้วย

    เช่น อยากให้เลข 123 มองเห็นเป็น #123

    เราสามารถใส่ custom number format ได้ 2 แบบ คือ

    • “#”0
    • \#0

    การกำหนดสี ด้วย Code [ ]

    • [BLACK], [BLUE], [CYAN], [GREEN], [MAGENTA], [RED], [WHITE], [YELLOW]
    • [COLOR 1-56]

    Excel จะใส่สีให้กับ format ที่ตามหลัง Code สีต่างๆ
    เช่น [blue]0.00 ค่าที่ได้จะเหมือนกับใส่ Format 0.00 แต่ตัวอักษรจะเป็นสีฟ้าแทน

    การกำหนด Format โดยขึ้นกับค่าของตัวเลขข้างใน

    วิธีนี้ทำให้เรากำหนดให้ใช้ Format โดยขึ้นอยู่กับค่าข้างใน โดยไม่ต้องพึ่งพา Conditional Formatting เลย สามารถทำได้ 2 แบบหลักๆ คือ

    กำหนดให้ใช้ Format ให้ขึ้นอยู่กับค่าข้างใน ว่าเป็นเลขบวก เลขลบ เลขศูนย์  หรือ Text

    มีรูปแบบคือ ให้ใส่ Syntax โดยคั่นด้วยเครื่องหมาย Semicolon ( ; )

    โดยมีรูปแบบดังนี้

    Format ทุกค่า  // อันนี้เป็นแบบปกติที่เราใช้กัน คือไม่มี ; เลย
    Formatเลขบวก หรือ Formatเลขศูนย์ ; Formatเลขลบ   // อันนี้มี ; 1 ที
    Formatเลขบวก ; Formatเลขลบ ; Formatเลขศูนย์   // อันนี้มี ; 2 ที
    Formatเลขบวก ; Formatเลขลบ ; Formatเลขศูนย์ ; Formatตัวหนังสือ  // อันนี้เต็มยศสุดๆ มี ; 3 รอบ

    ตัวอย่าง

    การกำหนด Custom Number Format 3

    ใส่ Format ให้ต่างกันได้ 3 แบบ โดยกำหนดเงื่อนไขเอง

    มีรูปแบบคือ

    [เงื่อนไขแรก]formatแรก;[เงื่อนไขที่สอง]formatที่สอง;formatอื่นๆ

    เช่น [<-400] [Red](-0.00);[=200][yellow]0.00;[blue]0.00 แปลว่า  

    • หากน้อยกว่า -400 ให้ เป็นสีแดง format (-0.00)
    • หากเท่ากับ 200 ให้เป็นสีเหลืองformat 0.00
    • นอกนั้นให้เป็นสีฟ้า format 0.00\

    แปลว่า หากเราใส่ Custom Format เป็นคำว่า ;;; จะทำให้มองไม่เห็นค่าที่พิมพ์ลงไปใน Cell (แต่ยังมองเห็นใน Formula Bar อยู่) แบบนี้เอาไปแกล้งคนอื่นได้ครับ รับรองว่าเห็นแล้วงงแน่นอนว่าทำไมมองไม่เห็นสิ่งที่อยู่ใน Cell 5555

    ทำให้เลขกลายเป็น Text ด้วย Format ที่กำหนด

    ก่อนหน้านี้เราเรียนวิธีเปลี่ยน Format ไปแล้ว ซึ่งค่าที่แท้จริงจะยังคงเป็นเลขเหมือนเดิมอยู่ อย่างไรก็ตามเราสามารถทำให้ข้อมูลกลายเป็นข้อความจริงๆ ได้ด้วยการใช้ฟังก์ชัน TEXT มาช่วย เช่น

    TEXT(value, format_text) 
    โดยที่ format_text ให้ใส้ Code แบบเดียวกับ Custom Format Code เลย แต่ให้เป็น Text

    สมมติ A1 มีเลข 1234

    แล้วเขียนสูตรใน B1 ว่า

    =TEXT(A1, "00-000") 

    ผลลัพธ์จะได้เป็นข้อความว่า 01-234 ทันที และเป็นข้อความจริงๆ ด้วย ไม่ใช่แค่ Format ครับ

    ตารางสรุป

    excel custom format summary
  • Conditional Formatting เพื่อปรับรูปแบบตามเงื่อนไข

    Conditional Formatting เพื่อปรับรูปแบบตามเงื่อนไข

    co-create
    บทความนี้คือส่วนหนึ่งของโครงการ ร่วมสร้าง “หนังสือคู่มือ Excel ที่เจ๋งที่สุด” ใครที่มี comment เพื่อแนะนำ ปรับปรุงหนังสือได้ คุณจะได้เครดิตในฐานะผู้ร่วมเขียน ลงในหนังสือที่จะพิมพ์จริงๆ ด้วย! อ่านรายละเอียด และดูสารบัญหนังสือ คลิ๊กที่นี่


    จะดีแค่ไหนหากเราสามารถกำหนดเงื่อนไขการใส่ Format ของ Cell ได้ตามที่ต้องการ เช่น

    • กำหนดให้สีในช่องเปลี่ยนไปโดยขึ้นอยู่กับตัวเลขที่อยู่ข้างในว่ามากหรือน้อย
    • กำหนดให้ตัวอักษรเปลี่ยนสีเป็นสีแดง เมื่อเลขในช่องน้อยกว่าค่าที่กำหนด
    • กำหนดให้เลข Top 20% ของข้อมูลทั้งหมด โดดเด่นออกมา
    • ทำให้ช่องที่มีคำว่า “แมว” เป็นสีส้ม
    • อื่นๆ อีกมากมาย

    นี่เป็นตัวอย่างความสามารถของสิ่งที่เรียกว่า Conditional Formatting (การกำหนดรูปแบบตามเงื่อนไข) ที่ Excel มีให้เราใช้ครับ ซึ่งอยู่ใน [Home] –> Styles –> Conditional Formatting โดยสิ่งที่มีให้เลือกเป็นมาตรฐานมีดังนี้

    • Highlight Cells Rules : ช่องที่มีค่า มากกว่า/น้อยกว่า/มีคำที่กำหนด/หาค่าที่ซ้ำกัน
    • Top/Bottom Rules : ช่องที่เป็น Top 10 (เลขเปลี่ยนได้) ในเรื่องต่างๆ
    • Data Bars : ใส่กราฟแท่งเข้าไปเป็น Background ของช่องนั้นๆ ว่ามีค่ามากหรือน้อย
    • Color Scales ใส่สี Background ของช่องนั้นๆ ตามค่ามากน้อย
    • Icon Sets : ใส่เครื่องหมายต่างๆ เช่น ลูกศร ขึ้น/ลง ตามแต่ค่าที่อยู่ข้างในว่ามากหรือน้อย
    • New Rule…. : อันนี้ไว้กำหนดเงื่อนไขแบบ Advance ซึ่งจะพูดถึงในบทหลังๆ ครับ

    connditional-formatting

    วิธีการใช้งาน Conditional Formatting

    1. เลือก Cell/Range ที่ต้องการให้รูปแบบเปลี่ยนไปตามเงื่อนไข (Conditional Formatting)
    2. เลือกเงื่อนไขที่ต้องการ เช่น ผมเลือก Highlight Cells Rules –> Greater Than…–>
    • ใส่เลข 5000 ซึ่งหมายถึงจะใส่ Format ให้กับช่องที่มีค่ามากกว่า 5000
      connditional-formatting-2
    • ตรงนี้จะใส่เป็นสูตรก็ได้นะครับ เช่น =sum($D$2:$D$3) แปลว่าให้ จะใส่ Format ให้กับช่องที่มีค่ามากกว่า D2+D3 ซึ่งคือ 1000+2000 หรือ 3000 นั่นเอง
      Tips : สังเกตว่า มีการใส่ $ เพื่อ Lock สูตรไว้ด้วย ไม่งั้นสูตรจะเลื่อน เดี๋ยวจะอธิบายต่อไปอีกทีว่าเมื่อไหร่ที่ต้องใส่ หรือไม่ต้องใส่เครื่องหมาย $
      connditional-formatting-3
    1. เลือก Format ที่ต้องการว่าจะให้เปลี่ยน Format ไปเป็นรูปแบบใด ซึ่งจะมี Format เบื้องต้นให้เลือก ประมาณ 6 แบบ เช่น Light Red Fill with Dark Red Text ดังรูปข้างล่าง แต่ถ้าหากไม่พอใจ สามารถกด Custom Format… เพื่อกำหนดรูปแบบที่ต้องการได้
    2. หากต้องการใช้เงื่อนไขในขั้นตอนที่ 2 ที่ไม่มีให้เลือกในรูปแบบมาตรฐาน อ่านต่อในหัวข้อ การทำ Conditional Formatting ขั้นสูงได้เลย ครับ

    (more…)

  • สรุปทุกสิ่งที่คุณควรรู้เกี่ยวกับ Pivot Table : ภาค 3 – เทคนิคการคำนวณขั้นสูง

    สรุปทุกสิ่งที่คุณควรรู้เกี่ยวกับ Pivot Table : ภาค 3 – เทคนิคการคำนวณขั้นสูง

    เทคนิคการใช้ Helper Column ทำให้คำนวณสรุป PivotTable ง่ายขึ้น

    งานที่ผมเจอบ่อยๆ และเคยเสียเวลากับมันมาก ก็คือ กรณีที่ต้องทำงาน Routine เช่น Monthly Report ที่ต้องรายงานข้อมูลเป็นรายเดือนให้เห็นความคืบหน้าในทุกเดือนๆ ซึ่งผมเชื่อมั่นว่าคุณก็คงเคยทำมันบ้างล่ะ

    แต่ปัญหาที่มักเกิดขึ้นคือ ข้อมูลที่เป็น Source Data นั้นเป็นข้อมูลรายวัน แล้วไม่ได้จบเดือนพอดี แถมผมก็ขี้เกียจมานั่งตัดให้ Data จบสิ้นเดือนพอดีด้วย เช่น จริงๆ มีรายการขายถึงวันที่ 3 มีนาคม แต่ผมอยากสรุปข้อมูลแค่สิ้นเดือน กุมภาพันธ์เท่านั้น

    helper1

    ถ้าทำแบบถึกๆ ไป ผมก็อาจจะนั่ง Group ข้อมูลให้เป็นรายเดือน ซึ่งมันก็จะมี Data เดือนมีนาคมออกมาด้วยติ่งหนึ่งเสมอ ซึ่งผมก็ต้องมา Filter มันออกภายหลัง

    helper2

    พอเดือนถัดไป ผมก็ต้องมานั่งแก้ Filter ให้เห็นเดือนมีนาคม แต่ต้องเอาเดือนเมษายนออก ทำแบบนี้ไปเรื่อยๆ และถ้ามี PivotTable หลายตาราง เราก็ต้องมานั่งแก้แบบนี้ทุกตาราง ตายพอดี!!

    วิธีที่ดีกว่าคือการสร้าง Helper Column มาช่วยใน Source Data เลย เช่น กำหนดช่อง A1 ใน Sheet ที่ไม่ได้ใช้งานซักอันนึงเป็นวันที่สุดท้ายที่ต้องการแสดงใน PivotTable แล้วอาจตั้งชื่อว่า Latest_Date

    ที่นี้กลับมาที่ Source Data ของเรา แล้วมาเริ่มสร้าง Helper Column กันครับ แต่จะสร้าง Helper Column ตรงไหนดี? ผมแนะนำแบบนี้ครับ

    • กรณีที่เป็นข้อมูลปกติ แล้วสร้าง PivotTable ไปแล้ว: ผมแนะนำให้ทำการ “แทรก Column” ในพื้นที่ของ Data Source เดิม เช่น เดิมอยู่ในคอลัมน์ A:H ก็ไปแทรกให้อยู่ในระหว่างคอลัมน์ A กับ H ตรงไหนก็ได้ ทั้งนี้เพราะหากเราไปแทรกข้างหน้าหรือข้างหลัง Source Data เดิม PivotTable จะมองไม่เห็นมันครับทำให้ต้องมานั่งแก้ Source Data ใน PivotTable อีกทีซึ่งเสียเวลามาก วิธีที่ผมบอกจะช่วยแก้เรื่องนี้ได้ แต่มีข้อเสียคือต้องระวังว่า Helper Column จะถูกข้อมูลอื่นมาทับภายหลัง
    • กรณีที่เป็นข้อมูลปกติ แล้วยังไม่ทันสร้าง PivotTable: ผมแนะนำให้สร้าง Helper Column ไว้ที่คอลัมน์ซ้ายสุดครับ เนื่องจากเวลามี Data ใหม่เข้ามา จะได้ Paste ลงไปตรงๆ ได้เลยแบบไม่ต้องกังวลว่าจะทับ Helper Column ของเรา
    • กรณีที่ Source Data เป็น Table (Ctrl+T) : ผมแนะนำให้สร้าง Helper Column ไว้ที่คอลัมน์ซ้ายสุดครับ เนื่องจากเวลามี Data ใหม่เข้ามา จะได้ Paste ลงไปตรงๆ ได้เลยแบบไม่ต้องกังวลว่าจะทับ Helper Column ของเรา ซึ่งเราสามารถทำแบบนี้ได้เพราะว่าการใช้ Table เป็น Source Data มันจะมีความสามารถในการ Dynamic Range คือ PivotTable จะมองเห็น Helper Column ที่เราแทรกลงไปโดยอัตโนมัติ

    ที่นี้ใน Helper Column ที่ผมตั้งชื่อว่า show date ก็อาจเขียนสูตรเช็คว่า วันที่แต่ละ record ใน Source Data นั้นน้อยกว่าหรือเท่ากับวันที่ Latest_Date  ที่คุณกำหนดไว้หรือไม่?

    helper3

    ซึ่งคุณสามารถเอา showdate นี้ไปเป็น Report Filter ใน PivotTable แล้วเลือกเป็น TRUE ไว้ได้เลย พอเดือนถัดไปก็แค่ไปแก้ค่าในช่อง Latest_Date  แล้วกด Refresh All ตรง PivotTable เท่านั้นเอง แค่นี้เป็นอันจบครับ!!

    เพิ่มการคำนวณแบบพิเศษใน Pivot Table ด้วย Calculated Field & Calculated Item

    ใน PivotTable นั้น เราสามารถสร้างข้อมูลการคำนวณขึ้นมาใหม่ โดยไม่จำเป็นต้องเข้าไปปรับแก้ใน Data Source เลย ซึ่งข้อมูลการคำนวณนี้จะแบ่งได้เป็น 2 ประเภท ซึ่งมีความแตกต่างกันดังนี้

    1. Calculated Field : จะเป็นการสร้าง Field ใหม่ขึ้นมาเลย เช่น เดิมมี Field ยอดขายอยู่ เราสามารถสร้าง Field ใหม่ชื่อ Commission เพิ่มเข้ามาได้ โดยอาจเกิดจาก ยอดขาย *10% ถ้าขายได้ยอดรวมมากกว่า 3000 บาท
    2. Calculated Item : เป็นการสร้าง Sub-Item ใหม่ใน Field ที่มีอยู่แล้ว เช่น ใน Field ประเภทสินค้า ในข้อมูลต้นทางอาจมีสินค้าเพียง 4 ประเภท คือ A,B,C,D แล้วเราจะสร้างประเภทสินค้าเข้ามาใหม่ คือ สินค้า E โดย คำนวณจาก A+B เป็นต้น

    ทำไมต้องสร้าง Field คำนวณเพิ่มเติม?

    สถานการณ์ต่อไปนี้ ค่อนข้างเหมาะกับการสร้าง Field คำนวณเพิ่มใน PivotTable ครับ

    • ไม่สามารถเข้าไปแก้ไข Source Data ได้ หรือ แก้ไขได้ลำบาก
    • การคำนวณนั้นมีเงื่อนไขที่ต้องดูผลรวมของข้อมูลทั้งหมดก่อน จึงจะคำนวณได้ ไม่สามารถคำนวณได้ในแต่ละบรรทัดใน Source Data เช่น กรณี Commission ที่คิดจากยอดขายรวม *10% โดยมีการกำหนดยอดรวมขั้นต่ำที่จะได้ Commission ด้วย
    • การคำนวณนั้นเป็นการหาสัดส่วนที่เป็น % เช่น %Portion ต่างๆ โดยที่ Weight ของแต่ละข้อมูลไม่เท่ากัน เช่น หากเราใส่สูตรหา % Defect ใน Data Source เลย เวลา Pivot แล้วหาค่า Average จะได้ผลลัพธ์แปลกๆ เพราะไม่ได้เอา Weight มาเป็นปัจจัย เป็นยังไงมาดูกัน
      Pivot-CalF-dataPivot-CalF-CalF2

    Calculated Field

    วิธีการสร้าง Calculated Field

    • ให้กดที่ (Pivot Table)[[Options]]–> Calculations –> Fields, Items, and Sets –> Calculated Field…
    • ตรง Name ให้ตั้งชื่อ Field ตามต้องการ
    • ตรง Formula ให้ใส่สูตรการคำนวณว่าต้องการให้สัมพันธ์กับ Field อื่นๆ อย่างไร

    สมมติว่าผมอยากคำนวณค่า Commission 10% ของยอดขาย โดยมีเงื่อนไขว่าต้องทำยอดขายรวมทุกสินค้าได้มากกว่า 3000 บาท จึงจะได้รับเงินนี้ไป

    pivot-calculated-field

    pivot-calculated-field2-add
    ข้อจำกัดของ Calculated Field

    • เป็นการ SUM ข้อมูลแต่ละ Field ก่อน จากนั้นค่อยมาคำนวณตามสูตรที่เราเขียน
    • สังเกตว่าช่อง Grand Total มันก็คำนวณ Commission ผิด เพราะมันดันคิดเอา Sum of จำนวนเงินที่จ่ายในแถว Grand Total คือ 19852 ซึ่งมากกว่า 3000 บาท มาคูณ10% เลย อันนี้ต้องระวังให้ดีครับ เพราะเป็นข้อจำกัดของ Calculated Field ล่ะ

    Calculated Item

    วิธีการสร้าง Calculated Item

    • คลิ๊กที่ Field ที่ต้องการจะเพิ่ม Item ก่อน
    • ให้กดที่ (Pivot Table)[[Options]]–> Calculations –> Fields, Items, and Sets –> Calculated Item…
    • ตรง Name ให้ตั้งชื่อ Field ตามต้องการ
    • ตรง Formula ให้ใส่สูตรการคำนวณตามต้องการว่าต้องการให้สัมพันธ์กับ Item อื่นๆ อย่างไร
      pivot-calculated-item

    สังเกตว่า เมื่อเราคลิ๊กช่องที่เป็น Calculated Item มันจะขึ้นสูตรใน Formula Bar ด้วย

    pivot-calculated-item2

    ข้อจำกัดของ Calculated Item

    • เป็นการ SUM ข้อมูลแต่ละ Item ก่อน แล้ว จากนั้นจึงคำนวณตามสูตรที่เราเขียน
    • ไม่สามารถใช้ได้กับ PivotTable ที่มีการ Group ข้อมูลอยู่แล้ว (ไม่ว่าจะอยู่ที่ Field อื่นก็ตาม) แต่ว่าสามารถ Group ข้อมูลหลังจากใส่ Calculated Item ได้
    • ไม่สามารถย้าย Field ไปที่ Report Filters ได้
    • ไม่สามารถลาก Field นั้นลงไปที่ section Values หลายๆ รอบได้

    การเขียนสูตรเพื่ออ้างอิงเข้าไปในตาราง Pivot และคำสั่ง GETPIVOTDATA

    Pivot-Getpivotdata

    ปกติเวลาเราเขียนสูตร แล้วเข้าไปคลิ๊กในบริเวณที่เป็นตาราง PivotTable เราอาจจะเห็นสูตรพิลึกๆ ขึ้นมาเช่น ผมเขียนสูตรอ้างอิงโดยคลิ๊กเข้าไปในช่อง D11 แทนที่จะขึ้นมาว่า =D11 ตามปกติ มันดันขึ้นสูตรพิลึกๆ มาว่า =GETPIVOTDATA(“จำนวนเงินที่จ่าย”,$A$3,”ผู้ซื้อ”,”นาย c”,”ผู้ขาย”,”sales ข”,”วิธีการจ่าย”,”เครดิตการ์ด”) แทน ซึ่งทำให้เกิดปัญหาว่าเรา Copy สูตรไปที่อื่น มันก็ไม่เลื่อนช่องให้แบบเวลาใช้ Cell Reference ปกติ แถมสูตรก็ดูยากมากๆ

    วิธีแก้เพื่อให้เวลาใช้สูตรแล้วคลิ๊กเข้าไปใน PivotTable แล้วเป็น Cell Reference ปกติ ให้ทำดังนี้

    ให้กด (Pivot Table)[[Options]]–> PivotTable –> Options (ปุ่มลูกศร)–> ติ๊กคำว่า Generate Getpivotdata ออก เพียงเท่านี้เราก็จะสามารถคลิ๊กเข้าไปในแต่ละช่องของ PivotTable ได้แบบ Cell ทั่วไปแล้ว

    ถ้ามันยุ่งยากแบบนี้แล้ว GETPIVOTDATA มันมีข้อดียังไง? แล้ว Excel มันใส่มาทำไมล่ะเนี่ย!?

    ผมจะบอกว่าจริงๆแล้วมันก็มีข้อดีของมันอยู่ครับ นั่นก็คือ เวลาเรา Link ข้อมูลมาแล้วเปิดโหมด GetpivotData ไว้ ไม่ว่าตาราง PivotTable จะถูกพลิกบิดมุมมองไปมาแค่ไหน ค่าที่เรา Link ไว้ก็จะยังเป็นค่าเดิมเสมอ รวมถึงเวลามีข้อมูลเพิ่มด้วย มันก็ยังสามารถอ้างอิงไปยังข้อมูล Summary ต่างๆ ได้อยู่เช่นเดิม จึงมีประโยชน์ในแง่การเขียนสูตรอ้างอิงค่า Summary จาก PivotTableพอสมควร ต่างจากการใช้ Cell Reference ปกติ ที่อาจกลายเป็นค่าใหม่ที่เราไม่ต้องการไปโดยไม่รู้ตัวเลยก็ได้ เพราะช่องมันเลื่อนไปมาหมดแล้ว

    ดังนั้นก่อนจะปิดโหมด GETPIVOTDATA จะต้องรู้ตัวให้ดีว่ากำลังทำอะไรอยู่นะครับ

  • สรุปทุกสิ่งที่คุณควรรู้เกี่ยวกับ Pivot Table : ภาค 2 – ปรับแต่งตารางให้ได้ดั่งใจ

    สรุปทุกสิ่งที่คุณควรรู้เกี่ยวกับ Pivot Table : ภาค 2 – ปรับแต่งตารางให้ได้ดั่งใจ

    ปรับรูปแบบการแสดงผล

    ปกติแล้ว Pivot Table จะแสดงผลในรูปแบบที่เรียกว่า Compact Form ตามรูปในบทที่แล้ว
    ซึ่งความชอบส่วนตัวผมเองชอบให้แสดงในรูปแบบ Tabular Form หรือ Outline Form มากกว่า

    ผมแนะนำให้ลองทำเป็น Tabular Form ดูโดยให้ทำดังนี้

    ให้คลิ๊กที่ PivotTable แล้วไปที่ (PivotTable)[Design]–>Layout –> Report Layout –> Show in Tabular Form

    Pivot-Basic-Tabular

    จะเห็นว่าข้อมูลแต่ละ Row และ Column จะแยกกันชัดเจน อยู่คนละช่องกันไปเลย
    และมีชื่อ Field กำกับอยู่ตลอด ทำให้ไม่สับสนเหมือนดู Tabular Form

    ใครดูแล้วชอบแบบผมก็แนะนำให้ปรับตามได้เลยครับ

    ต่อมาเรามาดูกันว่า แต่ละส่วนของ PivotTable นั้น เราสามารถจะเล่นหรือปรับแต่งอะไรมันได้บ้าง เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ โดยที่จะไล่ดูทีละ Slot

    ลูกเล่นที่ Report Filter

    Pivot-Filter

    ตรงนี้มีเครื่องมือ Filter ให้ใช้เป็นหลัก ซึ่งยอมให้เราเลือก Choice ได้หลายอันพร้อมกันได้ด้วย

    วิธีการคือให้ติ๊กปุ่ม Select Multiple Items ก่อน นอกจากนี้เราสามารถทำการ Search ได้เช่นเดียวกันเครื่องมือ Filter ปกติเลย

    เมื่อเราทำการ Filter แล้วจะเหลือผลลัพธ์แค่สิ่งที่เราสนใจเท่านั้น เช่น ถ้า Filter ตามรูป

    Pivot-Filter-after

    จะเห็นว่าข้อมูลบางช่องลดลงไปจากเดิม (เช่น F14 ลดจาก 540 เหลือ 160) เนื่องจากถูกกรองข้อมูลออกไปนั่นเอง ซึ่งเราสามารถสังเกตเครื่องหมายกรวยกรองได้จาก Section Filter บนตาราง Pivot และบริเวณ Field List ด้านขวา

    สร้าง Report แยกตาม Filter แต่ละ Item ด้วย Generate Report Filter Page

    บ่อยครั้งคุณอาจอยากจะสร้าง PivotTable หลายๆ ตาราง แยกตามสิ่งที่คุณสนใจ เช่น แยกตามประเภทสินค้า

    reportfilter-1

    ปกติแล้วต้องเลือกสินค้าดูทีละชิ้นกว่าจะเลือกครบก็เสียเวลามาก… ผมมีเทคนิคแนะนำ โดยให้ Excel ทำในสิ่งที่คุณต้องการโดยอัตโนมัติ ให้ไปที่ [[Options]] –> PivotTable –> Options –> Show Report Filter Page… –> เลือก Filter ที่ต้องการ

    reportfilter-3

    Excel จะทำการสร้าง PivotTable ออกมาแยกเป็น Sheet ละ 1 Item ของ Filter นั้นๆ โดยอัตโนมัติ!!

    reportfilter-4

    ลูกเล่นที่ Row Label และ Column Label

    1. สามารถกดปุ่มลูกศร แล้วเลือก Sort ข้อมูล หรือ Filter ข้อมูลบน Label ได้

    การ Sort กับการ Filter ที่เราเรียนรู้มาก่อนหน้านี้ ก็มีให้เลือกใช้ใน PivotTable เช่นกัน

    Pivot-RowLabel
    Pivot-More-sort
    การ Sort ข้อมูล

    การ Sort มีวัตถุประสงค์เพื่อให้ผู้อ่านข้อมูล เข้าใจข้อมูลได้ง่ายขึ้น เช่น ถ้าเรากำหนดให้ Row label หรือ Column Label เรียงหัวข้อตามตัวอักษร หรือ เรียงตามที่มีข้อมูลสรุป เช่น ค่า SUM หรือ COUNT จากน้อยไปมาก มากไปน้อย ย่อมดีกว่าการเรียงข้อมูลแบบ “สะเปะสะปะ” แน่นอน

    • A -> Z (น้อยไปมาก) หรือ Z -> A (มากไปน้อย)
    • More Sort Options
      • Manual คือ ยอมให้เราลากสลับตำแหน่งเองได้ตามต้องการ
      • Ascending by: หรือ Descending by: Field xxx คือ ให้เรียง Field ตามข้อมูลใน Field Values อื่น ตรงนี้มีประโยชน์มาก เช่น อาจเรียงประเภทสินค้าตามยอดขายจากมากไปน้อยเป็นต้น
    การ Filter ข้อมูล

    การ Filter ข้อมูลมีวัตถุประสงค์เพื่อให้เห็นเฉพาะหมวดหมู่ข้อมูลที่เราสนใจ โดยที่วิธีการใช้งานก็เหมือนกับเครื่องมือ Filter ปกติเลยจึงไม่ขอพูดซ้ำอีก

    2. สามารถเปลี่ยนชื่อของ Label ได้

    กรณีที่ชื่อเดิมจาก Data Source อาจจะสื่อสารกับผู้อ่านข้อมูลได้ไม่ดี เราสามารถเปลี่ยนชื่อประเภทข้อมูลที่เป็นหัวตารางใน PivotTable ได้ โดยการคลิ๊กเลือก Label ที่ต้องการจะแก้ แล้วพิมพ์ข้อความใหม่ลงไปเลย แล้วกด Enter เช่น ผมสามารถคลิ๊กคำว่า เงินสด แล้วพิมพ์ว่า Cash ลงไปแทน ได้เลย เป็นต้น

    3. สามารถจัดกลุ่มข้อมูลได้ (Group & Ungroup)

    การจัดกลุ่มนั้นเราทำเพื่อให้เห็นภาพรวมของข้อมูลได้ดีขึ้น และอาจเห็นความสัมพันธ์บางอย่างจากการแบ่งกลุ่มที่เหมาะสม

    เช่น เห็นโอกาสหรือช่องโหว่ในกลุ่มบางกลุ่ม หรืออาจเห็นการแจกแจงจำนวนของแต่ละกลุ่ม เป็นต้น
    การจัดกลุ่มมีอยู่ 2 ลักษณะ ใหญ่ๆ คือ

    ประเภทจัดกลุ่มแบบ Manualจัดกลุ่มแบบ Auto
    วิธีการทำการเลือกว่าจะเอา item ไหนจัดอยู่ด้วยกัน โดยการเลือก Selection เองจากนั้นค่อยกด GroupExcel จะขึ้นมาให้เลือกว่าจะ Group ช่วงทีละเท่าไหร่
    ประเภทข้อมูลที่ใช้ได้ทุกประเภทใช้ได้กับข้อมูลที่เป็นตัวเลขหรือพวกวันที่เท่านั้น และจะต้องไม่มีค่าว่างอยู่ใน Data Source เลย
    ข้อมูลหลังจากการ Groupจะมี Field ใหม่เพิ่มขึ้นมาให้โดยอัตโนมัติ
    ในชื่อ Field เดิม
    แต่มีเลขต่อท้าย
    กรณีข้อมูลเป็นตัวเลข : ไม่มี Field ใหม่เพิ่มขึ้นมาให้ แต่มันจะเปลี่ยนข้อมูลที่ Field ต้นฉบับเลย

    กรณีข้อมูลเป็นวันที่ : ประเภทช่วงวันที่ที่ย่อยที่สุดจะมาทับที่ Field เดิม และจะมีการสร้าง Field ใหม่ในประเภทช่วงวันที่ที่ใหญ่กว่าด้วย เช่น เลือกให้ Group ตาม Year, Quarter, Month ผลก็คือ Field วันที่ Date เดิม จะกลายเป็น Month และจะมี Field ชื่อ Quarters และ Years เพิ่มขึ้น

    วิธีการจัดกลุ่มแบบ Manual

    • ให้ทำ selection เลือก Label ที่ต้องการจัดให้อยู่ในกลุ่มเดียวกันพร้อมกันก่อน
    • จากนั้นกด (PivotTable) [[Options]] –> Group –> Group Selections
      หรือ กดคลิ๊กขวา –> Group… ก็ได้
      pivot-group-menu
    • เมื่อ Group แล้วจะมี Field ใหม่เพิ่มขึ้นมาให้โดยอัตโนมัติ ในชื่อ Field เดิมแต่มีเลขต่อท้าย
    • จากนั้นเราก็สามารถเอา Field เก่าออกไปได้เลย (กดคลิ๊กขวาที่ ผู้ขาย แล้ว Remove ก็ได้) สุดท้ายก็จะเหลือแค่สิ่งที่เราจัด Group ใหม่เท่านั้น (ถ้าต้องการก็ Rename คำว่า Group1 ได้)
      Pivot-Group3  

    วิธีการจัดกลุ่มแบบ Auto : ข้อมูลเป็นตัวเลข

    • ให้เลือกที่ Label ช่องใดช่องหนึ่งแล้วกด Group Selections หรือ กดคลิ๊กขวา –> Group… จะมีหน้าต่าง Grouping ให้กำหนดจุดเริ่มต้น จุดสิ้นสุด และความกว้างของช่วง ซึ่งเราลองเปลี่ยนค่าเล่นได้ว่าจะให้เริ่ม/ จบ/แบ่งช่วง ทีละเท่าไหร่?
      pivot-grouping
    • เมื่อกด Ok สิ่งที่ขึ้นมาจะขึ้นเป็นช่วงตัวเลขมาให้โดยอัตโนมัติ โดยที่ค่าที่น้อยว่าจุด Start และ ค่าที่มากกว่าจุด End ก็จะกลายเป็นอีกกลุ่มหนึ่ง

    ผลของการ Grouping จะแยกเป็น 2 กรณี ดังนี้

    กรณีที่ต้นฉบับเป็นเลขจำนวนเต็มกรณีที่ต้นฉบับมีเลขทศนิยม
    Pivot-Group-Numberpivot-group-decimal
     เมื่อจัดกลุ่มแล้วเลขจะไม่ซ้ำกัน ซึ่งไม่น่าจะทำให้เกิดความสับสนอะไรpivot-grouping2เวลาจัดกลุ่มแล้วเลขจะขึ้นซ้ำกันpivot-group-decimal2
    วิธีการตีความคือเลขตัวเริ่มจะอยู่ใน Group นั้นเสมอ เช่น 150 จะอยู่ในกลุ่ม 150-250ไม่ได้อยู่ในกลุ่ม 50-150 เป็นต้น

    วิธีการจัดกลุ่มแบบ Auto : ข้อมูลเป็นวันที่

    • ให้เลือกที่ Label ช่องใดช่องหนึ่งแล้วกด Group Selections มันจะขึ้นให้เลือกว่าจะจัดกลุ่มวันที่ เริ่มที่เท่าไหร่ จบที่เท่าไหร่? แบ่งตามอะไร (เลือกได้หลายอันพร้อมกัน) เช่น วัน (ระบุได้ว่าเอาช่วงกี่วัน) , เดือน, Quarter, ปี เป็นต้น
      pivot-groupinig-date

    สังเกตว่า ประเภทช่วงวันที่ที่ย่อยที่สุดที่เราเลือกตอน Grouping (Months) จะมาทับที่ Field เดิม (วันที่)

    pivot-groupinig-date3

    ระวัง! อย่างที่บอกไปตอนต้นว่าการจัดกลุ่มแบบ Auto จะเป็นการทับข้อมูล Field ต้นฉบับเลย ผมขอแนะนำว่า คุณควรจะเลือกตัวย่อยสุดตอนที่ทำการ Grouping ให้เป็น ระดับ Days (หรือย่อยกว่านั้น) ถ้าคุณไม่ใช้มัน ค่อยลากออกไปจาก Pivot Area ทีหลังก็ได้ ไม่งั้น Field ที่ชื่อว่า Days จะถูก Grouping เป็น Months สับสนตายเลย! 

    4. สามารถเลือกวิธีการสรุปข้อมูล (Subtotal) ก่อนจะขึ้น Label ใหม่ได้

    ปกติแล้ว หากเราใส่ Row Label ไป 2 Field ซ้อนกัน เช่น ผมลองเอา สินค้ามาซ้อนกับผู้ซื้อ มันจะมีการสรุปข้อมูลเป็น Subtotal ให้เราก่อน เช่น SUM AVERAGE MAX MIN เป็นต้น โดยที่เราสามารถเลือกตัวสรุปข้อมูลที่ต้องการได้ หรือจะใส่พร้อมๆกันหลายๆ อันก็ยังได้

    วิธีการทำดังนี้

    • ให้คลิ๊กขวาที่ Label ที่ต้องการจะทำการ Subtotal (เช่น นาย a) แล้วเลือก Field Settings
    • None = ไม่แสดงการสรุปข้อมูล
    • Custom สามารถเลือกได้หลายตัวพร้อมกัน
    Pivot-SubTotal
    Pivot-SubTotal2
    Pivot-SubTotal3

    ลูกเล่นที่ Values

    ส่วนใหญ่แล้ว สิ่งที่ซับซ้อนของ PivotTable จะอยู่ที่วิธีการคำนวณตรง Values นี่แหละครับ เพราะมันมีให้ปรับได้หลากหลายมาก เช่น ในตัวอย่างข้างบนใช้วิธี SUM แต่ Pivot ยังมีวิธีอื่นๆอีกเยอะแยะครับ เช่น COUNT, AVERAGE, MAX, MIN เป็นต้น

    วิธีการปรับแต่งคือให้ คลิ๊กขวาที่ Field ข้อมูลที่ต้องการจะปรับแล้วกด Value Field Setting ครับโดยหลักๆ จะมีให้ปรับ 2 เรื่อง คือ 1) Summarized by และ 2) Show Value As

    Summarized by

    เป็นการสั่งว่าจะให้ Excel ทำการสรุปทางสถิติด้วย Function อะไร โดยมีฟังก์ชั่นให้เลือกดังรูป โดยที่มีฟังก์ชั่นสรุปผลที่หลากหลาย เช่น  Sum / Count (นับทุกอย่างที่ไม่ว่าง เหมือนฟังก์ชั่น COUNTA) / Count Number (นับเฉพาะเลข เหมือนฟังก์ชั่น COUNT) / Average / Max / Min / Product / StdDev / StdDevp / Var / Varp

    Pivot-Summarized-by
    Pivot-Summarized-by-example

     Show Value As

    เป็นการเอาค่าที่คำนวณได้จาก Summarized by มาคิดต่อ ว่าจะให้แสดงสัมพันธ์กับช่องอื่นของ Pivot ยังไง ปกติจะเป็น No Calculation แปลว่าจะแสดงค่าออกมาตรงๆ ไม่มีการคำนวณต่อ

    Pivot-Show-value-as

    แต่ถ้าเราลองไปเลือกตัวอื่น เช่น % of row มันก็จะเทียบ Grand Total ของแต่ละแถวให้เป็น 100% แล้วดูว่าค่าในช่องนั้นๆ เป็นกี่ % ของค่ารวมระดับแถว เป็นต้น

    ซึ่งบางหัวข้ออาจต้องเลือก Based Field หรือ Based Item ซึ่งหมายถึงค่าที่มันจะใช้อ้างอิงในการคำนวณว่าจะให้ไปอ้างอิงที่ Field ไหน Item ไหน  ซึ่งผมแนะนำให้ลองเปลี่ยนค่าเล่นดูครับ แล้วจะเข้าใจว่าแต่ละอันต่างกันอย่างไร ซึ่งผมลองเปลี่ยนค่าเล่นให้ดูเป็นตัวอย่างแล้วตามภาพด้านล่าง

    Show-value-as

    การเปลี่ยนทิศทางการสรุปข้อมูล

    กรณีที่มี VALUE ตั้งแต่ 2 Field ขึ้นไป เราสามารถกำหนดได้ว่าจะให้วางข้อมูลแต่ละ Field เรียงกันในแนวนอน หรือ แนวตั้ง โดยการลากคำว่า Ʃ Values ว่าจะให้แสดงอยู่ที่ Column หรือ Row Labels

    อยู่ที่ Column Labels

    Pivot-Value-Position2
    Pivot-Value-Position

    อยู่ที่ Row Labels

    Pivot-Value-Position3
    Pivot-Value-Position4

    Tips : เทคนิคการลบข้อมูลเก่าที่ค้างอยู่ใน Pivot Table

    เวลาที่เราทำ PivotTable เสร็จแล้ว แต่ภายหลังมีการเปลี่ยนแปลงข้อมูลใน Source Data อาจทำให้มีเหตุการณ์ที่มี Item ที่เคยอยู่ใน Source Data เก่าตกค้างใน Drop Down List ใน Row Label, Column Label, หรือ Filter ได้

    pivot-old-item

    ใน Excel ตั้งแต่ Version 2007 ขึ้นไป สามารถแก้ไขเหตุการณ์ดังกล่าวได้ง่ายมากๆ โดย

    • คลิ๊กขวาที่ตาราง Pivot
    • เลือก PivotTable options à เลือก Data tab
    • ในหมวด Retain Itemsเลือก None
    • OK แล้วกด Refresh ตาราง Pivot อีกครั้ง
      pivot-old-item2

    ใครอยากเก่ง Pivot Table มากขึ้นไปอีก ขอเชิญอ่านตอนที่ 3 ครับ

  • การใช้ Table ตารางที่จะทำให้ชีวิตคุณง่ายขึ้นมาก

    การใช้ Table ตารางที่จะทำให้ชีวิตคุณง่ายขึ้นมาก

    Table คืออะไร?

    Table เป็นเครื่องมือที่ออกแบบมาใช้กับการทำงานกับข้อมูลในลักษณะ Database โดยเฉพาะ ซึ่งทำให้ชีวิตของคุณง่ายขึ้นมาก เพราะมันได้รวบรวมเครื่องมือและความสามารถหลายๆ อย่างเอาไว้มากมาย เช่น การขยายขอบเขตข้อมูลอัตโนมัติ (Dynamic Range), การใส่สูตรอัตโนมัติ, การ Filter & Sort, การใส่รูปแบบสีสลับแถวเพื่อให้สังเกตข้อมูลที่อยู่บรรทัดเดียวกันง่ายขึ้น, การสรุปข้อมูลแบบอัตโนมัติ เป็นต้น  ซึ่งเดี๋ยวจะอธิบายต่อไป

    โดยความสามารถที่เพิ่มมานี้ต้องแลกกับ Layout ที่ไม่ Flexible เหมือนกับ Range ปกติ เพราะต้องอยู่ในรูปแบบตารางที่มีหัวตารางชัดเจนเท่านั้น

    การสร้าง Table

    เราสามารถสร้าง Table ได้ด้วยวิธีดังนี้

    1. เลือกช่องของข้อมูลที่ต้องการ
    2. กด [Insert] –> Tables –> Table (Ctrl+T) หรือ
      กด [Home] –> Styles –> Format as Table ก็ได้
    ก่อนจะทำเป็น Table หลังทำเป็น Table
     table-pre  table-1

    การตั้งชื่อให้ Table

    สามารถตั้งชื่อ Table (เพื่อเอาไว้อ้างอิงง่ายๆ ในอนาคต) ได้โดย
    คลิ๊กที่ Table แล้ว [[Design]] –> Properties –> Table Name: แล้วกรอกเลย (ปกติจะเป็น Table1)

    ข้อดีของการใช้ Table

    รูปแบบสวยงาม

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

    always-header

    รวมเครื่องมือ Filter และ Sort ไว้ให้โดยอัตโนมัติ

    ไม่ต้องมานั่งใส่ Auto Filter เองให้เมื่อย เจ้า Table ทำให้เองครับ

    filter

    เลือกข้อมูลได้ง่าย

    สามารถเลือกข้อมูลทั้งแถว (ใน Table เรียกว่า Record) หรือทั้งคอลัมน์ (ใน Table เรียกว่า Field) ก็สามารถเลือกได้อย่างง่ายดาย วิธีการคือ เลื่อนเม้าไปที่ขอบ Table (ขอบบน เลือก Field / ขอบซ้าย เลือก Record) จะปรากฏเป็นรูปลูกศรสีดำทึบขึ้นมาให้กดได้อย่างสบายๆ ครับ

    สามารถกด Tab เพื่อเลื่อน Cursor ไปด้านขวาเรื่อยๆ พอหมดคอลัมน์ใน Record นั้น ก็จะเลื่อนไปยังคอลัมน์แรกของ Record ใหม่ให้เองได้ด้วยครับ

    เพิ่มข้อมูลได้ง่าย

    เวลาจะเพิ่มข้อมูล เพียงกดเลือกไปที่แถวที่อยู่ใต้ Table/หรือทางขวาของ Table แล้วพิมพ์บางอย่างลงไป  เมื่อใส่ข้อมูลเสร็จ Table มันจะขยายมารองรับให้เอง หรือจะใช้วิธีกดปุ่ม Tab หลังจาก Cursor อยู่ช่องขวาล่างสุดก็ได้ครับ

    tab

    ขยายช่วงการอ้างอิงให้โดยอัตโนมัติ (Dynamic Range)

    ข้อนี้เป็นคุณสมบัติที่ผมว่าเจ๋งที่สุดของ Table เพราะมันทำให้เราสบายขึ้นมากเวลาจะอ้างอิงข้อมูลมาที่ตารางที่ต้องการ โดยไม่ต้องกลัวว่าจะมีข้อมูลเพิ่มขึ้นหรือลดลง

    เช่น ตอนแรกตารางสมมติว่าชื่อ Table1 คลุมพื้นที่แค่ A1:E10 ซึ่งคุณใช้ชื่อ Table1 ไปอ้างอิงในสูตรต่างๆ เช่น Vlookup หรือเอาไปใช้ในเครื่องมืออื่น เช่น PivotTable ไปแล้ว แต่ต่อมามีการเพิ่มข้อมูล ทำให้ตารางใหญ่ขึ้นเป็น A1:H20 คุณก็ไม่ต้องไปแก้ Reference ในสูตร หรือในเครื่องมือที่สร้างไว้แล้วอีกเลย พูดง่ายๆ ว่าข้อมูลจะเพิ่มจะลดก็ไม่กลัว สะดวกมากๆ ครับ

    สรุปข้อมูลให้โดยอัตโนมัติ

    ต้องการ SUM, AVERAGE หรือจะ Function อะไรก็กำหนดได้ทั้งนั้น โดยจะสรุปอยู่ท้ายตารางโดยอัตโนมัติ แม้จะมีข้อมูลใหม่เพิ่มก็จะยังอยู่ใต้สุดของ Table เสมอ เพียงแค่ติ๊กเลือกให้แสดง Total Row

    total-row

    จากนั้นเลือกวิธีสรุปที่ต้องการในแต่ละคอลัมน์จาก Dropdown

    total-row-2

    ใส่สูตรให้โดยอัตโนมัติ

    ใส่สูตรแค่ทีเดียว เมื่อใส่ข้อมูลบรรทัดถัดไป สูตรจะถูก Copy ลงมาให้โดยอัตโนมัติด้วยสูตรเดียวกัน แต่จะเป็นวิธีอ้างอิง Reference อีกแบบ ซึ่งจูดในส่วนถัดไปอีกที

    auto-copy-formula

     

    การใส่สูตรและการอ้างอิงข้อมูลใน Table

    การใส่สูตรใน Table สามารถเลือกใส่สูตรในอีกรูปแบบหนึ่ง เรียกว่า Structure Reference ได้ (เรายังสามารถใส่สูตรแบบ Cell Reference ปกติที่เราศึกษามาก่อนหน้านี้ได้อยู่ แต่ต้องพิมพ์เอง)  ซึ่งการเขียนสูตรแบบ Structure Reference มีข้อดีคือ ทำให้อ่านสูตรแล้วเข้าใจได้ง่าย เนื่องจากใช้หัวตารางเป็นตัวอ้างอิง และสะดวกในการอ้างอิงแบบ Dynamic Range ซึ่งเป็นจุดเด่นของ Table ด้วย

    การอ้างอิงแบบเต็มรูปแบบ

    สิ่งที่ผมกำลังจะบอกต่อไปนี้ ไม่ต้องจำ เพราะคุณสามารถ กด = แล้วจิ้มสิ่งที่ต้องการได้เลย ซึ่งเป็นเทคนิคเดียวกับตอนที่เรียนรู้เรื่อง Cell Reference ปกติในบทแรกๆ ครับ

    TableName[[#Column Specifier],[Column Header]] โดยที่แต่ละส่วนมีความหมายดังนี้

    • TableName คือ ชื่อตาราง
    • [#Column Specifier]คือตัวที่ระบุว่าจะเอาส่วนไหนของTableกลับมา โดยเลือกได้
      • [#Headers] หมายถึง เฉพาะส่วนของ Column Header
      • [#Data] หมายถึง ตัวข้อมูลจริงๆ
      • [#Totals] หมายถึง ส่วนของ Total Row ที่ทำหน้าที่สรุปข้อมูล
      • [#All] หมายถึง ส่วนทั้งหมด คือ ทั้ง Header, Data, และ Totals รวมกัน
      • [#This Row] หมายถึงการอ้างอิงสิ่งที่อยู่ในแถวเดียวกัน
    • [Column Header] คือ ชื่อของ Column ที่เราต้องการจะอ้างอิง

    การลดรูปการอ้างอิง

    • เราสามารถลดรูป โดยไม่ระบุ [#Column Specifier] ได้ ซึ่งจะหมายถึงการอ้างอิงไปที่ [#Data] โดยปริยาย ซึ่งจะทำให้เหลือเพียง TableName[Column Header] เท่านั้น
    • นอกจากนี้ใน Excel Version 2010 ขึ้นไป เราสามารถลดรูป [#This Row] เหลือเพียงเครื่องหมาย @ ซึ่งทำให้รูปแบบเหลือเพียง TableName [@Column Header] เท่านั้น
    • ยิ่งถ้าอ้างอิงในตารางเดียวกันก็จะเหลือแค่ [@Column Header] เท่านั้นเอง  

    ตัวอย่าง

    Table Name : SalesTable

    ให้สังเกตดูเส้นประ ว่ากำลังอ้างอิงส่วนไหนอยู่นะครับ

    อ้างอิง Data ทั้งหมด(กดเลือกที่มุมซ้ายบนของ Table ได้เลย)

    alldata

    อ้างอิง Table ทั้งหมด (ต้องกดเลือก All Data แล้วพิมพ์เพิ่มเอา)

    อาจไว้ใช้ในสูตรพวก VLOOKUP หรือ INDEX ในส่วนของตารางอ้างอิงได้

    alltable

    อ้างอิง Header ทั้งหมด

    อาจเอาไว้ใช้ในสูตรพวก MATCH ในสูตรของ Lookup_array ได้

    all-header

    อ้างอิง Header เดียว

    one-header

    อ้างอิง Data ในคอลัมน์เดียว

    one-data

    อ้างอิง Total ในคอลัมน์เดียว

    one-total

    อ้างอิง Data ในหลายๆ คอลัมน์ต่อเนื่องกัน

    multiple-data

    อ้างอิง Data ในหลายๆ คอลัมน์ไม่ต่อเนื่องกัน

    multiple-data2

    อ้างอิง Data จากคอลัมน์อื่นในแถวเดียวกัน

    มักจะใช้ในการเขียนสูตรใน Table เอง อย่างที่พูดไว้ตอนแรกว่าใส่สูตรแค่บรรทัดเดียว แล้ว Table จะใช้สูตรนั้นกับทุกๆ บรรทัดเองโดยอัตโนมัติ

    same-row

     

    ข้อจำกัดของการใช้ Table

    เราไม่สามารถทำการ Share Workbook ที่มีการใช้ Table ได้ ซึ่งเรื่องการ Share Workbook จะมีอธิบายภายหลังครับ

    การแปลง Table กลับเป็น Range ปกติ

    ในบางสถานการณ์คุณอาจรู้สึกไม่ชอบเจ้า Table นี่เท่าไหร่ เพราะไม่ Flexible ในการใส่สูตร หรือแก้ไขข้อมูลมากนัก ไม่ต้องห่วงครับ! คุณสามารถแปลงมันกลับเป็น Range ปกติแบบดั้งเดิมได้

    ให้ไปที่คลิ๊กที่ Table แล้ว [[Design]] –> Tools –> Convert to Range เท่านี้ก็เป็นอันเสร็จเรียบร้อย

  • การใช้ Advanced Filter

    การใช้ Advanced Filter

    co-create
    บทความนี้คือส่วนหนึ่งของโครงการ ร่วมสร้าง “หนังสือคู่มือ Excel ที่เจ๋งที่สุด” ใครที่มี comment เพื่อแนะนำ ปรับปรุงหนังสือได้ คุณจะได้เครดิตในฐานะผู้ร่วมเขียน ลงในหนังสือที่จะพิมพ์จริงๆ ด้วย! อ่านรายละเอียด และดูสารบัญหนังสือ คลิ๊กที่นี่


    Advanced Filter เป็นการกรองข้อมูลชั้นสูง ซึ่งมีความยืดหยุ่นในการกรองข้อมูลมากกว่า Filter แบบปกติ โดยเราสามารถกรองได้ทีละหลายๆ เงื่อนไขพร้อมๆ กัน นอกจากนี้ยังสามารถจัดเรียงคอลัมน์ใหม่ได้ตามต้องการ และตัดข้อมูลที่ซ้ำกันออกได้โดยอัตโนมัติด้วย

    องค์ประกอบสำคัญมีอยู่ 3 ส่วน คือ

    1. ข้อมูลต้นฉบับ หรือ List Range 2.ข้อมูลที่เป็นเงื่อนไข หรือ Criteria Range, 3.ข้อมูลหลังถูก Filter

    advanced-filter-01-add

    วิธีการใช้ Advanced Filter ให้ไปที่ [Data] –> Sort & Filter –> Advanced จากนั้นจะมีเมนูดังนี้

    • Action สามารถเลือก ได้2แบบคือ
      • Filter the list, in-place คือให้ Filter ที Source Data เลย ซึ่งคล้ายกับการสั่ง Filter ปกติทีเราคุ้นเคย
      • Copy to another location ให้นำข้อมูลที่กรองแล้ว Copy ออกไปไว้ที่อื่น แต่มีข้อจำกัด คือ ต้องอยู่ใน Sheet เดียวกับตอนที่ Run คำสั่ง Advanced Filter
    • List Range ให้เลือก Data Source ของเรา ซึ่งสามารถอยู่ที่ไหนก็ได้
    • Criteria Rangeให้เลือกว่าเรามีเงื่อนไขการคัดกรองอย่างไร ซึ่งตรงนี้เราต้องไปสร้างตารางเงื่อนไขขึ้นมาก่อน ซึ่งจะอธิบายต่อไปว่าต้องสร้างอย่างไร
    • Copy To : ให้เลือกว่าจะให้ Copy ข้อมูลที่ถูก Filter แล้วไปไว้ที่ไหน ซึ่งจะสามารถเลือกได้ต่อเมื่อ Action ทีเลือกคือ Copy to another location เท่านั้น
    • Unique Records Onlyเอาไว้ Check หากต้องการกำจัดข้อมูลที่ซ้ำกันออกด้วย

    (more…)

  • เจาะลึกการใช้ MATCH คู่ซี้ค้นหาข้อมูลของ VLOOKUP และ INDEX

    เจาะลึกการใช้ MATCH คู่ซี้ค้นหาข้อมูลของ VLOOKUP และ INDEX

    หลังจากที่เราได้เรียนรู้การใช้งาน VLOOKUP ในบทความก่อนหน้านี้ไปแล้ว จะพบว่า เราจะต้องนั่งมองเอาเองว่าจะต้องใส่เลขอะไรใน col_index_num

    = VLOOKUP(lookup_value, table_array, col_index_num,[range_lookup])
    

    ซึ่งมันมีข้อเสียที่สำคัญ นอกเหนือจากการที่จะต้องมานั่งนับจำนวนคอลัมน์เอง ก็คือ หากมีใครไปแทรกคอลัมน์ในบริเวณ table_array ของเราล่ะก็ ผลลัพธ์ที่ได้ก็จะผิดทันที!!

    ดังนั้นจะดีกว่าหรือไม่? หากเราจะปล่อยให้ Excel เป็นคนนับจำนวนคอลัมน์เอง ซึ่งฟังก์ชัน MATCH จะมาช่วยเราเรื่องนี้นั่นเองครับ

    การใช้ MATCH เพื่อหาลำดับตำแหน่งของค่าที่เราต้องการ

    หากเราเข้าใจการทำงานของฟังก์ชั่น VLOOKUP มาก่อนแล้ว จะพบว่าฟังก์ชั่น MATCH นั้นทำงานคล้ายคลึงกันมากครับ เพราะเจ้า MATCH นี้เอาไว้หาคำที่ต้องการเหมือนกัน แต่เจ้า MATCH นี้จะส่งลำดับของผลลัพธ์คำค้นหามาให้ ว่าอยู่ลำดับที่เท่าไหร่ในแถวหรือคอลัมน์ที่กำหนด = ได้ค่ากลับมาเป็นตัวเลข

    ซึ่งกำหนดทิศทางการ MATCH ได้ 2 ทิศ คือ แนวตั้งและแนวนอน (ได้แค่แนวตั้งแบบคอลัมน์เดียว ไม่ก็แถวนอนแถวเดียว)

    match

    วิธีการใช้งาน

    =MATCH(lookup_value, lookup_array, [match_type])

    =MATCH(หาคำนี้,ว่าอยู่ลำดับที่เท่าไหร่ในแถวหรือคอลัมน์นี้,เลือกประเภทการ Match)
    สังเกตว่า Lookup_Array จะมีได้แค่มิติเดียว คือเป็นแถวเดียว หรือ คอลัมน์เดียวเท่านั้น ไม่สามารถใส่เป็นตาราง 2 มิติได้

    ประเภท MATCH แนวดิ่ง MATCH แนวนอน
    วิธีการสั่งงาน กำหนด Lookup_Array เป็นคอลัมน์เดียว กำหนด Lookup_Array เป็นแถวเดียว
    Concept การทำงาน วิ่งจากบนลงล่างdownเมื่อเจอคำที่ต้องการจะแสดงลำดับตำแหน่งกลับมา วิ่งจากซ้ายไปขวาright

    เมื่อเจอคำที่ต้องการจะแสดงลำดับตำแหน่งกลับมา

    ประเภทการ MATCH (Match Type)

    แบ่งเป็น 3 ประเภท (มีประเภทมากกว่า VLOOKUP อีกนะ) ซึ่งปกติเราก็มักจะใช้แบบ 0 ครับ

    Match Type การทำงาน หากเจอค่าที่ค้นหาหลายตัว
    0 หาค่าที่เท่ากับตัวที่กำหนดเป๊ะๆ ว่าอยู่ลำดับที่เท่าไหร่ คล้าย VLOOKUP แบบ Exact Match ในคอลัมน์หรือแถวเดียวกัน มันจะยึดที่เจออันแรกสุด
    1
    (หรือ ไม่ใส่ค่า)
    Lookup_Array ต้องเรียงน้อยไปมาก 
    มันจะหาค่าที่มากกว่า Lookup_ Value แล้วเด้งกลับ 1 ช่อง (แบบเดียวกับ VLOOKUP แบบ Approximate Match)
    มันจะยึดที่เจออันหลังสุดครับ 
    Tips : มันจะวิ่งไล่จากบนลงล่าง /  ซ้ายไปขวา จนเจอตัวที่มากกว่าค่าที่กำหนดแล้วจะเด้งกลับ 1 ช่อง
    -1 Lookup_Array ต้องเรียงมากไปน้อย
    มันจะหาค่าที่น้อยกว่า Lookup_ Value แล้วเด้งกลับ 1 ช่อง
    มันจะยึดที่เจออันหลังสุดครับ
    Tips : มันจะวิ่งไล่จากบนลงล่าง /  ซ้ายไปขวา จนเจอตัวที่มากกว่าค่าที่กำหนดแล้วจะเด้งกลับ 1 ช่อง

    แนวทางการใช้งาน

    มักใช้ร่วมกับฟังก์ชั่นอื่นเช่น ใช้กับ VLOOKUP ในส่วน Col_Index_Num ตามที่ได้อธิบายไปข้างต้น

    vlookup-match

    นอกจากนี้ยังช่วย เวลามีการแทรกคอลัมน์แล้วสูตร Col_Index_Num  ใน  VLOOKUP จะสามารถเลื่อนตามโดยอัตโนมัติ ทำให้ผลลัพธ์ไม่เพี้ยน

  • เดินทางข้ามเวลาด้วยฟังก์ชั่นกลุ่ม Date Time เพื่อจัดการข้อมูลวันที่และเวลา

    เรื่องวันที่และเวลาเป็นเรื่องพื้นฐานที่คนใช้ Excel ทั่วไปไม่รู้ว่าจริงๆ แล้วมันทำงานยังไงมากที่สุด ในบทความนี้จะมาเรียนรู้ว่าเราจัดการข้อมูลวันที่และเวลาด้วยฟังก์ชันแบบไหนบ้างครับ

    ฟังก์ชั่นเกี่ยวกับการจัดการข้อมูลวันที่

    DATE ใช้ประกอบร่าง ตัวเลขปี เลขเดือน เลขวัน ให้กลายเป็นรูปแบบของวันที่

    DATE(year, month, day) 

    เช่น หากใส่สูตรใน A1 ว่า

    =DATE(2018,11,24) => 24/11/2018 (24 พฤศจิกายน ค.ศ. 2018)

    Tips1 : สิ่งที่ต้องระวังก็คือ เราจะต้องแทนปีด้วยเลข คศ. นะครับ

    Tips2 : เราสามารถใส่ day เป็นเลขติดลบ หรือ เลขที่มากกว่า 31 วัน ได้ด้วยนะครับ วันที่มันจะเลื่อนกลายเป็นของเดือนอื่นไป และที่เจ๋งคือ ถ้าเราใส่เป็นเลข 0 มันจะกลายเป็นวันสุดท้ายของเดือนก่อนครับ !!
    => ตัวอย่าง http://www.thepexcel.com/last-day-of-month/

    ต่อไปเป็นการหา ปี เดือน วัน จากข้อมูลที่เป็นวันที่

    YEAR ใช่หาว่าเลขวันที่ที่กำหนด อยู่ในปีที่เท่าไหร่

    YEAR(serial_number)

    เช่น = YEAR(A1) จะได้เลข 2018 

    MONTH ใช่หาว่าเลขวันที่ที่กำหนด อยู่ในเดือนที่เท่าไหร่

    MONTH(serial_number)

    เช่น = MONTH(A1) จะได้เลข 11

    DAY ใช่หาว่าเลขวันที่ที่กำหนด อยู่ในวันที่เท่าไหร่

    DAY(serial_number)

    เช่น = DAY(A1) จะได้เลข 24

    EDATE ใช้เลื่อนวัน โดยบวกจำนวนเดือนเพิ่มเข้าไปในวันที่ที่กำหนด เช่น

    EDATE(start_date,months)

    ให้ C1 = 31/01/2018

    EDATE(C1,1) => 28/2/2018 (ไม่มีวันที่ 31/2/2018 จึงปรับเป็นวันสิ้นเดือนให้)

    EDATE(C1,2) => 31/3/2018

    EDATE(C1,3) => 30/4/2018 (ไม่มีวันที่ 31/4/2018 จึงปรับเป็นวันสิ้นเดือนให้)

    EDATE(C1,4) => 31/5/2018

    EDATE(C1,-1) => 31/12/2017 (ติดลบแล้วจะถือว่าย้อนเวลากลับไปในอดีต)

    การแยกข้อมูลวันที่และเวลาออกจากกัน

    เราสามารถแบ่งข้อมูล วันที่/เวลา ออกเป็นสองส่วนได้ นั่นคือ ส่วนของวันที่ และ ส่วนของเวลา

    เดินทางข้ามเวลาด้วยฟังก์ชั่นกลุ่ม Date Time เพื่อจัดการข้อมูลวันที่และเวลา 4

    ส่วนของวันที่

    วันที่คือ จำนวนเต็ม ดังนั้น เราจะใช้ฟังก์ชั่น =INT(number) มาช่วย (ให้ค่ากลับมาเป็นจำนวนเต็ม)

    ส่วนของเวลา

    เวลาคือ ทศนิยม ดังนั้นเราจะแยกส่วนของทศนิยมออกมาได้ เราต้องใช้ความรู้เรื่องของการหารเศษส่วน นั่นคือ

    อะไรก็ตาม หารด้วย 1 จำนวนเต็มจะถูกหารลงตัวหมด ดังนั้น เศษ มันคือ ทศนิยมนั่นเอง ดังนั้นเราจะหาเศษเหลือของการหารได้ด้วยฟังก์ชั่น =MOD(number,divisor) มาช่วยครับ โดยใช้ =MOD(ข้อมูลวันที่และเวลา,1)

    ซึ่ง พอเราเปลี่ยน Format ให้เหลือแต่เวลาแล้ว ก็จะมองเห็นเป็นเวลาตามที่เราต้องการครับ

    การคำนวณค่าหาวันสุดท้ายของเดือน

    การจะหาวันสุดท้ายของเดือน ถ้าคุณไม่รู้จะทำยังไง วิธีที่น่ะลองใช้ที่สุดก็คือ เอาวันที่ 1 ของเดือนถัดไป ไปลบออก 1 วันจริงมั๊ยครับ เพราะเรารู้มาก่อนหน้านี้แล้วว่า Excel จะเรียงวันที่แต่ละวันต่อๆ กันไปเรื่อยๆ แต่ผมมีอีกวิธีอื่นมานำเสนอครับ มี 2 วิธี คือ

    วิธีที่1 ใช้ฟังก์ชั่น =EOMONTH(start_date,[months]) โดยใส่วันที่ที่ต้องการลงไปในช่อง start_date แต่ถ้าขี้เกียจจำฟังก์ชั่นเยอะแยะ จริงๆ เราใช้อีกวิธีก็ได้ครับ นั่นคือ

    วิธีที่ 2 ใส่ day ในฟังก์ชั่น =DATE(year,month,day) เป็นเลข 0 โดยใส่ month เป็นเดือนถัดไป เช่น ผมใส่เป็น =DATE(2014,3,0) มันจะได้ว่า 28/2/2014 ครับ ซึ่งจะเป็นวันสุดท้ายของเดือนก่อนหน้านั่นเอง เราสามารถเอาตรงนี้มาประยุกต์ใช้หาวันสุดท้ายของแต่ละเดือนได้ครับ

    การหาวันที่ใน xx เดือน ก่อนหน้า/ถัดไป

    ในหลายๆ สถานการณ์ คุณอาจจำเป็นต้องคำนวณหาว่า อีก 6 เดือนข้างหน้า นับจากวันปัจจุบันจะกลายเป็นวันที่เท่าไหร่ ซึ่งเราสามารถทำได้หลายวิธีมากครับ ผมจะขอยกตัวอย่าง 2 วิธี คือ

    1. ใช้ฟังก์ชั่น DATEเหมือนเดิม

    ถ้าเราใช้ DATE เราสามารถหาวันที่ ใน 6 เดือนข้างหน้าได้โดยการบวกเลข 6 ลงไปในช่อง month ได้เลยครับ เช่น ผมปรับจากตัวอย่างที่แล้ว เป็น =DATE(2014,12+6,13) = 13/6/2015

    2. ใช้ EDATE มาช่วย

    ถ้าเราใช้ EDATE จะมีวิธีกรอกดังนี้ครับ =EDATE(start_date,months) คือให้เราใส่วันที่ลงไปใน start_date และใส่จำนวนเดือนที่ต้องการให้เลื่อนเวลาไปในช่อง months เช่น ถ้าผมเลื่อนจาก 13 ธันวาแบบข้างบน สมมติผมใส่วันที่ 13/12/2014 ไว้ในช่อง A1 ผมจะต้องเขียนเพื่อคำนวณหาวันในอีก 6 เดือนถัดไปว่า =EDATE(A1,6) = 13/6/2015 เช่นกัน

    ที่นี้มาลองดูกันครับว่าถ้าเราเริ่มที่ 31 ธันวาคม 2557 บวกไปอีก 2เดือนเพื่อให้เป็นกุมภาพันธ์ที่มีแค่ 28 วันมันจะเป็นยังไง?

    ถ้าเราใช้ DATE ใส่ว่า =DATE(2014,12+2,31) จะได้ออกมาเป็น 3/3/2015 นั่นคือ 3 มีนาคม 2558 เพราะว่าวันที่ 31 มันเลยวันที่ 28 ไปอีก 3 วัน นั่นเอง

    แต่ถ้าเราเปลี่ยนมาใช้ EDATE แทน (ผมใส่ 31/12/2014 ไว้ในช่อง A1) จะได้ว่า =EDATE(A1,2)= 28/2/2015 ซึ่งได้ 28 ธันวาคม โดยไม่เลื่อนวันให้เหมือนการใช้ DATE

    ตรงนี้ไม่ได้บอกว่าฟังก์ชั่นไหนทำงานถูกหรือผิด เพราะมันแล้วแต่สถานการณ์ครับว่าเราต้องการผลลัพธ์แบบไหน อันนี้ต้องนำไปเลือกใช้ให้ถูกเองครับ

    การคำนวณเกี่ยวกับวันทำงาน (Working Day)

    อันนี้เป็นการทำงานยอดฮิต ที่หลายคนต้องใช้บ่อยๆ ซึ่งปัญหาหลักๆ ที่พบเจอมี 2 กรณีดังนี้

    กรณี 1 : รู้วันเริ่มและวันสิ้นสุด อยากรู้จำนวนวันทำงานระหว่างสองวันนั้น –> ใช้ NETWORKDAYS

    กรณี 2 : รู้วันเริ่ม (หรือวันสิ้นสุด) แล้วรู้จำนวนวันที่ต้องใช้ แต่อยากรู้วันที่ปลายทาง –> WORKDAY

    ซึ่งจะตอบโจทย์ทั้งสองกรณีข้างล่างนี้ได้ เราจะต้องเตรียมข้อมูลวันหยุดพิเศษเสียก่อน Excel จึงจะรู้ว่าวันไหนเป็นวันทำงานบ้าง โดยมันจะดูว่า ถ้าเป็นวันเสาร์, อาทิตย์, หรือวันหยุดพิเศษ จะถือว่าไม่ใช่วันทำงานนั่นเอง และเพื่อเป็นการอำนวยความสะดวกให้ทุกท่าน ผมได้เตรียมตารางข้อมูลวันหยุดพิเศษในแต่ละปีให้แล้ว ไปดาวน์โหลดได้ที่ https://www.thepexcel.com/holiday-excel-10-years/ ได้เลย ฟรีๆ ครับ

    วิธีทำ กรณีที่ 1

    ใช้สูตร =NETWORKDAYS(start_date,end_date,holidays) มาช่วยครับ โดยที่สูตร NETWORKDAYS จะนับทั้งวันเริ่มและวันจบด้วย แต่จะไม่นับวันเสาร์-อาทิตย์ และวันที่ระบุใน Holidays  ซึ่งเราต้องใส่ข้อมูลวันหยุดพิเศษลงไปใน argument ที่ชื่อว่า holidays นี่แหละครับ

    ตัวอย่าง

    • วันเริ่ม = 2 มีนาคม พ.ศ. 2558 ซึ่งผมพิมพ์ไว้ในช่อง A1 ว่า 2/3/2015
    • วันสิ้นสุด = 9 มีนาคม พ.ศ. 2558 ซึ่งผมพิมพ์ไว้ในช่อง A2 ว่า 9/3/2015
    • สมมติว่าผมเตรียมข้อมูลวันหยุดพิเศษไว้แล้ว ในช่อง H1:H100 ซึ่งในระหว่าง 2 วันข้างต้น มีวันที่ 4/3/2015 เป็นวันหยุดพิเศษเนื่องจากเป็นวันมาฆบูชาครับ

    หาจำนวนวันทำงานในช่อง A4 =NETWORKDAYS(A1,A2, H1:H100) จะได้ว่า = 5 วัน เพราะว่า

    ปฏิทินวันทำงาน (ที่นับ)วันที่ไม่นับ
    networkdays
    • 2/3/2015 (นับวันเริ่ม)
    • 3/3/2015
    • 5/3/2015
    • 6/3/2015
    • 9/3/2015 (นับวันจบ)
    • 4/3/2015 เพราะอยู่ใน Holidays
    • 7/3/2015 เพราะเป็นวันเสาร์
    • 8/3/2015 เพราะเป็นวันอาทิตย์

    วิธีทำ กรณีที่ 2

    ในทางกลับกัน หากผมเริ่มที่ 2 มีนาคม พ.ศ. 2558  ซึ่งผมพิมพ์ไว้ในช่อง A1 ว่า 2/3/2015

    แล้วผมมีวันทำงานเป็น 5 วัน ผมก็จะหาวันสิ้นสุดได้จาก =WORKDAY(start_date,days,holidays)
    =WORKDAY(A1,A4,H1:H100) = 10/3/2015 ซึ่งไม่ตรงกับตัวอย่างข้างบนซะงั้น!! สาเหตุเป็นเพราะว่าสูตร WORKDAY มันไม่นับจุดเริ่มต้นนั่นเอง (ต่างจาก NETWORKDAYS) ตรงนี้เป็นจุดที่ต้องสังเกตดีๆ ครับ 

  • จัดการข้อความให้อยู่หมัด ด้วยฟังก์ชั่นกลุ่ม TEXT

    จัดการข้อความให้อยู่หมัด ด้วยฟังก์ชั่นกลุ่ม TEXT

    co-create
    บทความนี้คือส่วนหนึ่งของโครงการ ร่วมสร้าง “หนังสือคู่มือ Excel ที่เจ๋งที่สุด” ใครที่มี comment เพื่อแนะนำ ปรับปรุงหนังสือได้ คุณจะได้เครดิตในฐานะผู้ร่วมเขียน ลงในหนังสือที่จะพิมพ์จริงๆ ด้วย! อ่านรายละเอียด และดูสารบัญหนังสือ คลิ๊กที่นี่


    ก่อนจะนำข้อมูลไปสรุปผลในบทต่อๆ ไปได้ คุณอาจจำเป็นต้องจัดการข้อมูล ให้ออกมาอยู่ในรูปแบบที่คุณต้องการก่อน เพื่อให้สามารถสรุปข้อมูลได้มีประสิทธิภาพมากขึ้น เช่น แยกชื่อและนามสกุลออกจากกัน หรือมีการแปลงคำบางอย่าง เช่น แปลงตัวพิมพ์เล็กพิมพ์ใหญ่

    หนึ่งในฟังก์ชั่นที่มีบทบาทในการแปลงข้อมูลหรือจัดการข้อมูลให้เรียบร้อยมากขึ้นมากที่สุดตัวหนึ่งก็คือ ฟังก์ชั่นกลุ่ม TEXT นั่นเอง ซึ่งคุณจะต้องรู้จักฟังก์ชั่นพื้นฐานเหล่านี้ก่อนครับ คุณอาจต้องใช้มันผสมผสานกันพอสมควรเลยล่ะ

    สรุปฟังก์ชั่นกลุ่ม Text ที่ใช้บ่อย

    LEN

    นับจำนวนตัวอักษร (นับทั้งอักษร ช่องว่าง สระ และวรรณยุกต์ด้วย)

    len

    =LEN(text)
    =LEN(ข้อความที่จะนับอักษร)
    ผลลัพธ์ : เป็น Number
    ตัวอย่าง : =LEN(“มดแดง”) =5

    LEFT

    ตัดคำจากทางซ้าย (ระบุได้ว่าตัดกี่ตัวอักษร)

    left

    =LEFT(text,[num_chars])
    =LEFT(ข้อความต้นฉบับ, [จำนวนอักษรที่จะตัด])
    ผลลัพธ์ : เป็น Text
    ตัวอย่าง : =LEFT(“มดแดง”,2) =“มด”

    MID

    ตัดคำโดยระบุได้ว่าเริ่มตัดที่ตำแหน่งไหน เป็นจำนวนกี่ตัวอักษร

    mid-fix

    =MID(text,start_num,num_chars)
    =MID(ข้อความต้นฉบับ,อักษรที่เริ่มตัด,จำนวนอักษรที่จะตัด)
    ผลลัพธ์ : เป็น Text
    ตัวอย่าง : =MID(“มดแดง”,3,2) =“แด”

    RIGHT

    ตัดคำจากทางขวา (ระบุได้ว่าตัดกี่ตัวอักษร)

    right
    =RIGHT(text, [num_chars])
    =RIGHT(ข้อความต้นฉบับ, [จำนวนอักษรที่จะตัด])
    ผลลัพธ์ : เป็น Text
    ตัวอย่าง : =RIGHT(“มดแดง”,2) =“ดง”

    TRIM

    ตัดช่องว่างส่วนเกินออก (ลบช่องว่างที่อยู่หน้า หลัง รวมถึงช่องว่างตรงกลางที่เกิน 1 เคาะ)

    trim
    =TRIM(text)
    =TRIM(ข้อความที่จะตัด)
    ผลลัพธ์ : เป็น Text
    ตัวอย่าง : =TRIM(”  inw  excel “) =”inw excel” (เหลือช่องว่างกลาง 1 space)

    FIND 

    ค้นหาคำที่ต้องการ ว่าอยู่ตำแหน่งที่เท่าไหร่ของข้อความที่กำหนด (สนใจตัวพิพม์เล็กพิมพ์ใหญ่) ระบุได้ว่าให้เริ่มหาตั้งแต่อักษรที่เท่าไหร่

    find
    =FIND(find_text, within_text, [start_num])
    =FIND(ส่วนของคำที่ต้องการหา, หาในคำไหน, [ตำแหน่งที่เริ่มหา])
    ผลลัพธ์ : เป็น Number
    ตัวอย่าง : =FIND(“Excel”,”inwexcel is Excellent”) =13

    SEARCH

    ค้นหาคำที่ต้องการ ว่าอยู่ตำแหน่งที่เท่าไหร่ของข้อความที่กำหนด โดยใช้การหาแบบ Wildcard (ไม่สนใจตัวพิพม์เล็กพิมพ์ใหญ่) ระบุได้ว่าให้เริ่มหาตั้งแต่อักษรที่เท่าไหร่

    search
    =SEARCH(find_text,within_text,[start_num])
    =SEARCH(ส่วนของคำที่ต้องการหา, หาในคำไหน, [ตำแหน่งที่เริ่มหา])
    ผลลัพธ์ : เป็น Number
    ตัวอย่าง : =SEARCH(“Excel”,”inwexcel is Excellent”) =4

    SUBSTITUTE

    แทนที่คำที่ต้องการด้วยอีกคำหนึ่ง ใช้เมื่อรู้คำที่จะถูกแทนที่

    substitute
    =SUBSTITUTE(text, old_text, new_text, [instance_num])
    =SUBSTITUTE(คำที่ต้องการแทนที่, ส่วนของคำเดิมที่จะถูกแทนที่, ส่วนของคำใหม่ที่จะมาแทนที่, [เจาะจงอันที่ถูกแทนที่ได้])
    ผลลัพธ์ : เป็น Text
    ตัวอย่าง : =SUBSTITUTE(“ผม like มาก”,”like”,”ชอบ”) = “ผม ชอบ มาก”

    REPLACE

    แทนที่ตำแหน่งที่ต้องการด้วยอีกคำหนึ่ง ใช้เมื่อรู้ตำแหน่งและจำนวนตัวอักษรที่จะถูกแทนที่

    replace
    =REPLACE(old_text, start_num, num_chars, new_text)
    =REPLACE(คำที่ต้องการแทนที่, ตำแหน่งเริ่มที่จะแทนที่, จำนวนอักษรที่จะแทนที่, คำใหม่ที่จะมาแทนที่)
    ผลลัพธ์ : เป็น Text
    ตัวอย่าง : =REPLACE(“081-234-5678”,5,3, “ไม่บอก”) = “081-ไม่บอก-5678”

    TEXT

    เปลี่ยนรูปแบบ Number Format โดยใช้สูตร

    text
    =TEXT(value, format_text)
    ในช่อง format_text ให้ใส่รูปแบบคล้ายการทำ Custom Format ซึ่งจะอธิบายต่อไปในบทหลัง
    ผลลัพธ์ : เป็น Text
    ตัวอย่าง : =TEXT(1234.5678,”0.00″)= “1234.57”

    UPPER

    แปลงข้อความให้กลายเป็นตัวพิมพ์ใหญ่ทั้งหมด

    upper
    = UPPER(text)
    ผลลัพธ์ : เป็น Text
    ตัวอย่าง : =UPPER(“mOnKey”)= “MONKEY”

    LOWER

    แปลงข้อความให้กลายเป็นตัวพิมพ์เล็กทั้งหมด

    lower
    = LOWER(text)
    ผลลัพธ์ : เป็น Text
    ตัวอย่าง : =LOWER(“mOnKey”)= “monkey”

    PROPER

    แปลงข้อความแต่ละคำให้ขึ้นต้นด้วยตัวพิมพ์ใหญ่ นอกนั้นตัวพิมพ์เล็กทั้งหมด

    proper
    = PROPER(text)
    ผลลัพธ์ : เป็น Text
    ตัวอย่าง : =PROPER(“mOnKey”)= “Monkey”

    (more…)

  • การจัดเรียง และ กรองข้อมูล (Sort & Filter)

    การจัดเรียง และ กรองข้อมูล (Sort & Filter)

    การเรียงข้อมูล (Sort)   และ การกรองข้อมูล (Filter) เป็นทักษะพื้นฐานของการวิเคราะห์ข้อมูล ดังนั้นเราควรจะทำทั้งสองเรื่องนี้ได้อย่างคล่องแคล่วครับ ซึ่งปกติแล้ว เราควรจะทำการ Sort ข้อมูลก่อนที่จะใช้ Filter ครับ แต่เราสามารถทำการ Sort ในเครื่องมือ Filter ได้ด้วย ผมเลยชอบใช้ Filter มากกว่า สะดวกมาก

    การ Sort

    การ Sort หรือการเรียงข้อมูลช่วยให้เราเห็นภาพข้อมูลในลักษณะที่เป็นระเบียบเรียบร้อยมากขึ้น รวมถึงทำให้เราสังเกตเห็นแนวโน้มหรือความผิดปกติได้ง่ายขึ้นด้วย ดังนั้นการ Sort เป็นสิ่งทีเราควรทำเป็นอันดับแรกๆ เมื่อได้ข้อมูลมาเป็นลักษณะตาราง โดยเฉพาะตารางที่มีจำนวนข้อมูลเยอะๆ เป็นต้น

    เครื่องมือในการ Sort ข้อมูลนั้น  แรกสุดควรเตรียมข้อมูลให้อยู่ในลักษณะ Database ซะก่อนโดยที่เราสามารถกดใช้เครื่องมือ Sort ซึ่งเลือกได้ 2 ที่ คือ

    1. ที่ [Home] –> Editing –> Sort & Filter –> เลือกการ Sort ที่ต้องการ
    2. ที่ [Data] –> Sort & Filter –> เลือกการ Sort ที่ต้องการ

    โดยการ Sort ข้อมูลมีอยู่ 2 ประเภทใหญ่ๆ คือ

    ต้องการ Sort คอลัมน์เดียว

    แบบนี้เป็นแบบ Basic สุด คือ ไม่สนใจว่าคอลัมน์อื่นจะเรียงยังไง ซึ่งเทคนิคนี้สามารถใช้ปุ่มสี่เหลี่ยม Filter ช่วยในการ Sort ได้ (อย่างที่บอกไปแล้วตอนต้นว่าเครื่องมือ Filter มัน Sort ได้ด้วย) ซึ่งการ Filter นั้นเลือกได้ 2 ที่ คือ

    1. ที่ [Home] –> Editing –> Sort & Filter –> Filter
    2. ที่ [Data] –> Sort & Filter –> Filter
      • ถ้าข้อมูลเป็น Text จะมีให้เลือก Sort A->Z และในทิศกลับกัน
      • ถ้าข้อมูลเป็น Number จะมีให้เลือก Smallest to Largest และในทิศกลับกัน

    การ Sort ตรวจหาสิ่งผิดปกติ

    หากคุณ Import Data มาใหม่ๆ ผมแนะนำให้ลองกด Sort ในช่องสำคัญๆ ที่คิดว่าจะต้องมีค่าบางอย่างตามที่เราต้องการ เช่น วันที่ ต้องอยู่ในช่วงวันที่เรากำหนด ไม่ขาดไม่เกิน หรือ ยอดขายไม่ควรมีเลขแปลกๆ ที่มากเกินไป น้อยเกินไป หรือมีข้อมูลขยะปนอยู่

    ถ้า Sort แล้วเจอข้อมูลแปลกๆ ก็ควรที่จะกลับไปตรวจสอบแล้วจัดการข้อมูลตั้งแต่ต้นตอว่าเกิดจากอะไร เพราะหากไม่ตรวจให้ดีก่อน คุณอาจจะทำงานแบบสูญเปล่าไปอีกหลายชั่วโมงเลยก็ได้ (Garbage in, Garbage Out)

    Data ก่อน SortData หลัง Sort
    ดูเหมือนว่าข้อมูลจะปกติดีพบเห็นข้อมูลที่ผิดปกติ เช่น มีตัวอักษรในช่องยอดขาย หรือมีค่ายอดขายที่มาก/น้อยผิดปกติ
     strange-dataSort มากไปน้อยstrange-data2Sort น้อยไปมาก

     

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

    strange-data3

    ต้องการ Sort แบบเป็นลำดับขั้นหลายๆ ชั้นซ้อนกัน

    เช่น ถ้ามีคอลัมน์ A B C มีข้อมูลดังนี้

    multiple-sort-1

    แล้วผมอยากได้ผลลัพธ์สุดท้ายว่า

    • ให้เรียงรหัสพนักงานขาย (A) จากน้อยไปมาก
    • ถ้าเป็นพนักงานคนเดียวกันให้เรียงวันที่ขาย (B) จากก่อนไปหลัง
    • ถ้าสุดท้ายยังเป็นวันเดียวกันอีก ให้เรียงยอดขายแต่ละรายการ (C) จากยอดขายมากไปน้อย

    ใช้เครื่องมือ Sort บน Ribbon

    วิธีนี้เป็นการใช้ Tool สำเร็จรูปมาช่วย ให้ไปที่ [Data] –> Sort & Filter –> Sort โดยที่แต่ละ Level ที่จะ Sort เราจะต้องเลือกว่าจะเป็น Sort by คอลัมน์อะไร เรียงโดยอะไร (มักจะเป็น Value) และเรียงจากน้อยไปมากหรือมากไปน้อย โดยที่สามารถกด Add Level เพื่อเพิ่มลำดับการ Sort ได้

    แต่วิธีการใช้เครื่องมือนี้ Level ที่อยู่ระดับข้างบน จะถือว่าเป็นคอลัมน์หลัก นั่นคือ เราต้อง Add Level จากบนลงล่าง ตามรูป

    multiple-sort-3

    ซึ่งจะเห็นว่าลำดับการเรียงจะต้องทำตรงกันข้ามกับวิธีใช้ปุ่ม Filter นะครับ

    เมื่อเรียงไปมาแล้ว จะยกเลิกการเรียง ให้กลับเรียงแบบตอนแรกยังไง?

    การ Sort นั้นมักเปิดปัญหาอย่างหนึ่งที่คนใช้งานทั่วๆ ไปมักจะเจอกัน นั่นก็คือ พอเรียงข้อมูลไปแล้ว อยากจะให้กลับมาเรียงแบบตอนแรกสุด ก็ทำไม่ได้แล้ว ซึ่งต่างจากการทำ Filter ที่กำลังจะพูดถึง เพราะ Filter กรองข้อมูลแล้ว ยกเลิกการกรองกลับมาเป็นแบบเดิมได้

    เทคนิคที่จะช่วยให้ Sort กลับมาเป็นแบบเดิมได้คือ ต้องสร้างคอลัมน์เพิ่ม 1 คอลัมน์ แล้วใส่เลข Running แบบการเรียงตั้งต้นเอาไว้ก่อน เพื่อที่จะได้เรียงกลับมาเหมือนเดิมได้หากต้องการภายหลัง ซึ่งคุณสามารถใช้ Fill Handle มาช่วยทำเลข Running ได้อย่างรวดเร็วครับ

    ถ้าหัวตารางมีหลายบรรทัดทำยังไง?

    ถ้าหัวตารางมีหลายบรรทัด แล้วเรากดปุ่ม Filter ไปตรงๆ ปุ่ม Filter จะไปโผล่ที่บรรทัดบนสุด ซึ่งมันจะคิดว่าบรรทัดถัดลงมาเป็น Data ซึ่งจริงๆ แล้วคือชื่อหัวตารางบรรทัดที่สองต่างหาก  แบบรูปข้างล่างนี้ผิดเห็นๆ เพราะมีคำว่า ชื่อ ซึ่งเป็นหัวตารางบรรทัดล่าง มาให้เลือกใน Filter ด้วย

    filter-wrong

    วิธีแก้คือ ให้เลือกเฉพาะ Cell ที่เป็นหัวตารางจริงๆ ของเราบรรทัดสุดท้ายก่อนจะกด Filter (ในที่นี้ ตัวอย่างของผมคือบรรทัดที่ 3 ช่อง A3:C3) หรือจะให้ง่ายก็สามารถกดเลือกทั้งบรรทัดเลยก็ได้ แล้วค่อยกด Filter จะได้ผลว่าปุ่ม Filter โผล่ออกมาที่บรรทัดที่ต้องการได้อย่างถูกต้อง

    filter-ok

    การ Filter

    บ่อยครั้งที่เรามีข้อมูลดิบจำนวนหนึ่ง แต่ข้อมูลที่เรากำลังสนใจมันจำเพาะเจาะจงกว่านั้น  ซึ่งเป็นแค่ส่วนหนึ่งของข้อมูลทั้งหมด ดังนั้นการกรองข้อมูลให้แสดงเฉพาะสิ่งที่เราสนใจเป็นสิ่งที่จำเป็นอย่างมาก ซึ่งทำได้ด้วยเครื่องมือ Filter นั่นเอง

    เมื่อเตรียมข้อมูลเป็น Database แล้ว ให้ Click ที่ช่องใดช่องหนึ่งของตารางข้อมูล (เช่น A1) แล้วกดใช้เครื่องมือ Filter ซึ่งเลือกได้ 2 ที่ คือ

    1. ที่ [Home] –> Editing –> Sort & Filter –> Filter
    2. ที่ [Data] –> Sort & Filter –> Filter

    เวลากด Filter แล้วจะมีปุ่มสี่เหลี่ยมขึ้นมาที่ด้านขวาของหัวตาราง เราสามารถกดปุ่มนั้นเพื่อเข้าสู่เมนูการกรองข้อมูล ซึ่งเมื่อกดปุ่มกรองที่คอลัมน์ไหน มันก็จะกรองข้อมูลโดยใช้หลักเกณฑ์คอลัมน์นั้น

    Filter

    เราจะลองทำการกรองดู โดยให้ลองเลือกให้ติ๊กถูกเหลือแค่ Food โดยให้ติ๊ก Select  All ออกก่อน แล้วค่อยกดเลือก Food และ/หรืออย่างอื่นที่ต้องการ แล้วกด Ok

    วิธีสังเกตว่ามีการกรองข้อมูลเกิดขึ้น

    Filter-After

    จะเห็นว่าเมื่อกรองข้อมูลแล้ว จะมีเครื่องหมายกรวยกรอง โผล่ขึ้นมาที่คอลัมน์ที่มีการกรองเกิดขึ้น รวมถึงจะเห็นว่า Row Number จะหลายเป็นสีฟ้า แถมเลขก็มีการข้ามลำดับด้วย

    การกรองด้วย Filter มีอยู่ 2 ลักษณะ ดังนี้

    1. การกรองค่าแบบเจาะจง :เวลากดแล้วมีCheck Boxอันไหนที่ไม่อยากเห็น ก็ติ๊กออกได้
      • หากมี Choice ให้เลือกเยอะจนเลือกไม่ไหว อาจใช้เครื่องมือ Search ใน Filter มาช่วย เช่น ผมพิมพ์คำว่า f ลงไปในช่อง search จะขึ้นทุก Choice ที่มีคำว่า f อยู่
        filter-search
      • จากนั้นพอกด ok ก็จะ Filter เหลือแต่สิ่งที่เลือกไว้
      • หากคุณกด Filter ใหม่ คราวนี้ลองเปลี่ยนคำบ้าง พอกด ok มันก็จะทับผลการ Filter เดิมที่ได้เคยทำไว้เลย
        Tips : แต่ถ้าหากคุณอยากจะให้มัน add item เพิ่มจากรายการเดิมที่เลือกไว้แล้ว ให้ติ๊กช่อง Add current selection to filter ด้วย เช่น
        filter-add-current-selection
    2. การกรองค่าแบบกำหนดเงื่อนไข จะขึ้นกับประเภทของข้อมูลในคอลัมน์นั้น

    Text Filters 

    Filter-Text

    จะเลือกได้กรณีข้อมูลเป็น Text ซึ่งมีเงื่อนไขให้เลือกดังนี้

    เงื่อนไขความหมาย
    Equals… / Does Not Equal….ช่องนั้นเป็นคำ xxx /ไม่ใช่คำ xxx แบบเป๊ะๆ
    Begins With…/ Ends With…ขึ้นต้น / ลงท้าย ด้วยคำว่า xxx
    Contains… / Does Not Contain…มีคำว่า / ไม่มีคำว่า xxx อยู่ในช่องนั้น
    Custom Filterเป็นการ Combination 2 เงื่อนไขด้วย And หรือ Or อีกที
    นอกจากนี้ยังใช้เครื่องหมาย Wildcard คือ * หรือ ? ได้ด้วย (จะอธิบายใน Level Advanced)

    Number Filters 
    ถ้าข้อมูลเป็น Number จะมีให้เลือก Number Filter ซึ่งเลือกเงื่อนไขได้ดังนี้

    เงื่อนไขความหมาย
    Equals… / Does Not Equal….ช่องนั้นเป็นเลข xxx /ไม่ใช่เลข xxx แบบเป๊ะๆ
    Greater Than…/Greater Than Or Equal To…/Less Than…/Less Than Or Equal To…/ Between…ช่องนั้นเป็นเลขที่มากกว่า/น้อยกว่า/ระหว่าง เลข xxx ที่กำหนด
    Top 10…มีค่าอยู่ใน Top xxxx นับเป็นรายการ/ หรือนับเป็น Percent
    Above Average / Below Averageมีค่ามากกว่า/น้อยกว่าค่าเฉลี่ย
    Custom Filterเป็นการ Combination 2 เงื่อนไขด้วย And หรือ Or อีกที
    นอกจากนี้ยังใช้เครื่องหมาย Wildcard คือ * หรือ ? ได้ด้วย (จะอธิบายใน Level Advanced)

    Filter ด้วยสี (Filter by Color)

    นอกจากนี้เรายังสามารถใช้การ Filter ด้วยสี (Filter by Color) ได้ด้วย อันนี้มีประโยชน์เวลานั่งตรวจงานแล้วทำ Highlight สีบางช่องที่สนใจเอาไว้ ทำให้สามารถเช็คหรือหาตอนหลังได้ง่ายขึ้น

    โดยมันจะดูว่าเรามีการใส่สี Fonts หรือพื้นหลังแบบไหนบ้าง แล้วมันจะขึ้นมาให้เลือกตามนั้นเลย

    Filter-Color

    Filter VS Hide

    Filter กับ Hide ก็เป็นการทำให้ข้อมูลมองไม่เห็นเหมือนกัน แต่มีจุดที่ต่างกันพอสมควร แต่ประเด็นที่สำคัญเวลาเราทำงานกับมันมีอยู่ 2 เรื่องที่เจอบ่อยๆ คือ 1. การ Copy ข้อมูลออกมา Paste ที่อื่น กับ 2. การ Input ข้อมูลหรือสูตรลงไปในบริเวณข้อมูลที่ Filter/Hide

    การ Copy ข้อมูลออกมา Paste ที่อื่น

    หากเรา Filter ข้อมูลแล้ว Copy ไป Paste ที่อื่น ข้อมูลที่ถูกกรองทิ้งจะไม่ถูก copy ไปด้วย แต่ข้อมูลที่ถูก Hide ไว้ยังถูก Copy ไปอยู่ดี (เหมือนกับตอนปกติที่ไม่มีการ Hide)

    FilterHide
    ข้อมูลมีการ  “Filter เอานาย ก ออกไป”
    แล้ว Copy/Paste ไปไว้ที่อื่น
    ข้อมูลมีการ  “Hide เอานาย ก ออกไป”
    (ไม่มีการ Filter) แล้ว Copy/Paste ไปไว้ที่อื่น
     filter-vs-hide-2 filter-vs-hide-3
    จะเห็นว่ามีเส้นประขึ้นมาเป็นกรอบหลายๆ ชุด (เส้นประมีการแบ่งแยกบริเวณกัน) ซึ่งบ่งบอกว่า มีการแบ่งข้อมูลออกเป็นหลายก้อนเมื่อ Paste ลงที่อื่นแล้ว จะเหลือแค่ข้อมูลที่มองเห็นหลัง Filter จริงๆจะเห็นว่ามีเส้นประขึ้นมาเป็นกรอบเพียงชุดเดียว (เส้นประไม่แบ่งแยกบริเวณ) ซึ่งบ่งบอกว่า ข้อมูลมีเพียงก้อนเดียวเมื่อ Paste แล้วข้อมูลที่เคยถูก Hide อยู่ก็กลับถูกแสดงออกมา ไม่เหมือนการใช้วิธี Filter ครับ

    การ Input ข้อมูลลงไป

    หากเรา Filter ข้อมูลแล้ว Input ข้อมูลลงไปในบริเวณข้างเคียง แล้วลาก Fill Handle หรือ Copy สูตรลงมา มันจะข้ามบรรทัดที่ข้อมูลถูกกรองทิ้งไป คือมีการกรอกข้อมูลแต่บรรทัดที่มองเห็นอยู่เท่านั้น แต่ข้อมูลที่ถูก Hide ไว้จะถูกกรอกข้อมูลหรือสูตรอยู่เช่นเดิม (เหมือนกับตอนปกติที่ไม่มีการ Hide)

    FilterHide
    ข้อมูลมีการ  “Filter เอานาย ก ออกไป”
    จากนั้นมีการกรอกข้อมูลข้างๆ แล้วลาก Copy ลงมา
    ข้อมูลมีการ  “Hide เอานาย ก ออกไป” (ไม่มีการ Filter)
    จากนั้นมีการกรอกข้อมูลข้างๆ แล้วลาก Copy ลงมา
    กรอกข้อมูลตอน Filter เอาไว้filter-hide-input1หลัง Clear Filter

     

    filter-hide-input2

    กรอกข้อมูลตอน Hide เอาไว้filter-hide-input3หลัง Unhide

     

    filter-hide-input4

    จะเห็นข้อมูลขึ้นมาเฉพาะบรรทัดที่มองเห็นข้อมูล (ไม่ได้ถูกกรอกทิ้ง) เท่านั้นจะเห็นข้อมูลขึ้นมาทุกบรรทัดตามปกติ (ที่บรรทัดที่ 2 ไม่ขึ้น เพราะตอนกรอกข้อมูล ผมเริ่มที่บรรทัดที่ 3 แล้วลากลง)
  • การอ้างอิงด้วยการตั้งชื่อ (Define d Name)

    การอ้างอิงด้วยการตั้งชื่อ (Define d Name)

    การมีชื่อนั้นเป็นสิ่งพิเศษมากนะครับ เพราะชื่อ ทำให้เราสามารถอ้างอิงไปยังสิ่งต่างๆ ได้ง่ายมากยิ่งขึ้น (ลองคิดดูว่าถ้าแต่ละคนในสังคมไม่มีชื่อ จะวุ่นวายแค่ไหน!!)

    ผมยกตัวอย่างง่ายๆ เช่น ถ้าหากคุณไม่รู้จักชื่อคนในห้องสัมมนา คุณอาจต้องอ้างอิงถึงคนคนนั้นด้วยพิกัด เช่น “เฮ้ย คนที่นั่งเก้าอี้ทางซ้ายสุดของแถวหลังสุดน่ะ” ตรงนี้คล้ายๆ กับการใช้การอ้างอิงด้วยตำแหน่ง อย่าง  A1, B3 ที่ผมได้อธิบายไปแล้วนั่นเอง

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

    กลับมาที่ Excel… แทนที่เราจะใช้การเรียกชื่อ Cell ตามมาตรฐานที่มีอยู่เดิม เช่น A1 B3 หรือเรียก Range ว่า A2:D5 เราสามารถตั้งชื่อ Cell หรือ Range นั้นๆ ด้วยคำที่ต้องการได้เลย จะเป็นภาษาอังกฤษหรือภาษาไทยก็ได้ เช่น sales, ยอดขาย, ภาษี เป็นต้น

    ซึ่งเมื่อคนอื่นมาอ่านไฟล์ของเรา ก็อาจจะเห็นสูตรที่เราเขียนโดยใช้ชื่อในการอ้างอิง ทำให้สามารถเข้าใจงาน Excel เราได้ง่ายขึ้นไปด้วย

    การตั้งชื่อ โดยใช้ Name Box

    ให้เลือก Cell หรือ Range ที่ต้องการ  แล้วพิมพ์ชื่อที่ต้องการตั้งลงใน Name Box ได้เลย (อยู่ด้านซ้ายของช่อง Formula Bar ที่เอาไว้ใส่สูตร) เช่น

    • หากเราอยากจะตั้งชื่อช่อง C1 ว่า animal ก็ให้เราเลือกที่ช่อง C1 จากนั้นพิมพ์คำว่า animal ลงไปใน Name box แล้วกด Enter
      name1
    • หากเราอยากจะตั้งชื่อ Range B3:B5 ว่า salary ก็ให้เราเลือกที่ Range B3:B5 ก่อน จากนั้นพิมพ์คำว่า salary ลงไปใน Name box แล้วกด Enter
      name2
    • เมื่อเราตั้งชื่อไปแล้ว เราสามารถ Select Cell/Range ที่ตั้งชื่อไว้แล้วง่ายๆ โดยการเลือก Dropdown ที่ Name box นั่นเอง
      name3

    การอ้างอิงถึงชื่อที่ตั้งไว้แล้ว

    เราสามารถอ้างอิงถึงชื่อที่ตั้งไว้ได้เปรียบเสมือนว่าชื่อนั้นเป็น Cell Reference ปกติเลย ไม่ว่าชื่อนั้นจะเป็น Cell หรือ Range  เช่น หากเราพิมพ์ลงไปว่า =animal จะได้ค่าเหมือนกับ =C1 ซึ่งจะได้ค่าเป็น “ช้าง” ถ้าเราพิมพ์ว่า =SUM(salary) จะได้ค่าเหมือนกับ =SUM(B3:B5) ซึ่งจะได้ผลลัพธ์เป็น 600

    การตั้งชื่อครั้งละหลายๆ ชื่อ โดยใช้ เครื่องมือ Create from Selection

    เป็นการตั้งชื่อที่ทำได้อย่างรวดเร็ว เพราะมันสามารถให้เราครอบข้อมูลจำนวนมากๆ แล้วตั้งชื่อตามหัวคอลัมน์แต่ละอัน หรือ หัวแถวแต่ละแถวได้โดยอัตโนมัติ วิธีคือให้เลือกพื้นที่ที่ต้องการ  แล้วไปที่ [Formula] –> Defined Names –> Create from Selection (มี Shortcut คือกด Ctrl+Shift+F3)

    name4

    ชื่อ sales จะแทน B3:B6, product แทน C3:C6, payment แทน D3:D6 (ไม่รวมหัวคอลัมน์)

    Scope ของชื่อ อยากให้ชื่อเป็นที่รู้จักแค่ไหน?

    แท้จริงแล้ว ชื่อที่ถูกตั้งขึ้นมา สามารถกำหนดให้ถูกเรียกใช้งานได้จากขอบเขตตามที่เราต้องการเรียกว่า Scope นั่นคือ

    • ตั้ง Scope ให้เป็นระดับ Workbook : ให้เรียกใช้ชื่อได้จาก Sheet ใดก็ได้
    • ตั้ง Scope ให้เป็นระดับ Worksheet : ให้เรียกใช้ชื่อได้จาก Sheet ใด Sheet หนึ่งเท่านั้น
    • ถ้าชื่อซ้ำกัน หากเราทำการเรียกใช้ชื่อจาก Sheet ไหน Excel จะมองชื่อที่อยู่ใน Scope ของ Worksheet นั้นก่อนการมองชื่อระดับ Workbook เสมอ ตรงนี้ Make sense มากนะครับ เช่น ถ้าเราพูดถึงคนที่ชื่อว่า “โนบิตะ” คนส่วนใหญ่ในโลกนี้จะนึกถึงโนบิตะในเรื่องโดราเอมอน (เหมือนชื่อระดับ Workbook ที่เรียกได้ว่ามีความเป็นสากลมาก) แต่ถ้าเราเป็นคนที่อยู่ในบ้านที่มีคนชื่อโนบิตะอยู่พอดีเลย คนในบ้านนั้นก็ต้องคิดถึงคนที่ชื่อโนบิตะในบ้านนั้นก่อน (เหมือนกับการอ้างอิงชื่อระดับ Worksheet ที่มีความเป็น local มากกว่า)

    ซึ่งการตั้งชื่อด้วย Namebox และ Create from Selection ที่แนะนำไปนั้น จะเป็นการสร้าง Defined Name ที่เป็นระดับ Workbook โดยอัตโนมัติ ซึ่งหากเราใช้วิธี Namebox ในการตั้งชื่อเดียวกันซ้ำในอีก Sheet หนึ่ง คุณจะพบปัญหา เพราะแทนที่มันจะตั้งชื่อขึ้นมาใหม่ มันดั้นเด้งกลับไปยังช่องแรกที่ถูกตั้งชื่อไว้แทน นี่แหละครับ ถึงคราวต้องใช้ความรู้เรื่องของ Scope ในการตั้งชื่อแล้วล่ะ! ทำยังไงมาดูกันครับ

    การตั้งชื่ออย่างละเอียดด้วย Define name

    ให้คลิ๊กที่ Cell/Range ที่ต้องการตั้งชื่อแล้วไปที่ [Formula] –> Defined Names –> Define Name ได้เลย ซึ่งคราวนี้คุณจะสามารถกำหนดเงื่อนไขต่างๆได้มากกว่าเดิม เช่น Defined Name จะใช้ชื่อว่าอะไร มี Scope เป็นระดับไหน และอ้างอิงไปที่ Cell/Range ไหน (ซึ่งอ้างไปยัง Sheet อื่นได้นะ)

    เช่น ใน Sheet1 ช่อง A1 ผมมีค่า 10 แล้วตั้งชื่อว่า age ซึ่งผมใช้ Namebox ในการตั้งขื่อไปก่อน ซึ่งปกติชื่อแรกที่ถูกตั้งขึ้นมาจะเป็นระดับ Workbook โดยอัตโนมัติ

    หากว่าใน Sheet2 ช่อง B1 ผมมีค่า 20 อยากจะตั้งชื่อว่า age เหมือนกัน (ซ้ำกับ sheet1) ผมจะสามารถทำได้ก็ต่อเมื่อผมต้องตั้งชื่อ age ใน Sheet2 ให้เป็นระดับ Sheetแทน โดยเปลี่ยน scope ในเครื่องมือ Define Name ให้เป็น sheet2 แทน (ระดับ worksheet) นั่นเอง

    name5

    สิ่งที่เกิดขึ้นคือ หากคุณทำการอ้างอิงชื่อที่ตั้งขึ้นมา เช่น ใส่สูตรว่า =age เมื่อคุณอยู่ที่ sheet ต่างกัน ก็จะได้ผลลัพธ์ต่างกันไปด้วย  เช่น

    • หากอ้างอิงจาก sheet2 คุณจะได้ค่า 20 (ได้ชื่อระดับ sheet กลับไป)
    • แต่หากคุณอ้างอิงจาก sheet 1 หรือ sheet อื่นที่ไม่ใช่ sheet2 คุณจะได้เลข 10 กลับไป (เป็น name ระดับ workbook)

    อย่างที่บอกไปว่าชื่อระดับ worksheet จะได้รับ priority สูงกว่าเสมอ เพราะมีความเจาะจงมากกว่านั่นเอง  

    การจัดการชื่อด้วย Name Manager

    เมื่อคุณทำการตั้งชื่อไปแล้วด้วยวิธีการต่างๆ ที่พูดถึงก่อนหน้านี้ คุณสามารถเข้ามาจัดการซึ่งรวมถึง การเพิ่ม แก้ไข หรือ ลบ ชื่อเหล่านั้นได้ง่ายๆ โดยใช้เครื่องมือที่ชื่อว่า Name Manager ซึ่งอยู่ที่ [Formula] –> Defined Names –> Name Manager
    name-manager

    เครื่องมือนี้เหมาะกับการจัดการชื่อจำนวนมากๆ ได้ เพราะว่าจะเห็นภาพรวมของชื่อทั้งหมดที่ถูกตั้งไว้ใน Workbook นั้นๆ

    อย่างไรก็ตาม หากมีชื่อเยอะเกินไปจนดูไม่ไหว คุณก็ยังสามารถ Filter ชื่อตามหมวดหมู่ที่ต้องการได้ เช่น อยากเห็นเฉพาะชื่อที่มี Error อยู่ หรือ ชื่อที่มี Scope เป็น Sheet เป็นต้น

    name-manager2

  • การค้นหาข้อมูล และ Wildcard เครื่องหมายมหัศจรรย์

    co-create
    บทความนี้คือส่วนหนึ่งของโครงการ ร่วมสร้าง “หนังสือคู่มือ Excel ที่เจ๋งที่สุด” ใครที่มี comment เพื่อแนะนำ ปรับปรุงหนังสือได้ คุณจะได้เครดิตในฐานะผู้ร่วมเขียน ลงในหนังสือที่จะพิมพ์จริงๆ ด้วย! อ่านรายละเอียด และดูสารบัญหนังสือ คลิ๊กที่นี่


    ปกติแล้วเวลาพูดถึงเรื่องการค้นหาข้อมูล คนส่วนใหญ่คงนึกถึงเครื่องมือ Find (Ctrl+F) ซึ่งผมก็ใช้มันบ่อยมากเช่นกัน แต่วันนี้ผมจะมาเปิดเผยความสามารถลับๆ ของมันที่หลายคนอาจยังไม่รู้ เป็นยังไงมาดูกันเลย!

    การใช้เครื่องมือ Find เพื่อค้นหาข้อมูล

    เครื่องมือนี้ เอาไว้ค้นหาสิ่งที่ต้องการ มีวิธีสั่งงานโดยให้ไปที่ [Home] –> Editing–> Find & Select –> Find… หรือ กด Ctrl+F ก็ได้ ง่ายกว่าเยอะ โดยที่ก่อนจะทำการค้นหา ถ้าเราเลือก Range เอาไว้ก่อน แล้วค่อยกด Ctrl+F มันจะหาเฉพาะ Range ที่เราเลือก (แต่ถ้าเลือกที่ Cell เดียว มันจะหาทั้งหมดเลย เพราะคงไม่มีใครหา Cell เดียวจริงมั๊ยครับ?)

    find

    จากนั้นใส่คำค้นหาที่ต้องการใน Find what: จากนั้นก็จะให้เลือกเอาว่าจะกด Find Next หรือ Find All

    Find Next ก็จะทำให้ Active Cell เด้งไปยังผลลัพธ์ที่อยู่ถัดไป ส่วน Find All ก็จะ List ผลลัพธ์ทั้งหมดที่เจอมาให้เลย

    โดยที่การค้นหาของเรา สามารถกำหนด Options >> เพิ่มเติมได้ ซึ่งจะมีเงื่อนไขให้เลือกเพิ่ม คือ

    • Format… ระบุรูปแบบที่ต้องการ ซึ่งหากขี้เกียจระบุเองก็สามารถกด Choose Format from cell แล้วจิ้มไปยัง Cell ที่มีรูปแบบที่ต้องการได้เลย
    • Within: เอาไว้ระบุว่าจะหาเฉพาะใน Sheet หรือใน Workbook
    • Look in: ตรงนี้มีให้เลือก 2 แบบ ซึ่งสำคัญมากๆๆ นั่นก็คือFormulasหรือValues
      • Formula : จะเป็นการค้นหาจากสิ่งที่อยู่ใน Formula Bar ของแต่ละช่อง
      • Value : เป็นการค้นหาจากผลลัพธ์ที่แสดงออกมาใน Cell แต่ละช่อง
    • Match Case : ติ๊กเลือกถ้าต้องการสนใจตัวพิมพ์เล็กตัวพิมพ์ใหญ่ว่าต้องตรงกัน
    • Match entire cell contents : ติ๊กเลือกอันนี้ ถ้าต้องการให้เจอทั้งคำใน Cell เท่านั้น

    การใช้เครื่องมือ Find เพื่อเลือกข้อมูลหลายๆ Cell

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

    findall-1

    ตรงนี้แหละ ให้กด Ctrl+A เพื่อเลือกผลลัพธ์ทุกอัน คุณจะเห็นว่า Cell ต่างๆ ใน Excel ก็จะถูกเลือกไปด้วย ซึ่งอันนี้แหละเป็นเทคนิคการ Select Cell ที่เจ๋งมาก

    findall-2

    (more…)

  • การจัดการข้อมูลเบื้องต้น

    การเตรียมข้อมูลให้อยู่ในลักษณะของ Database

    คือการจัดข้อมูลให้มีลักษณะดังนี้

    • ทำให้บรรทัดบนสุดของข้อมูลเป็นชื่อหัวตาราง (ไม่จำเป็นต้องอยู่บรรทัดบนสุดของ sheet ก็ได้)
    • และในบรรทัดถัดจากนั้น ในแต่ละคอลัมน์จะเป็นข้อมูลเรื่องเดียวกันทุกบรรทัด โดยสอดคล้องกับหัวตาราง
      เช่น ถ้าหัวตารางคือ สินค้า ข้อมูลบรรทัดถัดไปในคอลัมน์นั้นก็จะเป็นชื่อสินค้า เป็นต้น
    • บรรทัดล่างสุดก็ไม่ต้องมีการสรุปข้อมูลอะไรทั้งสิ้น เพราะเราจะไปสรุปทีเดียวด้วยการใช้ PivotTable
    • นอกจากนี้รอบๆ ฐานข้อมูลไม่ควรมีข้อมูลที่ไม่เกี่ยวข้องอยู่ใน Cell ที่ติดกับตาราง

     

    แบบที่ถูกต้อง แบบที่ไม่ควรทำ
     database-style

    แบบนี้ ok เลย

    database-style-wrong

    เพราะไม่มีหัวตาราง

    database-style-wrong2

    เพราะรอบๆ ตารางมีข้อมูลที่ไม่เกี่ยวข้องติดอยู่

    มันไม่ง่ายอย่างที่คิด

    บ่อยครั้งที่ข้อมูลที่เราจะต้องนำมาวิเคราะห์ประมวลผลใน Excel นั้น ไม่ได้อยู่ในรูปแบบที่นำมาวิเคราะห์ได้ทันที ซึ่งอาจมีหลายสาเหตุด้วยกัน เช่น

    • ข้อมูลอยู่ในไฟล์อื่นนอก Excel
    • ข้อมูลอยู่ในสภาพไม่เรียบร้อย มีข้อมูลขยะที่พิมพ์ผิดปนอยู่มาก
    • ข้อมูลมีรูปแบบไม่เป็นไปตามต้องการ เช่น
      • มีข้อมูลชื่อและนามสกุลอยู่ในช่องเดียวกันแต่เราต้องการแยกช่อง หรือ
      • มีข้อมูลวันที่อยู่ในรูปแบบ text เช่น 20150630 แต่เราต้องการนำไปแยกวิเคราะห์ในมุมมอง ปี หรือ เดือน เป็นต้น

    ดังนั้นสิ่งที่สำคัญมาก คือ ความสามารถในการเตรียมข้อมูลให้เรียบร้อยซะก่อน ซึ่งทำได้หลายวิธี แต่มีหลักการสำคัญคือ การคิดย้อนกลับ หรือ Backward Thinking

    Backward Thinking

    แน่นอนว่าก่อนที่เราจะเริ่มจัดการข้อมูล เราควรจะต้องรู้ก่อนว่า “สุดท้ายแล้วเราอยากได้อะไร?” เมื่อรู้แล้วค่อยคิดย้อนกลับมายังจุดเริ่มต้นว่า “เราต้องเตรียมอะไร?” ซึ่งเทคนิคการคิดแบบนี้เรียกว่า การคิดย้อนกลับ หรือ Backward Thinking ซึ่งเป็นเทคนิคการคิดที่เจ๋งสุดๆ เลย สามารถนำไปประยุกต์ใช้มากมาย แม้แต่การค้นหาเป้าหมายชีวิตของตนเองก็ยังได้

    แต่เอาล่ะ กลับมาที่ Excel ก่อนจะเตลิดไปไกลดีกว่าครับ ผมขอยกตัวอย่างดังนี้

    การจัดการข้อมูลเบื้องต้น 5

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

    การแตกข้อมูลออกเป็นหลายๆ คอลัมน์ ด้วย Text to Column

    บางทีคุณอาจเจอสถานการณ์ที่ข้อมูลที่คุณมีนั้น อยู่ในรูปแบบที่ปนกันอยู่ในคอลัมน์เดียวกัน เช่น
    นาย ศิระ เอกบุตร ซึ่งจะเห็นว่ามีคำนำหน้าชื่อ ชื่อ นามสกุล 3 อย่างปนอยู่ในช่องเดียวกัน แต่เราต้องการแยกมันออกมาเป็น 3 ช่อง เราสามารถใช้เครื่องมือ Text to Column มาช่วยได้เป็นต้น

    text-col-1

    วิธีการเรียกใช้งาน Text to Column ให้เลือกข้อมูลต้นฉบับที่ต้องการจะแยกข้อมูลก่อน (A1:A2) จากนั้นไปที่
    [Data] –> Data Tools –> Text to Column

    สิ่งที่จำเป็นจะต้องรู้ต่อไปก็คือ การทำงานของ Text to Column นั้น จะมี 2 Mode ให้เลือก ในการที่จะใช้เป็นเกณฑ์ในการแบ่งข้อมูลจากคอลัมน์เดียวเป็นหลายๆ คอลัมน์ นั่นก็คือ

    • Delimited : ใช้กับกรณีที่ข้อมูลมีอักขระพิเศษบางตัวทำหน้าที่เป็นตัวแบ่งคอลัมน์ โดย Excel จะถามว่าไฟล์ที่เราเลือกนั้นมีตัวแบ่งคอลัมน์ คือ อักขระอะไร ซึ่งมีตัวแบ่งที่ใช้กันบ่อยๆ เช่น Tab, Semicolon, Comma (มักใช้กับไฟล์ นามสกุล CSV (Comma Separated Value), Space (ช่องว่าง), Pipeline (เครื่องหมาย | ที่อยู่บนๆ ปุ่ม Enter) เป็นต้น
    • Fixed Width : ใช้กับกรณีที่ข้อมูลสามารถถูกแบ่งคอลัมน์ด้วยจำนวนตัวอักษรที่แน่นอน โดยแต่ละคอลัมน์ไม่จำเป็นต้องมีจำนวนตัวอักษรที่เท่ากัน เช่น คอลัมน์แรกกว้าง 3 คอลัมน์ต่อไปอาจกว้าง 5 ก็ได้
      text-col-2

    ในตัวอย่างของผม จะเห็นว่ามีตัวแบ่งที่ชัดเจนเลย นั่นก็คือ ช่องว่าง ดังนั้นจะต้องเลือกโหมดเป็น Delimited แล้วเลือก Delimiter เป็น Space นั่นเอง (Excel2013 อาจแสดงภาษาไทยเพี้ยนๆ ตอน Preview ก็โปรดให้อภัยมันด้วยนะครับ)

    text-col-3

    พอเลือกเสร็จมันจะแสดงหน้าจอตัวอย่างให้ดู และถามว่าในแต่ละคอลัมน์นั้นคือข้อมูลประเภทอะไร ถ้าขี้เกียจแก้ก็ปล่อยเป็น General ไปก็ได้ครับ ทีนี้เราสามารถเลือกได้ด้วยว่าเมื่อทำเสร็จจะให้แบ่งข้อมูลแล้วไปไว้ที่ไหน ถ้าเราไม่ได้แก้ตรงนี้จะเป็นการทับข้อมูลต้นฉบับของเราไปเลยครับ

    text-col-4

    จะเห็นว่า การจะใช้ Text to Column ได้เราจะต้องลองสังเกตข้อมูลของเราดูก่อน ว่าควรจะใช้ตัวแบ่งแบบไหนมาช่วยนั่นเอง ซึ่งความรู้ตรงนี้จะมีประโยชน์ในหัวข้อถัดไปอย่างมาก นั่นก็คือ การ Import ข้อมูลนั่นเอง

     

    Import เอาข้อมูลจากไฟล์อื่นเข้ามาที่ Excel

    บางทีข้อมูลที่เราต้องใช้ ไม่ได้อยู่ใน Excel ดังนั้น จึงหลีกเลี่ยงไม่ได้ที่เราอาจต้องใช้ Excel ร่วมกับข้อมูลที่อยู่ข้างนอก เช่น เป็น Text File, ไฟล์ Database บน Access, หรือแม้กระทั่งข้อมูลในตารางที่อยู่บน Website

    อาจมีหลายสาเหตุที่เรายังต้องพึ่งพาข้อมูลจากภายนอก เช่น ข้อมูลมีขนาดใหญ่ เช่น มากกว่า 1 ล้านบรรทัด ทำให้ใส่ใน Excel ไม่ได้ จึงต้องไปใส่ไว้ในที่อื่น เช่น  Access แทน หรือบางทีข้อมูลจากมีการอัปเดทอยู่เสมอๆ เช่น ราคาหรือข้อมูลข้องหุ้นต่างๆ ที่อยู่ในเว็บไซต์ เป็นต้น

    การนำเข้าข้อมูลจากฐานข้อมูลภายนอก ทำได้โดยไปที่ [Data] –> Get External data ซึ่งมีอยู่หลาย Source ให้เลือก ผมจะขอพูดเฉพาะตัวที่น่าจะใช้บ่อยๆ ดังนี้

    From Text

    วิธีนี้ใช้กับข้อมูลที่อยู่ในรูปแบบ Text ซึ่งรวมถึงไฟล์ที่เป็นนามสกุลพวก .txt หรือ .csv (comma separated value) ซึ่งเมื่อลองกด Import ข้อมูลดูแล้ว จะพบว่ามีเมนูให้เลือก 2 แบบ คือ Delimited กับ Fixed Width ซึ่งเป็นแบบเดียวกับการใช้ Text to Column เป๊ะๆ เลย (สบายเราล่ะ) แต่สิ่งที่อาจต้องเลือกเพิ่มคือ พวกรหัสภาษาของไฟล์ต้นฉบับ ซึ่งถ้ามีภาษาไทยอยู่ ผมแนะนำให้เลือก Thai เช่น 874:Thai (Windows) ครับ ไม่งั้นภาษาจะออกมาเน่าๆ และบางทีก็อาจต้องติ๊ก My Data has Headers ด้วย เพื่อบอก Excel ว่า ในไฟล์ที่กำลังจะ import นั้นมีหัวคอลัมน์มาด้วยนะ

    text-import

    From Web

    อันนี้เหมาะกับการดึงข้อมูลใน Website โดยสามารถเลือกได้ด้วยว่าจะดึงข้อมูลจากตารางไหนที่อยู่ใน Website หน้านั้นๆ โดยมันจะแสดงหน้าตา Website จริงๆ มาให้เราเลือกเลย

    สมมติผมอยากได้ข้อมูลเกี่ยวกับรายได้หนัง ผมอาจใส่เว็บไซต์ Address จาก boxofficemojo: เป็น http://www.boxofficemojo.com/yearly/chart/?yr=2015&p=.htm แบบนี้ก็ได้

    จากนั้นผมก็เลือกตรงลูกศรที่มีข้อมูลที่เราต้องการ จากสีเหลืองจะเป็นสีเขียว และผมอาจต้องกำหนด Options บางอย่าง เพื่อให้ข้อมูลไม่เพี้ยน เช่น บางที Excel ก็แปลงข้อมูลเป็นวันที่ให้เอง ซึ่งผมไม่ต้องการ จึงต้องเลือก Disable date recognition ไว้ด้วย

    web-query

    ผลลัพธ์ที่ได้จะออกมาเป็นตารางให้โดยอัตโนมัติเลย

    web-query2

    นอกจากนี้ เรายังสามารถ Save ลักษณะการ Import นั้นๆ (Save Web Query) ไว้ใช้ภายหลังได้อีกด้วย โดยการกดที่ icon แผ่น disk ข้างๆ คำว่า Options… ซึ่งพอ Save แล้วเราสามารถเปิดใช้ภายหลังโดยการ Open Query File ที่ Save ไว้ในเมนู Open File ปกติเลย 

    การ import ข้อมูลที่อยู่ใน Access

    การ import ข้อมูลที่อยู่ใน Access จริงๆ แล้วสามารถทำได้ 2 ที่ คือ From Access ตรงๆ และ From Other Sources –> From Microsoft Query แต่ผมว่าวิธีแรกง่ายกว่าครับ

    From Access

    อันนี้เราสามารถเลือกไฟล์ Access ได้เลยโดยตรงเลย พอเลือกไฟล์ Access แล้วมันก็จะให้เลือก Table/Query ที่เราต้องการจะ Import ต่อไป (ถ้าเป็น Query ตรงช่อง Type จะขึ้นว่า VIEW)

    from-access

    เมื่อ Import แล้ว จะมีให้เลือกว่าจะให้ Import เป็น Table หรือกลายเป็น PivotTable เลย

    from-access2

    ซึ่งหาก Import เป็น PivotTable Report จะสามารถ import ข้อมูลมามากกว่าจำนวนแถวที่ Excel รับไหวได้ด้วย คือ มากกว่า 1,048,576 Records ก็ยังได้

    มหัศจรรย์การจัดการข้อมูลด้วย Flash Fill ( Excel 2013 ขึ้นไปเท่านั้น)

    ใน Excel 2013 ขึ้นไปมีเครื่องมือสุดเจ๋งที่ชื่อว่า Flash Fill มาให้เราใช้ ซึ่งความสามารถที่สุดแสนจะชาญฉลาดของมัน คือ
    เราสามารถใส่ตัวอย่างผลลัพธ์ที่ต้องการ โดย Excel จะพยายามเรียนรู้หา Pattern ในตัวอย่างที่เราใส่ลงไป แล้วจัดการกรอกข้อมูลที่เหลือให้ได้โดยอัตโนมัติ ซึ่งเราสามารถนำมาประยุกต์ใช้ประโยชน์ได้มากมาย เช่น

    • นำมาแบ่งคำ จาก 1 คอลัมน์ ออกมาเป็นหลายๆ คอลัมน์
    • รวมข้อมูลจากหลายคอลัมน์ มาไว้ที่คอลัมน์เดียว ในรูปแบบที่ต้องการ
    • แยกเอาบางส่วนของคำออกมา
    • เปลี่ยน Format ของข้อความให้อยู่ในรูปแบบที่ต้องการ

    การจัดการข้อมูลเบื้องต้น 6

     

    รายละเอียดลองอ่านได้จากบทความ งานเสร็จฉับไว ด้วย Flash Fill

  • การคัดลอก ตัด แปะ แทรก

    การคัดลอก ตัด แปะ แทรก

    ผมเชื่อว่าการ Copy / Paste ข้อมูล เป็นของชอบของหลายๆ คนเลยล่ะ เพราะมันมีช่วยให้คุณทำงานสบายขึ้นมาก แต่จะสบายมากขึ้นกว่าเดิมอีก หากคุณใช้ Feature นี้ได้อย่างเต็มประสิทธิภาพ

    การคัดลอก ตัด แปะ แทรกนั้น สามารถแบ่งเป็น Action mทำที่ต้นทางกับปลายทางได้ดังนี้

    copy-paste-concept

    Copy vs Cut :  การ Copy ต้นฉบับจะยังคงอยู่ที่เดิม แต่การ Cut ต้นฉบับจะหายไปเลย

    Paste vs Insert : การ Paste เป็นการแปะทับลงไปยังเป้าหมายเลย (ข้อมูลเดิมในเป้าหมายหายไป) แต่ Insert เป็นการแทรก (ข้อมูลเดิมในเป้าหมายถูกเลื่อนไปยังที่อื่น)

    การคัดลอกข้อมูล (Copy) –> แปะข้อมูล (Paste)

    การคัดลอกข้อมูลด้วย Copy & Paste (คัดลอก & แปะ)

    1. คลิ๊กที่ cell/range ต้นทาง กด Ctrl+C เพื่อ Copy หรือคัดลอกข้อมูลเอาไว้
    2. คลิ๊กที่ cell/range ปลายทาง กด Ctrl+V เพื่อ Paste หรือ วางสิ่งที่คัดลอกมา
    3. หากเป็นการ Paste แบบปกติ ข้อมูลจะมาทั้งสูตรและ Format

    Tips : หาก Range ปลายทางมีจำนวนช่องที่เอาข้อมูลต้นทางไปลงได้แบบเป็นจำนวน x เท่าพอดีๆ  ข้อมูลจะถูก Copy และ Paste ไปด้วยในลักษณะวนซ้ำ Pattern ไปเรื่อยๆ จนเต็มพื้นที่ แต่ถ้าเลือกปลายทางจำนวนช่องไม่ลงพอดี ก็จะ Paste เท่ากับต้นฉบับเท่านั้น

    copy-paste-pattern

    การ Paste ในรูปแบบต่างๆ (Paste Special)

    paste-special

    หากต้องการ Paste ข้อมูลแบบพิเศษ สามารถทำได้โดยเลือก Dropdown จากปุ่ม Paste หรือเลือก Paste Special

    • Paste Formula                 Paste แต่สูตร
    • Paste Value                                Paste แต่ค่าที่คำนวณแล้ว
    • Transpose กลับแนวนอนให้เป็นแนวตั้ง แนวตั้งให้เป็นแนวนอน
    • Paste Special –> Format                Paste แต่รูปแบบ ไม่เอาค่าหรือสูตรมา (Format Painter)
    • Paste Special –> Column Width เป็นการเลียนแบบความกว้างคอลัมน์จาก Cell ต้นฉบับ
    • Operation (Add/Subtract/Multiply/Divide) เป็นการเอาข้อมูลต้นทางไปบวก/ลบ/คูณ/หาร กับข้อมูลปลายทาง

    การใช้ Format Painter ช่วย Copy รูปแบบ

    สามารถเลือก Cell/Range ต้นฉบับ จากนั้นกด icon Format Painter แล้วค่อยเลือก Cell/Range ปลายทาง

    • Cell ปลายทางมีหลายช่องต่อเนื่องกัน ตอนเลือก Cell หลายทางก็ลากเป็น Range ได้เลย
    • Cell ปลายทางที่มีช่องที่ไม่ต่อเนื่องกัน ให้ทำการ Lock Format Painter ก่อนโดย Double Click ที่ Format Painter จากนั้นค่อยทำการเลือก Cell ปลายทาง สังเกตว่าหากใช้วิธีนี้แล้วจะ Paste Cell หลายทางได้เรื่อยๆ โดยไม่ต้อง Click ที่ Format Painter ใหม่ทุกครั้ง

    การตัดข้อมูล (Cut) –> แปะข้อมูล (Paste)

    • เป็นการย้ายข้อมูลจากที่หนึ่งไปยังอีกที่หนึ่งเลย ไปแทนที่ช่องปลายทาง (Move)
    • Cell Reference ในสูตรช่องที่ถูก Move นั้นจะยังคงเหมือนเดิม ไม่มีการเลื่อนเหมือนการ Copy
    • หากว่ามีช่องอื่นมาอ้างอิงถึงช่องเดิม เวลามันย้ายไปยังช่องใหม่ สูตรที่เคยอ้างอิงมายังช่องนั้นก็จะปรับให้โดยอัตโนมัติ เช่น เดิมมีการเขียนสูตรในช่อง A2 ว่า =A1+20 หากเรา Cut ช่อง A1 แล้วไป Paste ที่ C3 สูตรในช่อง B2 จะเปลี่ยนไปเป็น =C3+20 โดยอัตโนมัติ

    การ Move ข้อมูลด้วย Cut & Paste (ตัด & แปะ)

    การ Cut & Paste ทำได้โดย

    1. คลิ๊กที่ cell/range ต้นทาง กด Ctrl+X เพื่อ Cut หรือเตรียมที่จะย้ายข้อมูล
    2. คลิ๊กที่ cell/range ปลายทาง กด Ctrl+V เพื่อ Paste หรือ วางสิ่งที่เตรียมจะย้ายมา

    การ Move ข้อมูลด้วยการลาก Mouse

    1. เราสามารถเลือก Range ของข้อมูลที่ต้องการ
    2. จากนั้นเลื่อนเม้าไปที่ขอบของ Range ที่เราเลือกไว้ (มันจะกลายเป็นรูปลูกศรชี้ 4 ทิศ พร้อมกัน)
    3. Click ซ้ายค้างไว้ แล้วลากไปยังเป้าหมายที่ต้องการ แล้วปล่อย Mouse ได้เลย

    ซึ่งวิธีนี้มีข้อดีคือ จะเห็นชัดเจนก่อนทำการ Paste ว่า ช่องเป้าหมายจะครอบคลุมถึงแค่ไหน

    Tips: ถ้าเปลี่ยนจาก Click ซ้ายค้างเป็น Click ขวาค้างแทน ทันจะมีเมนูขึ้นมาถามว่าต้องการจะ Copy หรือ Move ข้อมูล แถมมีให้เลือกด้วยว่าจะ Copy ในลักษณะไหน

    right-click-menu

    การแทรกข้อมูล (Insert)

    คุณสามารถเลือกได้ว่าจะแทรกข้อมูลหลังจากการ Copy (ต้นฉบับยังอยู่) หรือจากการ Cut (ต้นฉบับหายไปเลย) โดยเมื่อ Insert แล้วสามารถเลือกทิศทางในการเลื่อนได้ด้วยว่าจะให้เลื่อน Cell เดิมไปทางขวา หรือว่าเลื่อนลง

    insert-0

    สมมติเลือกให้ Shift ไปทางขวา

    insert

    Cell เดิมก็จะถูกเลื่อนไปทางขวาโดยอัตโนมัติตามลำดับ
    (สังเกตว่าเดิมอยู่ C –> D,  D –> E,  E –> F เป็นต้น)

    แต่ถ้าต้นฉบับเป็นการ Copy/Cut ทั้งแถว หรือทั้งคอลัมน์ Excel จะไม่ขึ้นมาถามว่าจะเลื่อนช่องไปในทิศไหน เพราะมันถูกบังคับให้เลื่อนในทิศเดียว เช่น Copy ทั้งแถว ก็ต้องเลื่อนลง ส่วน Copy ทั้งคอลัมน์ ก็ต้องเลื่อนไปทางขวา เป็นต้น

    การ Repeat Action ด้วยปุ่ม F4

    หมายถึง ให้ Excel ทำซ้ำการกระทำล่าสุดที่เราทำลงไป มีคีย์ลัดแบบกดง่ายสุดๆ คือ กดปุ่ม F4 ซึ่งมีประโยชน์มากๆ ในการทำอะไรซ้ำๆ โดยเฉพาะเป็นเรื่องที่ปกติแล้วเป็นต้องกดหลาย step กว่าจะทำ action นั้นๆ ได้ เช่น Insert Column / Delete Row / ตีกรอบ

    ตัวอย่าง 1 : การ Insert Row

    • ตอนแรกให้กด insert Row ตามปกติก่อน โดย เลือก row แล้วคลิ๊กขวา –> Insert จากนั้น Excel จะจำการกระทำนี้ไว้
    • ต่อมาเราสามารถไปเลือก Row อื่น แล้วกด F4 เพื่อให้ Excel Insert Row ได้เลย

    f4-1

    f4-2

     

    ตัวอย่าง 2: การตีกรอบให้ Cell พร้อมถมสีพื้นหลังโดยใส่ Fill Color ด้วย

    • ตอนแรกให้คุณทำ Format Cell ด้วยการตีกรอบ แล้วใส่สี (ถ้าคุณทำขั้นตอนนี้เป็น 2 Step เช่น ตีกรอบก่อน แล้ว ค่อยใส่สี มันจะจำแต่ Action ใส่สีไว้)
      f4-3
    • ต่อมา คุณสามารถกด F4 เพื่อให้ Excel ตีกรอบ และ ใส่สีในปุ่มเดียวได้เลย
      f4-4