Author: lungthi

  • การเช็คความจุแบตเตอรี่ของ notebook ที่ใช้ Windows 10

    ปัญหาหนึ่งที่ผู้ใช้งาน notebook เจออยู่บ่อย ๆ คือ “รู้สึกว่าเวลาถอดสายชาร์จแล้วใช้งานได้ไม่นานเหมือนตอนที่ซื้อมาใหม่ ๆ” 🤨 และปัญหานั้นก็มาจากความจุแบตเตอรี่มันลดลง หรือเรียกว่า “แบตเสื่อม” นั่นเอง

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

    และเป็นเรื่องที่น่าแปลกใจนิดหน่อยที่ Microsoft ไม่มี report การใช้งานแบตให้ดูได้ง่าย ๆ ผ่าน UI (User Interface) ทั้ง ๆ ที่มีการเก็บข้อมูลการใช้งานแบตเตอรี่ค่อนข้างละเอียดเลย

    คำสั่งที่ใช้เช็ค battery ของ Windows

    แต่เราสามารถดูข้อมูลนี้ได้ จากการใช้คำสั่งที่ต้องพิมพ์เอา ผ่าน Command Prompt หรือ PowerShell โดยคำสั่งที่ใช้ก็คือ

    powercfg /batteryreport

    ซึ่งไฟล์ report ที่ได้จะอยู่ในโฟลเดอร์ตอนที่คุณใช้คำสั่งนั้น โดยปกติจะอยู่ที่ “C:\Users\your-username\” หรือไม่ก็ “C:\” เลย

    หรืออาจกำหนดโฟลเดอร์ที่เก็บไฟล์ report ให้คำสั่งด้วยก็ได้ โดยใช้คำสั่ง

    powercfg /batteryreport /output "C:\Apps\battery_report.html"

    การเรียกใช้ Command Prompt หรือ Windows PowerShell

    สามารถทำได้โดยกดปุ่ม Windows (⊞) บนคีย์บอร์ด (หรือคลิกที่ปุ่ม Start) แล้วพิมพ์คำว่า cmd หรือ powershell ซึ่งที่จริงไม่ต้องพิมพ์เต็มคำก็ได้ เดี๋ยวระบบจะเสนอขึ้นมาให้เอง เราก็เลือก Command Prompt หรือ PowerShell ดังภาพด้านล่าง

    พิมพ์ cmd แล้วกด Enter หากคุณต้องการเรียกใช้ Command Prompt
    พิมพ์ powersh แล้วกด Enter หากคุณต้องการเรียกใช้ PowerShell

    เมื่อเปิด Command Prompt หรือ PowerShell ขึ้นมาแล้ว ปกติระบบจะให้เราอยู่ที่โฟลเดอร์หลักของ user นั่นก็คือ “C:\Users\your-username” โดย “your-username” ก็คือชื่อที่คุณใช้ login เข้าใช้คอมฯ นั่นเอง

    ตัวอย่างการใช้คำสั่งเช็คแบตเสื่อมผ่าน Command Prompt

    จากนั้นก็พิมพ์คำสั่งลงไป หรือ copy จากบรรทัดล่างนี้ไปก็ได้

    powercfg /batteryreport
    ตัวอย่างคำสั่งตรวจสอบแบตเตอรี่ใน Command Prompt และที่จริงแล้วไม่จำเป็นต้องกำหนด /output ก็ได้

    โดยไฟล์ report ที่ได้จะมีชื่อว่า battery_report.html และอยู่ที่ C:\Users\your-username ให้เราไปเปิดดูใน File Explorer แล้วดับเบิ้ลคลิกเพื่อเปิดดูได้เลย

    ไฟล์ battery report ที่ได้จากการใช้คำสั่ง powercfg /batteryreport

    ตัวอย่างการใช้คำสั่งเช็คแบตเสื่อมผ่าน PowerShell

    พิมพ์คำสั่งลงไป หรือ copy จากบรรทัดล่างนี้ไปก็ได้ แต่รอบนี้เราจะลองให้แบบกำหนดโพลเดอร์ของ output file

    powercfg /batteryreport /output "C:\battery_report.html"
    ตัวอย่างคำสั่งตรวจสอบแบตเตอรี่ใน Windows PowerShell

    ไฟล์ report ที่ได้จะมีชื่อว่า battery_report.html และอยู่ที่ไดรฟ์ C เลย

    แต่ในภาพด้านล่างนี้จะต่างกันนิดหนึ่ง เพราะผมกำหนดให้มันอยู่ใน C:\Apps\\battery_report.html

    แต่สำหรับคนที่ไม่ได้เป็น Admin อาจจะพบปัญหาบ้าง หาก Admin ไม่อนุญาตให้คุณ save ข้อมูลลงไนไดรฟ์ C:\

    ถ้าพบข้อความแบบนี้ แสดงว่า คุณไม่มีสิทธิเขียนข้อมูลลงในโพลเดอร์นั้น ๆ

    การอ่าน report ที่ได้จากคำสั่งเช็คแบตเสื่อม

    ส่วนแรกจะเป็นข้อมูลเกี่ยวกับ computer ของคุณ

    ส่วนที่ 2 จะเป็นข้อมูล battery ที่ติดตั้งอยู่ในเครื่องคุณ โดย Design Capacity คือความจุเต็มตอนซื้อแบตมาใหม่ ๆ อย่างของผมคือ 67,997 mWh ส่วนตรง Full Charge Capacity คือ ความจุตอนที่ชาร์จเต็มในปัจจุบัน ซึ่งของผมเป็น 46,238 mWh จะเห็นว่าลดลงมาเยอะมาก ๆ ถ้าเอามาคิดเป็นเปอร์เซ็นต์จะเห็นว่า ตอนนี้ความจุตอนชาร์จเต็มของผมอยู่ที่ 68% ของตอนที่ซื้อมาใหม่ ๆ เท่านั้นเอง

    ในส่วนของ Recent usage ก็จะเป็นข้อมูลการใช้ notebook ของเรา 3 วันย้อนหลัง

    ส่วน Battery usage จะเป็นกราฟและข้อมูลการใช้ battery ของเครื่องเราว่า กินไฟจากแบตเร็วแค่ไหน 3 วันย้อนหลัง

    สำหรับหัวข้อ Battery capacity history จะเป็นประวัติว่า ชาร์จเต็มแต่ละครั้ง ได้ความจุเท่าไหร่

    สำหรับเครื่องผมเห็นแล้วแอบตกใจนิดหนึ่ง คือราว ๆ เดือนกรกฎา เกิดอะไรขึ้นทำไมความจุมันลดลงแบบฮวบฮาบขนาดนั้น แต่ผ่านมาหลายปีแล้ว จำไม่ได้หรอก หรือเป็นช่วง Work From Home อันนี้ไม่แน่ใจเลย 😅

    และหัวข้อสุดท้ายคือ Battery life estimates ก็จะเป็นค่าที่ระบบประเมินไว้ว่า ถ้าชาร์จเต็ม notebook เราจะใช้ได้นานเท่าไหร่ จากที่เห็นแถวสุดท้ายที่เขียนว่า Since OS Install ของผมอยู่ที่ 3 ชั่วโมงครึ่งโดยประมาณ ส่วนตัวผมคิดว่า ค่อนข้างจะตรงตามที่ผมให้งานนะ งานเอกสารที่ต้องการ connect กับ server ตลอดเวลา แต่ถ้ามีวิเคราะห์ข้อมูลที่พัดลมหมุนดัง ๆ หน่อยก็จะหมดไวเป็นพิเศษ 😂

    แล้วเครื่องของคุณ ๆ เป็นไงกันบ้างครับ 💬 comment ไว้แชร์ประสบการณ์กันได้นะ

    การยืดอายุแบตเตอรี่

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

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

    • อย่าให้อยู่ในที่ร้อน ซึ่งตรงนี้บางลักษณะงานทำอยาก เพราะบ้านเราอากาศมันร้อน
    • อย่าชาร์จเต็ม อันนี้อาจต้องใช้ software เข้ามาช่วย ให้มีประจุอยู่ราว ๆ 40 – 80% ของความจุ
    • อย่าให้แบตเหลือ 0% แล้วค่อยชาร์จ และอย่าพึ่งชาร์จ หากแบตยังลงไม่ถึง 80% ว่ากันว่า เริ่มชาร์จที่ 50% จนถึง 80% ดีที่สุด ลองอ่านจาก BU-808: How to Prolong Lithium-based Batteries
    • ให้ใช้จนแบตหมด (เครื่องดับไปเอง) 1 ครั้งแต่เดือนแล้วชาร์จให้เต็ม หรือเรียกว่า การคาริเบทแบตเตอรี่ (Battery calibration) ซึ่งทำเพื่อให้ระบบควบคุมการใช้งานแบต ที่มีอยู่ใน battery pack หรือใน mainboard แล้วรุ่น มีความแม่นยำในการให้ข้อมูลแบตเรา

    ที่จริงเรื่องการยืดอายุการใช้งานแบตเตอรี่มีหลายทฤษฏีอยู่เหมือนกัน เอาไว้มาแชร์อีกในโพสต์อื่นจะดีกว่า 😊

  • การนับแบบหลายเงื่อนไขใน Excel

    การนับแบบหลายเงื่อนไขใน Excel

    ในบางครั้งเราก็ต้องการรู้จำนวนบางสิ่ง โดยที่มีหลายเกณฑ์ หรือหลายเงื่อนไข เช่น

    • อยากรู้ว่าพนักงานในฝ่ายวิศวกรรมมีเพศชายกี่คน เพศหญิงกี่คน หรือ
    • อยากรู้ว่า รถรุ่นนี้ สีแดงในภาคตะวันออกขายได้กี่คัน เป็นต้น

    เมื่อใช้ Excel เราจะใช้สูตรอะไร หรือฟังก์ชันไหนมาช่วยดี มาหาคำตอบกันในโพสต์นี้ครับ

    สรุปย่อ

    ใน Excel มีฟังก์ชันชื่อ COUNTIFS() สำหรับใช้นับแบบหลายเกณฑ์ หรือเงื่อนไข โดยจำนวนที่นับได้นั้น คือ จำนวนที่เข้าทุกเกณฑ์ หรือทุกเงื่อนไขที่ใส่เข้าไปในฟังก์ชัน หรือพูดให้ง่ายก็คือ COUNTIFS() ใช้เงื่อนไขแบบ “และ (AND)”

    ดังนั้น ⚠️”ข้อมูลที่ตรงแค่บางเงื่อนไขจะไม่ถูกนับ” นะ

    ตัวอย่าง

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

    ตัวอย่างผลลัพธ์จากฟังก์ชัน COUNTIFS()

    ซึ่งจะได้มาจากการนับข้อมูล ซึ่งผมกำหนดให้เป็นตาราง (Format as Table) ไว้แล้ว ดังภาพด้านล่าง หรือจะดูจากลิงค์ หรือดาวน์โหลด “ไฟล์ตัวอย่าง” มาลองใช้ดูก็ได้ 😁

    โดยตารางนี้จะชื่อ EmployeeTable และมีหัวตารางชื่อ Firstname, Lastname, Gender, Department และ Salary แต่หากใครสะดวกใช้ range แบบปกติก็ไม่มีปัญหาอะไรนะ ผมชอบทำแบบนี้เพราะมันอ่านง่ายและที่สำคัญคือ Excel จะช่วย suggest ให้โดยที่เราไม่ต้องพิมพ์ชื่อ range หรือ cell ในสูตร

    ส่วนจำนวนที่นับได้จะอยู่ในตารางชื่อ SummaryTable ดังภาพ

    จะเห็นว่าในเซลล์ I2 สูตรจะเป็น

    =COUNTIFS(EmployeeTable[Department],[@Department],EmployeeTable[Gender],"M")

    โดยมีเกณฑ์ที่เราใส่เข้าไปอยู่ 2 อย่าง คือ “ชื่อแผนก” กับ “M” หรือเพศชาย และผลลัพธ์ที่ได้ออกมาคือ 3 ก็คือจากข้อมูลในแผนก HR & Administration มีพนักงานผู้ชายอยู่ 3 คน

    ถึงตรงนี้หากใครยัง งงงง 🤔 อยู่ ไม่เป็นไรนะ เราไปดูไวยากรณ์ หรือวิธีการใช้ฟังก์ชันจะเข้าใจมากขึ้น

    ไวยากรณ์

    COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2],…)

    มีอาร์กิวเมนต์ที่เราต้องบอกให้ฟังก์ชันทราบ ดังนี้

    • criteria_range1 [จำเป็นต้องมี] ให้กำหนด range ข้อมูลของเกณฑ์แรก ที่เราจะให้ฟังก์ชันไปหา
    • criteria1 [จำเป็นต้องมี] เกณฑ์ข้อมูลตัวแรก ที่เราต้องการจะนับ
    • criteria_range2 กำหนด range ข้อมูลของเกณฑ์ที่สอง ที่เราจะให้ฟังก์ชันไปหา
    • criteria2 เกณฑ์ข้อมูลที่ 2 ที่เราต้องการจะนับ
    • หมายถึง คุณใส่คู่ของ range และเกณฑ์เพิ่มเข้าไปได้เรื่อย ๆ 😏 แต่จำไม่ได้ว่าเท่าไหร่

    ⚠️ข้อควรระวัง

    • สำคัญมาก❗criteria_range2 และอื่น ๆ ที่เพิ่มเข้าไป จะต้องมีแถวและคอลัมภ์เท่ากันกับ criteria_range1 เสมอ แต่ไม่จำเป็นต้องอยู่ติดกัน
    • อันนี้บอกไปแล้ว ต้องเขาทุกเกณฑ์ หรือทุกเงื่อนไขนะ ถึงจะนับเพิ่มให้
    • หากอาร์กิวเมนต์ criteria อ้างอิงไปยังเซลล์ที่ว่าง (ไม่มีข้อมูล) จะถือว่า อาร์กิวเมนต์นั้นคือ 0 (ศูนย์) ถ้าใน criteria_range มี 0 ถือว่าเข้าเงื่อนไขนะ และจะนับเพิ่มให้
    • สามารถใช้อักขระตัวแทน (wildcard) เครื่องหมายคําถาม (?) และดอกจัน (*) ในเกณฑ์ได้ โดยที่
      • ? หมายถึง “อักขระตัวเดียว”
      • และ ??? หมายถึง “อักขระ 3 ตัว”
      • ส่วน * หมายถึง “อักขระกี่ตัวก็ได้”
      • แล้วถ้าอยากใช้ ? และ * ในเกณฑ์ ให้ใช้เครื่องหมาย ~ นำหน้า เช่น ~? และ ~*

    อธิบายสูตรเพิ่มเติม

    สำหรับคนที่ไม่ถนัดใช้ตาราง (Table) สูตรที่ผมใช้ใน I2 ก็คือ

    =COUNTIFS($D$2:$D$36,G2,$C$2:$C$36,"M")
    • โดย criteria_range1 ของเราก็คือ range ที่ชื่อแผนกทั้งหมดของพนักงานแต่ละคน โดยในที่นี้คือ $D$2:$D$36 หรือ EmployeeTable[Department]
    • criteria1 ของเราคือ G2 หรือ [@Department] ซึ่งเป็นชื่อแผนกที่เรากำหนดเป็นเกณฑ์ ในที่นี้ก็คือ HR & Administration
    • criteria_range2 ก็จะเป็น range ที่เก็บเพศของพนักงานแต่ละคน ในที่นี้คือ $C$2:$C$36 หรือ EmployeeTable[Gender]
    • criteria2 เราใส่ “M” สำหรับผู้ชาย และ “F” สำหรับผู้หญิง เนื่องจากข้อมูลเราเป็นแบบนี้

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

    อย่างเช่น เราจะนับว่ามีพนักงานที่มีเงินเดือนมากกว่า 50,000 ในแผนก Production และเป็นเพศหญิงกี่คน? เราก็จะได้สูตรเป็น

    =COUNTIFS(EmployeeTable[Salary],">50000",EmployeeTable[Department],"Production",EmployeeTable[Gender],"F")

    ฟังก์ชันที่เกี่ยวข้องและใช้งานเหมือนกัน

    นอกจาก COUNTIFS() แล้ว ในกลุ่มนี้ยังมีฟังก์ชันอื่นที่ใช้งานเหมือนกัน และมักผมมักถูกถามอยู่บ่อย ๆ ได้แก่

    • MINIFS() – หาค่าที่ต่ำที่สุด โดยที่ต้องเข้าทุกเกณฑ์ หรือทุกเงื่อนไข
    • MAXIFS() – หาค่าที่มากที่สุด โดยที่ต้องเข้าทุกเกณฑ์ หรือทุกเงื่อนไข
    • SUMIFS()หาผลรวม โดยที่ต้องเข้าทุกเกณฑ์ หรือทุกเงื่อนไข
    • AVERAGEIFS()หาค่าเฉลี่ย โดยที่ต้องเข้าทุกเกณฑ์ หรือทุกเงื่อนไข

    ส่วนการนับ หาค่าต่ำสุด หาค่าสูงสุด หาผลรวม และหาค่าเฉลี่ย แบบที่มีเกณฑ์เพียงตัวเดียว เราก็สามารถเลือกใช้ฟังก์ชัน COUTIF(), MINIF(), MAXIF(), SUMIF() และ AVERAGEIF() ตามลำดับได้เช่นกัน

    ถึงตรงนี้แล้ว หากใครมียังสงสัยก็ 📝comment ไว้ได้เลยนะครับ 😊

    และไฟล์ตัวอย่างสามารถดู หรือดาวน์โหลดได้จาก ➡️ OneDrive เช่นเคย

  • การทำตัวเลือกแบบ drop down แบบหลายชั้นใน Excel

    การทำตัวเลือกแบบ drop down แบบหลายชั้นใน Excel

    สรุปย่อ

    การทำตัวเลือกแบบ drop down หลายชั้น หรือตัวเลือกในเซลล์หนึ่งขึ้นอยู่กับข้อมูลที่เราเลือกในเซลล์อื่น เราจะใช้ data validation, named range, และ INDIRECT() ทำงานร่วมกัน

    ตัวอย่าง

    สมมติว่าเราต้องการให้ตัวเลือกในคอลัมภ์ A เป็นประเภทของสินค้า ซึ่งมี 3 อย่าง ก็คือ ผลไม้ เนื้อสัตว์ และพืชผัก

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

    ขั้นตอนที่ 1 กำหนดตัวเลือกและกำหนดชื่อ (named range)

    จากภาพตัวอย่างด้านบน จะเห็นว่าผมใส่ข้อมูลที่จะใช้เป็นตัวเลือกไว้ในคอลัมภ์ E ถึง G โดยประเภทที่จะเลือกในคอลัมภ์ A จะอยู่ในแถวที่ 1 ส่วนตัวเลือกที่จะให้แสดงในคอลัมภ์ B จะอยู่ในแถวที่ 2 เป็นต้นไป

    ที่นี้การกำหนดชื่อเรียกใช้กับ cell หรือ range ให้เราไปที่แถบ (tab) Formulas > Name Manager แล้วเลือก New… แล้วจะมีหน้าต่างขึ้นมาให้เราใส่ข้อมูล ดังภาพ

    แล้วให้เรากำหนดชื่อที่เราต้องการในช่อง Name: พร้อมกับเลือก cell หรือ range ของข้อมูลในช่อง Refer to:

    โดยในตัวอย่างที่เราใช้ แต่ละช่องจะใส่ข้อมูลตามตารางนี้

    Name:Scope:Comment:Refers to:
    ประเภทWorkbook=Sheet1!$E$1:$G$1
    ผลไม้Workbook=Sheet1$E$2:$E$12
    เนื้อสัตว์Workbook=Sheet1$F$2:$F$10
    พืชผักWorkbook=Sheet1$G$2:$G$7

    📝 กฎการตั้งชื่อ named range หรือ Name Manager ของ Excel

    • ชื่อจะต้องขึ้นต้นด้วยตัวอักษร หรือ underscore ( _ ) หรือ backslash ( \ )
    • ในชื่อจะต้องไม่มีช่องว่าง (space) รวมถึงสัญลักษณ์พิเศษอื่น ๆ
    • อย่าตั้งชื่อเหมือนชื่อ cell หรือ range อย่างเช่น A1 Z100 หรือ XY22.
    • ใช้อักษรตัวเดียวก็ได้ แต่จะใช้ตัว r กับตัว c ไม่ได้ เพราะ Excel สงวนไว้ใช้เอง
    • ตัวอักษรเล็ก หรือใหญ่ ถือว่าเหมือนกัน (not case-sensitive) ดังนั้น VAT, Vat, vat, vAt จะถือว่าเป็นชื่อเดียวกัน

    ขั้นตอนที่ 2 กำหนด data validation ให้ range ที่เราต้องการใช้ drop down

    1. เลือก range หรือ cell (ซึ่งในภาพเลือกหลายเซลล์ หรือ range 😂 บอกเ.ฉย ๆ เผื่อเผลอลืม) ที่ต้องการจะตรวจสอบข้อมูลว่า ใส่ได้เฉพาะที่เข้าเงื่อนไขเท่านั้น หรือ data validation นั่นเอง
    2. ไปที่แถบ (tab) Data
    3. คลิกที่ไอคอนของ Data Validation
    1. ที่แถบ Settings ในช่อง Allow: ให้เลือกเป็น List
    2. ในช่อง Source: ให้พิมพ์ =ประเภท หรือชื่อที่คุณตั้งไว้ในขั้นตอนที่ 1 (หรือใส่ =Sheet1!$E$1:$G$1 ก็ได้ หากคุณไม่ได้ทำตามขั้นตอนที่ 1 มาก่อน แต่การทำแบบนี้หากคุณปรับ range ที่เก็บข้อมูล “ประเภท” คุณต้องมาไล่แก้ค่าที่ใส่นี้ในทุก cell คงไม่สะดวกนัก ถึงจะมีตัวเลือก ◽ Apply these changes to all other cells with the same settings แต่แนะนำให้ใช้ named range จะดีกว่า)

    พอเสร็จขั้นตอนนี้ หากคุณคลิกที่ A2 ถึง A10 จะเห็นว่าจะมีตัวเลือก หรือรายการให้เลือกแบบ drop down ขึ้นมาแล้ว อย่างในภาพ

    ขั้นตอนที่ 3 การทำตัวเลือกแบบ drop down ชั้นที่ 2 โดยใช้ฟังก์ชัน INDIRECT

    ซึ่งตัวเลือกในชั้นที่ 2 นี้จะขึ้นอยู่กับตัวเลือกที่เราเลือกไปก่อนหน้านี้ หรือในคอลัมภ์ A ของตัวอย่างนี้

    โดยเราก็จะใช้ data validation เหมือนในขั้นตอนที่ 2 แต่ในช่อง Source: เราจะใช้ฟังก์ชัน INDIRECT ไปดูชื่อ “ประเภท” ที่ถูกเลือกไว้ในคอลัมภ์ A ของแถวนั้น ๆ สำหรับตัวอย่างที่เราใช้จะมีขั้นตอนการทำดังนี้

    เลือก range ที่ต้องการ (ในตัวอย่างคือ B2:B10) แล้วไปที่แถบ Data > Data Validation

    1. ดูให้แน่ใจว่าในช่อง Allow: คุณเลือกเป็น List
    2. ในช่อง Source: ให้พิมพ์ =INDIRECT($A2) ❗ให้สังเกตนะ เรา fix คอลัมภ์อย่างเดียวนะ ไม่ได้ fix แถว

    เมื่อเสร็จขั้นตอนนี้แล้ว ลองเลือกตัวเลือกในคอลัมภ์ B ดู โดยให้สังเกตว่า จะมีเฉพาะตัวเลือกที่อยู่ในหมวดของคอลัมภ์ A เท่านั้น

    อย่างเช่นถ้าคอลัมภ์ A เป็น “พีชผัก” ตัวเลือกในคอลัมภ์ B ก็จะมีเฉพาะ ผักหัว ผักใบ ผักสลัด …

    จากตัวอย่างการทำตัวเลือกแบบ drop down 2 ชั้นนี้ คุณสามารถนำไปประยุกต์ใช้แบบหลาย ๆ ชั้นก็ได้ โดยการผ่านกำหนดข้อมูลและตั้งชื่อ แล้วมาใช้ Data Validation ร่วมกับฟังก์ชัน INDIRECT แบบที่เราทำใน 3 ขั้นตอนที่ผ่านมา

    ⚠️ข้อควรระวัง

    • ชื่อหมวดหมู่ที่จะใช้ ต้องเป็นไปตามกฎการตั้งชื่อ named range ของ Excel เท่านั้น ❗สำคัญมาก // หมายความว่า คุณจะตั้งชื่อตามใจตนเองได้ แต่ไม่มากนัก
    • ใน Range ที่จะกำหนด อย่าเลือกช่องว่างเผื่อไว้ สำหรับเพิ่มข้อมูลทีหลัง เพราะช่องว่างจะแสดงมาให้เลือกด้วย ตามจำนวนช่องว่างที่คุณเลือกไว้เลยด้วย (ตรงนี้ทาง Microsoft ทราบปัญหาอยู่แล้ว และกำลังให้กลุ่มผู้ใช้ Office Insider Program ทดลองใช้อยู่)
    • หากคุณพิมพ์ตัวเลือกซ้ำ Excel ก็จะแสดงข้อมูลนั้นซ้ำด้วย
    • ตัวเลือกจะเรียงตามลำดับที่คุณป้อนข้อมูลเข้าไป Excel จะไม่เรียงให้ หากต้องการข้อมูลเรียงตามลำดับอักษร ให้จัดเรียงใน range ที่กำหนดไว้

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

    สำหรับไฟล์ตัวอย่างดาวน์โหลดได้นี่ ➡️ ตัวอย่างการทำตัวเลือกแบบ drop down หลายชั้นใน Excel

    🎉 ในไฟล์มีตัวอย่างการทำ drop down ขั้นที่ 3 ด้วยนะ ✨

    อ่านแล้ว ถ้าติดปัญหาตรงไหน ก็ใส่ comment ไว้ได้เลยครับ 😊

  • การใช้ฟังก์ชัน LAMBDA ใน Excel

    สรุป

    ฟังก์ชัน LAMBDA ใช้สำหรับ สร้างฟังก์ชันใหม่ เพิ่มเข้าไปในไฟล์ Excel (workbook) โดยไม่ต้องเขียน Macro(s) หรือ VBA code 😊👍 เพิ่มเข้าไปในไฟล์ ซึ่งจะช่วยให้เราไม่ต้องพิมพ์ หรือ copy-paste สูตรที่เขียนขึ้นซ้ำแล้วซ้ำอีก รวมทั้งฟังก์ชันที่สร้างจาก LAMBDA() นี้ จะสามารถเรียกใช้ตลอดในไฟล์ Excel นั้น ๆ เสมือนเป็นหนึ่งในฟังก์ชันที่มีมากับ Excel

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

    ตอนนี้ฟังก์ชัน LAMBDA อยู่ในช่วงทดลองใช้งานในกลุ่ม Office Insiders อยู่ ดังนั้นสำหรับผู้ใช้งานทั่วไป จะยังไม่เห็นฟังก์ชันนี้ เปิดให้ใช้งานทั่วไปแล้ว (ข้อมูล ณ วันที่ 25 เม.ย. 2566)

    รูปแบบการใช้งาน (Syntax)

    =LAMBDA([parameter1,parameter2,...],calculation)

    อาร์กิวเมนต์ (Arguments)

    อาร์กิวเมนต์คำอธิบายจำเป็นต้องมี?
    parameterXใช้กำหนดค่า หรือตัวแปรต้นที่จะใช้ประกอบการคำนวณ
    แต่จะมีได้ไม่เกิน 253 ค่า โดยจะเป็นตัวเลข (number) หรือข้อความ (text) ก็ได้
    ไม่
    calculationเป็นสูตร หรือสมการที่เราจะใช้ในการคำนวฯ ซึ่งผลจากการคำนวณนี้จะเป็นผลลัพธ์ของฟังก์ชัน LAMDA ที่เราสร้างขึ้นจำเป็น

    ข้อควรระวังในการใช้งาน

    • ถ้าใส่ parameter เกิน 253 ตัว จะแสดง error เป็น #VALUE!
    • ถ้าเรียงลำดับอาร์กิวเมนต์ผิด จะแสดง error เป็น #VALUE! หรือไม่ก็จะเป็นอัลกอริทึม error ไปเลย ซึ่งตรงนี้ Excel จะไม่รู้กับเรานะ 😁 แต่ผลการคำนวณจะไม่ตรงกับสิ่งที่เราอยากได้
    • ถ้าเราเรียกใช้ฟังก์ชัน LAMBDA() นั้น ๆ ในเซลล์เดียวซ้อนกันในตัวมันเอง จะแสดง error เป็น #NUM!
    • ถ้าคุณสร้างฟังก์ชัน LAMBDA() ในเซลล์ แต่ไม่ได้เรียกใช้มัน จะแสดง error เป็น #CALC!
    • ชื่อ parameter ห้ามมีจุด (.) และให้ตั้งชื่อตามกฎการตั้งชื่อของ Excel
    • ตรวจสอบผลลัพธ์ที่ได้จาก LAMBDA() ว่าตรงตามที่ต้องการทุกกรณี โดยเฉพาะการส่งผ่านอาร์กิวเมนต์ เพราะ LAMBDA() จะใช้คำสั่ง Evaluate ใน Excel ช่วยตรวจสอบไม่ได้

    การสร้างฟังก์ชัน LAMBDA

    ขั้นตอนที่ 1 กำหนดสูตร หรือสมการที่เราจะใช้

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

    สมมติว่า เราจะสร้างใช้ LAMBDA() ในการแปลงหน่วยออนซ์ (ounce) ไปเป็นมิลลิลิตร (milliliter) โดยหลักการแล้ว 1 oz จะเท่ากับ 29.57353 mL ดังนั้นสูตรที่ใช้แปลงจากออนซ์ไปเป็นมิลลิลิตร คือ oz * 29.57353

    และผลลัพธ์ของการคำนวณควรออกมาตามตารางนี้

    Ounce(s)Milliliter(s)สูตรคำนวณปกติที่ใช้ใน Excel ของคอลัมภ์ B
    00.00=A6*29.57353
    129.57=A7*29.57353
    259.15=A8*29.57353
    388.72=A9*29.57353
    4118.29=A10*29.57353
    5147.87=A11*29.57353
    ตารางแปลงหน่วยออนซ์ให้เป็นมิลลิลิตร โดยหน่วยมิลลิลิตรถูกปัดให้เหลือทศนิยม 2 ตำแหน่ง

    อ้างอิงจาก – https://www.metric-conversions.org/th/volume/us-ounces-to-milliliters.htm

    และเราจะลองคำนวณใน Excel จะเป็นไปตามรูปด้านล่างนี้

    ขั้นตอนที่ 2 ทดสอบสูตร หรือสมการของ LAMBDA()

    ขั้นตอนนี้ใช้ยืนยันผลการคำนวณจาก LAMBDA() ว่าตรงตามสูตรคำนวณปกติไหม โดยผลลัพธ์จะอยู่ในคอลัมภ์ B และสูตรที่ใช้ในคอลัมภ์ B จะอยู่ในคอลัมภ์ C ดังภาพด้านล่างนี้

    จากภาพก็จะเห็นว่า ผลลัพธ์ที่ได้จากการคำนวณจะเท่ากันกับสูตรในขั้นตอนแรกเลย แต่เราจะไม่ใช้ LAMBDA() แบบนี้หรอกนะ เพราะไม่งั้นมันจะไม่ต่างจากการเขียนสูตร (formula) ทั่วไปใน Excel

    ขั้นตอนที่ 3 การกำหนดชื่อให้ฟังก์ชัน LAMBDA ที่เราสร้างขึ้น

    ซึ่งเป็นจุดประสงค์ของการมีฟังก์ชัน LAMBDA คือ ต้องการให้เรียกใช้งานมันได้ง่าย เหมือนฟังก์ชันอื่นใน Excel เพียงแต่มันจะมีขอบเขตใช้งานภายในไฟล์ Excel นั้น ๆ เท่านั้น ไม่เหมือนฟังก์ชัน bulit-in ของ Excel ที่เรียกใช้งานได้จากทุกไฟล์

    และการกำหนดชื่อนี้จะช่วยให้เราเรียกใช้ฟังก์ชัน LAMBDA ที่เราสร้างขึ้นได้ง่าย ไม่ต้องพิมพ์ หรือ copy-paste สูตรซ้ำ ๆ

    โดยมีขั้นตอนดังนี้

    1. ไปที่แถบ (tab) Formulas > Name Manager (สูตร > ตัวจัดการชื่อ) แต่ถ้าใช้ macOS จะใช้ Formulas > Define Name
    2. ใส่ข้อมูลในช่อง (fields) ต่าง ๆ โดย
      • Name: พิมพ์ชื่อทีเราจะตั้งให้กับ LAMBDA ที่เราจะสร้างนี้ โดยมักเป็นชื่อที่สื่อความหมายของสิ่งที่ฟังก์ชันทำ
      • Scope: ปกติจะเลือกเป็น Workbook ตามที่ Excel เลือกมา ยกเว้นคุณอยากจะเปลี่ยนให้เห็นเฉพาะใน Worksheet เท่านั้น
      • Comment: ถึงจะไม่จำเป็นต้องใส่ แต่แนะนำให้ใส่เป็นอย่างยิ่ง เพราะเมื่อเวลาผ่านไป เราจะได้รู้ว่าชื่อที่เรากำหนดไว้นี้ใช้ทำอะไร มีที่มาที่ไปอย่างไร
      • Refer to: ใส่สูตรของ LAMBDA() ที่เราจะใช้ (ถ้าไม่อยากให้ Excel ใช้ automatic cell reference ให้กด F2)
    Dialog สำหรับกำหนดชื่อให้ LAMBDA() หรือชื่ออื่น ๆ ที่ใช้ใน Excel

    จากภาพข้อบนจะเห็นว่า ผมตั้งชื่อของฟังก์ชัน LAMBDA นี้ว่า OzTomL และสูตรในช่อง Refer to: เป็น =LAMBDA(Oz,Oz*29.57353) และมีการใส่ Comment แหละ แต่ Dialog จะเป็นภาษาไทย 😂 บางท่านอาจไม่ชอบ

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

    Excel จะเสนอชื่อฟังก์ชัน LAMBDA ที่เรากำหนดขึ้นเสมือนเป็นหนึ่งใน built-in function ของ Excel เลย

    ตัวอย่างข้างบน อาจเป็นตัวอย่างการเขียน comment ที่ไม่ดีนัก 😅 เพราะควรจะบอกวิธีการเรียกใช้ โดยเฉพาะลำดับอาร์กิวเมนต์ที่จะต้องส่งเข้าไปในฟังก์ชัน ลองนึกถึงภาพตอนที่ Excel เสนอฟังก์ชันที่ built-in มา

    เมื่อคลิกเลือกฟังก์ชัน จะบอกว่าต้องใส่พารามีเตอร์อะไรเข้าไป ซึ่งในที่นี้ก็คือ Oz

    และสุดท้ายจะเป็นตัวอย่างตารางที่เราเรียกใช้ LAMBDA() ที่สร้างขึ้นจริง ๆ

    การเรียกใช้งานฟังก์ชัน LAMBDA ที่เรากำหนดชื่อไว้

    เป็นยังไงกันบ้าง พอเห็นภาพการใช้งานฟังก์ชัน LAMBDA ที่กำลังจะเปิดให้ใช้งานกันไหม หรือนึกออกยังว่าจะเอาไปประยุกต์ใช้งานยังไงดี

    สำหรับตัวอย่างคลิกดาวน์โหลดได้ตรงนี้ ➡️ ไฟล์ตัวอย่างการใช้งานฟังก์ชัน LAMBDA ใน Excel

    มีความคิดเห็น หรือสงสัยอะไรก็ทิ้ง comment ไว้ได้นะครับ

  • ใช้ Excel แยก ชื่อ ชื่อกลาง นามสกุล

    สิ่งที่ผมมักพบบ่อย ๆ เลย clean data ที่ได้มาทำต่อ ก็มักจะเป็น คนที่ให้ข้อมูลเรามา ใส่ข้อมูล 2 หรือ 3 อย่างไว้ใน cell เดียวกัน 😆

    แน่นอนครับ คนเราส่วนมากไม่รู้ตั้งแต่แรกหรอกว่า ควรจะทำ data normalization 😲 ก่อนเก็บข้อมูล

    [26 ม.ค. 2566] แยกชื่อ-สกุลด้วยสูตร ⬅️อ่านจากลิงค์นี้

    โดยเฉพาะชื่อ-สกุลของคน มาหลากหลายรูปแบบมาก ดังนี้เราจะค่อย ๆ ดูไปทีละแบบเท่าที่เคยเจอมาก็แล้วกัน

    😁 เริ่มจากกรณีที่เข้าใจว่า ง่ายที่สุดก่อนก็แล้วกัน

    กรณีแรก: ชื่อ-สกุล ไม่มีคำนำหน้า

    ชื่อ-สกุลFull Name
    ฐิติสร เสถียรไทยThitisorn Sathianthai
    แกล้วกล้า วิจิตรพงศ์พันธ์Klaew-kla Vijitpongpun
    ธนุธรรม แสนสุรินทร์Tanutam Sansurin
    ปุรันต์ โรจนสุขชัยPuran Rojjanasukchai
    โมกขเวสา กาสันต์Mokkhavesa Gason
    บุปกรณ์ พญาBuppakorn Phaya
    ภรา พิชิตPhara Pichit
    ธนศร กาญจนพาสน์Tanusorn Kanjanapas
    ฐิติวุฒิ แก้วมณีThitiwut Kaewmanee
    ทรงพล เตมีรักษ์Songpol Temirak
    ปมุต ศุภรัตน์Pamut Suparat
    ทัดพงศ์ สิทธิราษฎร์Tadpong Sitdhiras
    ปวรุต ประเวศPawarut Praves
    ปัณณธร พฤกษาพรรณPannathorn Prugsanapan
    เนติวิทย์ มณีรัตนาNetiwit Maneerattana
    อรุณ ชื่นจำรัสAroon Cheenchamras
    เจริญ ศุภชัยCharoen Supachai
    ถวัลย์ วิจิตรพงศ์พันธ์Thawan Vijitpongpun
    ปัทมา ทับชุมพรPattama Thabchumpon

    กรณีแบบนี้คุณต้องขอบคุณ คนที่ให้ข้อมูลมาเป็นอย่างมาก 🥰 ถือว่า แทบไม่ต้องทำอะไรเพิ่มเลย

    มี 2 ทางเลือกใช้เราใช้

    • Text to Column (กด Alt ➡ A ➡ E) หรือไปที่แถบ Data > Text to Column
    • ใช้สูตร

    Text to Column

    1. เพิ่มคอลัมภ์เปล่าด้านขวามาอีก 1 คอลัมภ์ หรือ 2 คอลัมภ์ หากมีชื่อกลาง
    2. เลือกคอลัมภ์ “ชื่อ-สกุล” แล้วไปที่แถบ Data > Text to Column หรือกดปุ่ม Alt ▶ A ▶ E
    3. ที่ตัวเลือก เลือกเป็น “Delimited”
    4. เลือกประเภทของ ตัวคั่นข้อมูล (Delimit) ที่เราต้องการ ซึ่งกรณีนี้คือ ช่องว่าง (Space) และอย่าลืม ติ๊ก ที่ Treat consecutive as one เผื่อกรณีที่มี space มากกว่า 1 คั่นระหว่างชื่อ-สกุล แล้วกดปุ่ม Next
    5. เลือกประเภทข้อมูล ซึ่งในที่นี้เป็น “ชื่อ-สกุล” เลือกเป็น Text และเลือก cell ที่เราต้องนำข้อมูลไปใส่ (หลังคำว่า Destination) ในตัวอย่างผมใส่ cell เดิม คือ A1
    6. หากคุณ เลือกให้ข้อมูลทับจุดเดิม จะมีกล่องข้อความเตือนแสดงขึ้นมา ถ้าแน่ในให้ตอบ 🆗 ไป
    หน้าต่างเมื่อเรียกใช้ Text to Column
    เลือกประเภทของ ตัวคั่นข้อมูล (Delimit) ที่เราต้องการ ซึ่งกรณีนี้คือ ช่องว่าง (Space) และอย่าลืม ติ๊ก ที่ Treat consecutive as one เผื่อกรณีที่มี space มากกว่า 1 คั่นระหว่างชื่อ-สกุล

    เลือกประเภทข้อมูล และที่ที่จะให้เขาข้อมูลไปใส่ (หลังคำว่า Destination)

    หากคุณเลือกให้ใส่ผลลัพธ์ในช่องที่มีข้อมูลอยู่ จะมีกล่องข้อความเตือนแสดงขึ้นมา เลือก 🆗 ถ้าไม่มั่นใจก็ Cancel แล้วไปเลือก Destination ใหม่นะ 😅
    ผลลัพธ์จากการใช้ Text to Column

    จะสังเกตได้ว่าถึงจะมี “คำนำหน้า” มาด้วย แต่มีการใช้ space หรือช่องวางคั่นไว้ ก็สามารถใช้ Text to Column เช่นกัน

    ใช้สูตรแยก ชื่อ-สกุล

    สำหรับการใช้สูตร (formula) จากตัวอย่างเดิม ผมแทรกคอลัมภ์ เพิ่มขึ้นมา B ใช้เก็บชื่อ ส่วน C ใช้เก็บนามสกุล ดังภาพ

    การแยกชื่อ-สกุล โดยใช้สูตร โดยใน B3 จะเป็นสูตรที่ใช้ใน B2 และ C3 เป็นที่ใช้ใน C2

    สำหรับสูตรแยกชื่อ จะเรียกใช้ฟังก์ชันอยู่ 3 ฟังก์ชัน ก็คือ TRIM(), LEFT(), และ FIND()

    ซึ่งอัลกอริทึมก็คือ “ให้นับเอาตัวอักขระจากซ้ายมือไปจนกว่าจะเจอช่องว่าง

    สูตรที่ใช้ใน B2 คือ

    =TRIM(LEFT(A2,FIND(" ",A2)))

    ดังนั้นเราก็เลยฟังก์ชัน LEFT() ซึ่งจะทำหน้าที่เก็บอักขระตั้งแรกตัวแรกไปจนกว่า ฟังก์ชัน FIND() จะพบว่า ช่องว่าง หรือ space อยู่ลำดับที่เท่าไหร่ ซึ่งตรงนี้ใครจะใช้ SEARCH() ก็ได้นะ 😙

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

    ส่วนการแยกเอา “นามสกุล” นั้นจะมีอัลกอริทึมกลับกันกับ “ชื่อ” คือ ให้นับเอาอักขระจากขวามือ โดยจำนวนอักขระที่จะเอา เท่ากับความยาวของอักขระทั้งหมดใน cell นั้น ลบด้วยจุดแรกที่พบ ช่องว่าง

    สูตรที่ใช้ใน C2 คือ

    =TRIM(RIGHT(A2,LEN(A2)-FIND(" ",A2)))

    การนับเอาอักขระจากด้านขวามือ เราจะใช้ฟังก์ชัน RIGHT() และมีอีกฟังก์ชันเพิ่มขึ้นมาก็คือ LEN() ซึ่งจะใช้นับจำนวนอักขระที่มีอยู่ใน cell นั้น ๆ และสุดท้ายเราจะใช้ TRIM() ตัดช่องว่างที่เกินมาเหมือนเดิม

    กรณีที่สอง: ชื่อ ชื่อกลาง 😮 และสกุล ไม่มีคำนำหน้า

    หากทุกคนมีชื่อกลาง เราจะสามารถใช้ Text to Column ได้ แต่ในความเป็นจริง คงไม่เป็นเช่นนั้น ลองดูตัวอย่างนี้

    ในกรณีนี้การแยกชื่อกลาง จะมีเงื่อนไขเข้ามาเกี่ยวข้อง

  • การพยากรณ์ หรือประมาณการด้วย Excel

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

    • แน้วโน้มทางการตลาดจะเป็นอย่างไร?
    • ยอดขายจะเป็นเท่าไหร่?
    • สินค้าคงคลังจะเป็นเท่าไหร่?
    • และควรจะต้องมีพนักงานฝ่ายต่าง ๆ จำนวนเท่าไหร่?

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

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

    ในตอนนี้เราจะขอใช้สูตร Excel มาช่วยในการประมาณการสิ่งที่จะเกิดขึ้น ซึ่งน่าจะช่วยให้เป็นตัวอย่างให้เรานำไปใช้ในงานของผู้อ่านได้

    ตัวอย่างที่เราจะใช้ในตอนนี้คือ ประมาณการยอดผู้ติดเชื้อโควิด 19 ในประเทศไทยของเราเอง ซึ่งข้อมูลเราได้มาจาก รายงาน COVID-19 ประจำวัน ของ data.go.th แล้วนำมาสรุปเป็นยอดผู้ติดเชื้อต่อวัน แล้วก็จะได้ไฟล์ตัวอย่าง ซึ่งกดไปดูหรือดาวน์โหลดได้จากลิงค์นี้

    ตัวอย่าง Excel worksheet สำหรับประมาณการยอดผู้ติดเชื้อโควิด 19 ต่อวันในประเทศไทย

    โดยในไฟล์ตัวอย่าง ค่าในคอลัมภ์ต่าง ๆ จะเป็นตามนี้ ส่วนสูตรคำนวณจะอธิบายเพิ่มเติมอีกที

    • คอลัมภ์ A คือ Date ซึ่งก็คือวันที่
    • คอลัมภ์ B คือ CasePerDay ซึ่งก็คือ ยอดผู้ติดเชื้อต่อวัน ซึ่งเรารวมมาจากข้อมูลที่ได้จาก data.go.th ในลิงค์ที่ให้ไว้ด้านบน โดยเราสามารถนำข้อมูลยอดผู้ติดเชื้อรายวันของแต่ละวันมาป้อนลงในช่องนี้ได้ เพื่อให้การพยากรณ์วันต่อ ๆ ไปมีความแม่นยำขึ้น
    • คอลัมภ์ C คือ LowerConfidenceBound พูดง่าย ๆ ก็คือ ยอดต่ำสุดที่เป็นได้จากการพยากรณ์
    • คอลัมภ์ D คือ Forecast หรือเป็นค่าพยากรณ์ที่ได้จากข้อมูลย้อนหลัง
    • คอลัมภ์ E คือ UpperConfidenceBound พูดง่าย ๆ ก็คือ ยอดสูงสุดที่เป็นได้จากการพยากรณ์
    • คอลัมภ์ F คือ Error ซึ่งจะได้จากการเอายอดผู้ติดเชื้อจริงในวันนั้น ๆ เทียบกับยอดที่พยากรณ์ออกมาและทำเป็นเปอร์เซ็นต์

    สูตร Excel สำหรับการพยากรณ์จากข้อมูลเดิมที่เรามีอยู่แล้ว

    กราฟตัวอย่างผลประมาณการยอดผู้ติดเชื้อโควิค 19 ในประเทศไทย

    จะขอเริ่มจากคอลัมภ์ D หรือ Forecast(CasePerDay) ก่อน โดยผมเริ่มใช้พยากรณ์ในเดือนสิงหา (2564) ที่เซลล์ D580 เพราะอยากรู้สถานการณ์จะรุนแรงขึ้นหรือทุเลาลง ซึ่งสูตรที่ใช้จะเป็น

    =FORECAST.ETS(A580,$B$2:$B579,$A$2:$A579,0,1,1)

    โดยฟังก์ชัน FORECAST.ETS() จะใช้ได้กับ Excel 2016 เป็นต้นมา ส่วนใครใช้เวอร์ชันเก่ากว่านี้ให้ใช้ FORECAST() ซึ่งใช้ได้เหมือนกัน เพียงแต่ FORECAST() จะไม่ได้ต้องการอาร์กิวเมนต์เพิ่มเติม 3 ตัวหลัง แต่มันมีความแม่นยำน้อยกว่ามาก

    เหตุที่ฟังก์ชัน FORECAST.ETS() มีความแม่นยำกว่านั้นเป็นเพราะว่า ให้อัลกอริทึม (algorithm) ที่แตกต่างออกไป โดยใช้หลัการพยากรณ์แบบ AAA (Additive error, Additive trend, and Additive seasonality) ของ Exponential Triple Smooting (ETS) ถ้าอ่านแล้ว งง! ช่างมันครับ😂 เพราะมันเป็นหลักการพยากรณ์ค่าที่คนที่เขียนฟังก์ชัน (ไมโครซอฟต์) เอามาใช้ ซึ่งจะมีหลักการทำงานประมาณนี้

    พยากรณ์จากการนำค่าเฉลี่ยแบบถ่วงน้ำหนัก แต่น้ำหนักจะลดลงเรื่อย ๆ แบบเท่าทวีคูณ หากข้อมูลนั้นเก่ากว่า หรือพูดอีกนัยหนึ่งก็คือ จะให้น้ำหนักกับข้อมูลใหม่มากกว่า

    หน้า 171 Forecasting: Principles and Pratice, 2013

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

    ไทม์ไลน์ (Timeline)

    Timeline ถือว่าเป็นสิ่งสำคัญมากต่อความแม่นยำในการพยากรณ์ของ FORECAST.ETS() และต้องมีขั้นที่เท่ากันเสมอ ไม่ว่าจะเป็นทุกวัน ทุก 3 วัน ทุกสัปดาห์ ทุกเดือน หรืออาจจะเป็นขั้นของจำนวนก็ได้ เป็นต้น ที่สำคัญคือ ขั้นต้องเท่ากันเสมอ ซึ่งในตัวอย่างก็คือ ทุกวัน

    ไวยากรณ์ (Syntax)

    FORECAST.ETS(target_date, values, timeline, [seasonality], [data_completion], [aggregation])
    • target_date [จำเป็นต้องมี] คือ จุดข้อมูลที่คุณต้องการค่าพยากรณ์ โดยอาจเป็น วันที่ เดือน เวลา หรือตัวเลข แต่ถ้าวันที่ เดือน ปี เวลา หรือตัวเลยนั้น เกิดขึ้นก่อนที่จะมีข้อมูล (พยากรณ์ค่าในอดีต) FORECAST.ETS() จะแสดง error เป็น #NUM!
    • values [จำเป็นต้องมี] คือ ชุดข้อมูลในอดีตที่เราจะนำมาใช้พยากรณ์
    • timeline [จำเป็นต้องมี] คือ ช่วงเวลาของชุดข้อมูลใน values อย่าลืมนะว่า ขั้นต้องเท่ากันและต้องไม่เป็นศูนย์ แต่ไม่มีความจำเป็นต้องเรียงข้อมูลก็ได้ เพราะฟังก์ชันจะนำไปเรียงเอง
      • ถ้าขั้นของไทม์ไลน์ไม่เท่ากัน FORECAST.ETS() จะแสดง error เป็น #NUM
      • ถ้าในไทม์ไลน์มีค่าซ้ำกัน FORECAST.ETS() จะแสดง error เป็น #VALUE
      • ถ้าขนาดของ range ของ values กับ timeline ไม่เท่ากัน FORECAST.ETS() จะแสดง error เป็น #N/A
    • seasonality [ไม่ใส่ก็ได้] ค่านี้จะเป็นตัวเลข
      • ปกติจะเป็น 1 ซึ่งหมายถึงให้ฟังก์ชันคำนวณหาให้
      • แต่ถ้าใส่ 0 คือ ข้อมูลที่ใส่ใน values ไม่มีความเป็นฤดูกาล
      • ตัวเลขนี้ต้องเป็นจำนวนเต็มที่ระบุความเป็นฤดูกาลของข้อมูลที่เราใส่ใน values
      • ค่ามากที่สุดที่ใส่ได้คือ 8760 (จำนวนชั่วโมงใน 1 ปี) ถ้าค่ามากกว่านี้ FORECAST.ETS() จะแสดง error เป็น #NUM
    • data_completion [ไม่ใส่ก็ได้] จากที่เคยบอกไปก่อนหน้านี้ว่า FORECAST.ETS() ได้ข้อมูลที่เป็นช่วง ๆ หรือขั้นที่เท่ากัน แต่ FORECAST.ETS() ก็ยอมให้ข้อมูลไม่ครบ หรือหายไปได้ 30% นะ โดย
      • ถ้าใส่ 0 คือ ปรับข้อมูลในช่วง หรือขั้นนั้นให้เป็น 0
      • ถ้าใส่ 1 คือ จะนำที่อยู่ใกล้เคียงมาเฉลี่ย
    • aggregation [ไม่ใส่ก็ได้] ใช้กำหนดว่าจะให้ฟังก์ชันเอาข้อมูลที่เกิดในช่วงเวลาเดียวกัน (same time stamp) มาทำอย่างไรดี ซึ่งปกติคือ 0 หมายถึง ให้นำมาเฉลี่ย (Average) ส่วนตัวเลือกอื่น ๆ ได้แก่ นำมาบวกัน (SUM) นับจำนวน (COUNT) นับเฉพาะที่มีข้อมูล (COUNTA) เลือกเอาค่าน้อยสุด (MIN) เลือกเอาค่ามากสุด (MAX) และค่ามัธยฐาน (MEDIAN) ซึ่งก็ต้องใส่เป็นตัวเลข 1,2,3,4,5,6 แล้วแต่จะเลือกใช้

  • สร้าง QR CODE ฟรี โดยใช้ Google Sheets

    วันนี้เห็นเข้าสร้าง QR CODE โดยใช้ Google Sheets โดยใช้สูตร แล้วสามารถ copy ไปวางไว้ใน PowerPoint หรือ Word เพื่อใช้งานต่อได้เลย

    โดยปกติแล้ว เวลาสร้าง  qr code ผมก็มักจะค้นใน Google แหละ และก็ใช้ web service ที่ค้นเจอมา แล้ว download หรือ save ไฟล์ภาพมาใช้งานอีกที ตัวอย่างเว็บที่ใช้บ่อย ๆ ก็จะเป็น https://www.the-qrcode-generator.com

    [update – 7 ส.ค. 2564] เราสามารถสร้าง QR code ได้โดยตรงจาก address bar ของ Google Chrome และ Microsoft Edge

    วันนี้เห็น YouTuber คนหนึ่งเขาใช้ Google Sheets ทำ และใช้สูตรที่ไม่ได้ซับซ้อนมากนัก ลองดูในวิดีโอลิงค์ด้านล่างนี้ก็ได้

    สร้าง QR code จาก Google Sheets

    ก่อนจะใช้ Google Sheets แนะนำใช้เว็บเบราว์เซอร์รุ่นใหม่ ๆ หน่อย อย่าง Google Chrome, Microshoft Edge, Firefox หรือ Opera ส่วนผู้ใช้ macOS ก็ใช้ Safari ได้เลย

    และสิ่งสำคัญคือ ต้องลงชื่อเขาใช้บัญชีของ Google ด้วย อย่างเช่น Gmail หรือ Google Drive

    หากใช้ Google Chrome หรือ Apple Safari สามารถพิมพ์ sheets.new ที่ address bar ได้เลย

    sheets.new

    ส่วนเว็บเบราว์เซอร์อื่น ๆ ผมไม่ได้ลองดู อาจจะได้เหมือนกัน โดยเฉพาะคนที่ตั้งค่าการค้นหาจาก google.com ส่วนเสิร์ชเอนจินไม่แน่ใจนะ

    ภาพตัวอย่างการสร้างไฟล์ Google Sheets ใหม่จาก address bar ของเว็บเบราว์เซอร์

    จากนั้นเราก็จะได้ไฟล์ Sheets ใหม่ขึ้นมาหนึ่งไฟล์ ดังภาพด้านล่าง ซึ่งเราก็สามารถต้องชื่อเป็นชื่อที่เราต้องการได้เลย

    ในตัวอย่างผมจะใส่เว็บ url ที่ต้องการสร้าง qr code ใน B1 และใส่สูตรใน A1 ดังภาพ

    จากภาพจะเห็น เราจะใช้ function ชื่อ image() ซึ่งใน Excel ไม่มีนะ โดย function จะไปเรียก API ซึ่งเป็น web service  ในการสร้างกราฟ (chart) ของ Google อีกที ดูเหมือนจะซับซ้อน 😅 แต่เอาเป็นว่า เราเรียกใช้มันเป็นก็พอ ดังนั้นสูตรที่เราใส่ใน A1 คือ

    =image("https://chart.googleapis.com/chart?cht=qr&chs=300x300&chl="&B1)

    จากสูตรจะเห็นว่า ส่วนแรกจะเป็นการเรียกใช้ฟังก์ชัน image() ซึ่งมันต้องการ url ของรูป และในที่นี้เราก็เลยใส่ url ที่บอกให้ Google API สร้างรูป qr code ให้เรา โดย

    • url หลักก็คือ https://chart.googleapis.com/chart? ซึ่งหลังเครื่องหมายคำถามเราต้องใส่ประเภท chart หรือกราฟที่เราต้องการลงไป
    • ซึ่งในที่นี้คือ cht=qr เพื่อบอกว่า เราอยากได้ chart type ที่เป็นแบบ qr code
    • ส่วนถัดไป &chs=300×300 ก็คือบอกว่า เราต้องการ chart size ขนาด 300 x 300 พิกเซล นะ
    • และส่วนสุดท้ายก็คือ &chl= จะบอกว่า url หรือข้อความใน qr code นั้นคือคำว่าอะไร ซึ่งในที่นี่เราบอกให้ไปดูใน B1

    หากใครต้องการดูไฟล์ตัวอย่าง คลิกที่นี่

    ตัวอย่างไฟล์ภาพที่ได้จากการใช้ Google APIs สร้าง QR CODE ได้ฟรี

    สร้าง QR code จาก Address bar ของ Chrome และ Microsoft Edge ก็ได้

    วิธีผมก็ไม่รู้ว่า  Google Chrome กับ Microsoft Edge ใส่มาตั้งแต่เมื่อไหร่นะ แต่ส่วนตัวพึ่งเห็นฟังก์ชันนี้อยู่ใน address bar ของทั้งสองเบราว์เซอร์ เมื่อไม่กี่เดือนที่ผ่านมา

    วิธีการก็แสนง่ายดาย ซึ่งก็คือ

    1. ไปเข้าเว็บที่เราต้องการสร้าง  QR code และ
    2. คลิกที่ adress bar ก็จะมีไอคอนที่หน้าตาคล้าย ๆ QR code ปรากฎขึ้นมา
    3. คลิกที่ไอคอน Create QR code for this Page
    4. คลิกที่ปุ่ม Download
    สร้าง QR code โดยตรงจาก address bar ของ Chrome และ Edge
    กดปุ่ม Download เพื่อดาวน์โหลด QR code มาไว้ที่เครื่องของเรา