Tag: Excel

  • ใช้ฟังก์ชัน FILTER กรองเอาเฉพาะตัวเลขในคอลัมภ์

    วันนี้เจอปัญหาหนึ่งในข้อมูลที่เราเก็บไว้ใช้เอง คือ ในคอลัมภ์นั้นมีทั้งตัวเลข ตัวอักษร และไม่มีข้อมูล แต่เราอยากได้เฉพาะตัวเลข ไม่เอาตัวอักษรและเซลล์ที่ไม่มีข้อมูล

    โดยปกติ Excel ทำได้โดยใช้ Autofilter ในตารางได้อยู่แล้วล่ะ

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

    และคิดว่าฟังก์ชัน FILTER คงทำได้แหละ และไปค้นเจอใน Google Groups นี้ และก็ตรงกับที่อยากใช้พอดี

    การใช้ฟังก์ชัน FILTER กรองเราเฉพาะตัวเลขในคอลัมภ์

    โดยฟังก์ชัน FILTER จะใช้กรองข้อมูลที่ตรงกับเงื่อนไขที่ระบุไว้จาก Range อื่น

    และเราจะใช้ร่วมกับอีก 3 ฟังก์ชัน (แต่ไม่ยากนะ 😁 อย่าพึ่งรีบหนีไปล่ะ) ก็คือฟังก์ชัน

    • VALUE() ซึ่งให้ตัวเลขกลับมา แม้ว่าในเซลล์นั้น ๆ จะเป็นตัวเลขที่เก็บในรูปแบบข้อความ (number stored as text)
    • ISERROR() ซึ่งบอกว่าสูตรที่เราใช้ error ไหม? ถ้ามีจะใช้ค่ากลับมาเป็น TRUE อย่างเช่น ISERROR(VALUE(“5”)) จะให้ค่ากลับมาเป็น FALSE ก็คือไม่ error เพราะค่าของ 5 เป็นจำนวน ไม่ใช่ข้อความ
    • NOT() จะให้ค่าตรรกะตรงกันข้าม จาก TRUE เป็น FALSE และจาก FALSE เป็น TRUE อย่างเช่น NOT(ISERROR(VALUE(“5”))) จะให้ค่ากลับมาเป็น TRUE

    ใครอยากดูไฟล์ตัวอย่าง คลิกตรงนี้และ File > Save as > Download a copy จาก OneDrive ได้เลยนะครับ

    จากภาพตัวอย่างข้อมูลจะอยู่ในคอลัมภ์ A ส่วนผลลัพธ์จะอยู่คอลัมภ์ C

    โดยสูตรที่ใช้คือ

    =FILTER(A2:A25,NOT(ISERROR(VALUE(A2:A25)))*(A2:A25<>""))
    • A2:A25 เป็น Range ที่มีข้อมููลทั้งหมด (ทั้งตัวเลข ข้อความ และไม่มีข้อมูล)
    • NOT(ISERROR(VALUE(A2:A25))) คือ บอกฟังก์ชัน FILTER ว่า เอาเฉพาะเซลล์ที่ทดสอบว่าเป็นตัวเลขแล้วไม่ error นะ
    • ส่วน *(A2:A25<>””) ก็คือ บอกฟังก์ชัน FILTER ว่าเซลล์ที่ไม่มีข้อมูลก็ไม่เอานะ ใครสงสัยส่วนนี้ อ่านวิธีใช้งานฟังก์ชัน FILTER เพิ่มได้

    ถ้าเราต้องการแค่ข้อความล่ะ ไม่เอาตัวเลข

    👍 ถูกต้องแล้วครับ เอาฟังก์ชัน NOT ออกไปซะ จบเลย

    โดยสูตรที่ใช้เหลือแค่นี้

    =FILTER(A2:A25,ISERROR(VALUE(A2:A25))*(A2:A25<>""))

    ก็คือ เราบอกฟังก์ชัน FILER ว่า เอาเฉพาะเซลล์ที่ทดสอบว่าเป็นตัวเลขแล้วเกิด error

    เอิ่ม! แล้วทำไมไม่ใช้ฟังก์ชัน UNIQUE ร่วมกับ COUNT ไปเลยล่ะ

    😒 บอกตรง ๆ เลยว่่า พึ่งนึกออกตอนเขียนโพสต์นี้ล่ะครับ 😶‍🌫️

    สำหรับคนที่ งง ว่าอะไรของมึ้ง…

    คือฟังก์ชัน COUNT มันนับเฉพาะตัวเลขอยู่แล้ว ส่วนฟังก์ชัน UNIQUE ก็จะกรองเอาเฉพาะข้อมูลที่ไม่ซ้ำมาให้

    ดังนั้นสิ่งที่ผมต้องการจริง ๆ ก็คือ ใช้สูตรแค่นี้ก็ได้

    =COUNT(UNIQUE(A2:A25))

    โอ้ย… นกเอี้ยงบินมาเกาะเพียบเลย ต้องไปนอนแล้วล่ะ 😂✌️

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

    =COUNTA(UNIQUE(FILTER(A2:A25,ISERROR(VALUE(A2:A25))*(A2:A25<>""))))

    ใช้สูตร =COUNTA(UNIQUE(A2:A25)) เลยไม่ได้ เพราะตัวเลขนับเป็นข้อความใน Excel ด้วย หากสงสัยลองดูในไฟล์ตัวอย่างนะครับ

    มีข้อสงสัยตรงไหน หรืออยากให้เขียนอะไรเพิ่มเติม comment ไว้ได้เลยนะครับ 😘

    🥴 ปล. ผมนึกออกแล้วว่ากรณีงานของผม ทำไมต้องใช้ฟังก์ชัน FILTER ใช่แค่ COUNT ร่วมกับ UNIQUE ไม่ได้ผล เพราะผมมีเงื่อนไขเพิ่มเติมในอีก 2 คอลัมภ์ ซึ่งต้องไปใช้ร่วมกับฟังก์ชัน COUNTIFS อีกที

  • สูตร Excel สำหรับแยกชื่อและนามสกุล ด้วยฟังก์ชัน TEXTBEFORE และ TEXTAFTER

    ผมเคยเขียนวิธีการแยกชื่อ-สกุลออกมากันไปแล้วตอนหนึ่ง โดยใช้ Text to Columns ในแถบ Data

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

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

    สำหรับผู้ที่ไม่มี 2 ฟังก์ชันดังกล่าว ก็สามารถใช้ LEFT() และ RIGHT() รวมกับ FIND() และ LEN() ได้

    แต่ก่อนอื่นมาดูข้อมูลก่อน

    ตัวอย่างข้อมูลที่จะใช้ฟังก์ชัน TEXTBEFORE() และ TEXTAFTER() แยกชื่อ-สกุล

    จากภาพตารางข้อมูลด้านบน ช่องข้อมูลหลักของเราจะเป็นคอลัมภ์ A ซึ่งจะเป็นชื่อ-สกุล รวมอยู่ในเซลล์เดียวกัน แยกด้วย spacebar ส่วนคอลัมภ์ B จะเป็นชื่อที่เราจะใช้ TEXTBEFORE() แยกออกมา และคอลัมภ์ C จะใช้ TEXTAFTER()

    การใช้งาน TEXTBEFORE()

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

    =TEXTBEFORE(text,delimiter,[instance_num],[match_mode],[match_end],[if_not_found])
    • text – ก็คือข้อความ หรือเซลล์ที่เราจะดึงข้อมูลออกมา
    • delimiter – เป็นอักษร หรือข้อความที่เราจะบอกให้ฟังก์ชันหา และเอาข้อความที่อยู่ก่อนหน้านี้ออกมาให้เรา
    • instance_num [ไม่ต้องใส่ก็ได้] – แต่ถ้าใช้หมายถึงจะเลือกจากการเจอ delimiter ครั้งที่เท่าไหร่ ปกติค่านี้เป็น 1 แต่ถ้าตัวเลขติดลบ เช่น -1 ฟังก์ชันจะค้นจากด้านหลังย้อนกลับมา
    • match_mode [ไม่ต้องใส่ก็ได้] – ใช้กำหนดว่าเราต้องการแยกความแตกต่างระหว่างตัวเล็กกับตัวใหญ่หรือไม่ (ภาษาอังกฤษ) ปกติค่าเป็น 0 คือจะแยก a กับ A ว่าต่างกัน ถ้ากำหนดเป็น 1 จะไม่สนใจจะเป็น a หรือ A ฟังก์ชันจะหยุด
    • match_end [ไม่ต้องใส่ก็ได้] – ใส่เพิ่มให้ delimiter เป็นตัวอักษรสุดท้ายไหม ซึ่งในทางปฏิบัติคือ ถ้าไม่พบ delimiter ผลลัพธ์จะเป็นข้อความที่ใส่ไปนั่นเอง ปกติค่าจะเป็น 0 คือ ไม่ต้องทำ ถ้าไม่พบผลลัพธ์จะเป็น #N/A หรือข้อความที่เรากำหนดเองในอาร์กิวเมนต์สุดท้าย ส่วนถ้ากำหนดเป็น 1 ผลลัพธ์ก็คือ ค่าที่อยู่ในเซลล์ หรือข้อความที่เราใส่เข้าไปในอาร์กิวเมนต์แรก
    • if_not_found [ไม่ต้องใส่ก็ได้] – ใช้กำหนดข้อความที่จะให้แสดง หากไม่พบ delimiter ในค่าที่อยู่ในเซลล์ หรือข้อความที่เราใส่เข้าไปในอาร์กิวเมนต์แรก ปกติหากไม่พบผลลัพธ์จะเป็น #N/A ส่วนถ้าจะกำหนดก็คือ ใส่ข้อความของเราในเครื่องหมายคำพูด (double quote) เช่น “Not found” หรือ “ไม่พบ” เป็นต้น

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

    ตัวอย่างการใช้ฟังก์ชัน TEXTBEFORE() อย่างง่าย

    โดยสูตรที่เราใช้ใน B2 ก็คือ

    =TEXTBEFORE(A2," ")

    ก็จะเห็นว่า เราจะได้เฉพาะข้อความที่อยู่หน้า spacebar กลับมา

    การใช้งาน TEXTAFTER()

    =TEXTAFTER(text,delimiter,[instance_num], [match_mode], [match_end], [if_not_found])

    โดยจะสังเกตว่าอาร์กิวเมนต์ต่าง ๆ จะเหมือนกับ TEXTBEFORE() ทุกอย่าง แต่จะได้ผลลัพธ์ที่ตรงกันข้ามคือ ได้ข้อความที่อยู่หลัง delimiter กลับมา

    ตัวอย่างการใช้ฟังก์ชัน TEXTAFTER() อย่างง่าย

    โดยสูตรที่ใช้ใน C2 ก็คือ

    =TEXTAFTER(A2," ")

    และเราจะได้เฉพาะข้อความที่อยู่หลัง spacebar กลับมา

    การแยกชื่อด้วยฟังก์ชัน LEFT() ร่วมกับ FIND()

    สำหรับผู้ที่ไม่มีฟังก์ชัน TEXTBEFORE() ในช่อง B2 เราจะใช้สูตร

    =LEFT(A2,FIND(" ",A2)-1)

    โดยฟังก์ชัน LEFT() จะดึงตัวอักขระเริ่มจากทางซ้าย (ซึ่งบางทีผมก็เรียกว่า “ข้อความ” นะ 😅) ตามจำนวนที่เราใส่ไว้ในอาร์กิวเมนต์ที่ 2 ซึ่งในที่นี้เราใช้ฟังก์ชัน FIND() ซึ่งจะบอกว่าไปเจออักขระ หรือข้อความที่เราใส่ในอาร์กิวเมนต์แรก ว่าเจอเป็นลำดับที่เท่าไหร่

    และเหตุที่ต้องลบ 1 ออกจากค่าที่ FIND() ส่งกลับมา เพราะ FIND() จะส่งตำแหน่งที่เจอ (ในตัวอย่างนี้คือ spacebar) กลับมา อย่างใน B2 คือตำแหน่งที่ 4 แต่เราต้องการแค่ 3 อักขระ ก็คือ “ชยา”

    ส่วนหากใครไม่ได้ลบออก 1 อักขระที่เราไม่เห็นเพราะมันเป็น spacebar แต่ถ้าใช้ฟังก์ชัน LEN() ซึ่งจะบอกว่าข้อความนั้นมี 4 อักขระ

    ⚠️ฟังก์ชัน FIND() จะเป็นสนใจความแตกต่างระหว่างตัวเล็กกับตัวใหญ่ในภาษาอังกฤษนะ ถ้าเราไม่สนใจให้ใช้ฟังก์ชัน SEARCH() แทน

    การแยกนามสกุลด้วยฟังก์ชัน RIGHT() ร่วมกับ LEN() และ FIND()

    ส่วนการแยกนามสกุล เราจะใช้สูตรนี้

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

    โดยฟังก์ชัน RIGHT() จะดึงอักขระเริ่มจากด้านขวาของอาร์กิวเมนต์ที่เราใส่เข้าไป ตรงกันข้ามกับ LEFT()

    ส่วนอาร์กิวเมนต์ที่ 2 เราจะใช้ฟังก์ชัน LEN() ซึ่งจะบอกว่า A2 มีอักขระทั้งหมดกี่ตัว และในตัวอย่างคือ 13 อักขระ แล้วมาหักลบออกด้วยค่าที่ฟังก์ชัน FIND() ไปเจอ spacebar มา ซึ่งก็คือ 4 จะเหลือ 9 อักขระ ดังนั้นผลลัพธ์ก็เลยเป็น “ภัชรปรีดา”

    จะเห็นได้ชัดว่ากรณีแยกนามสกุลฟังก์ชัน TEXTAFTER() ช่วยทำให้การพิมพ์สูตรของเราดูง่ายขึ้นเยอะเลย

  • การทำตัวเลือก drop down แบบค้นหาได้

    การทำตัวเลือก drop down แบบค้นหาได้

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

    ตัวอย่างที่งานฝ่ายบุคคลพบบ่อยได้แก่ คนที่ชื่อ “นา” แผนก Operation นี่เขาชื่อจริงว่าอะไรนะ โดยเฉพาะคนที่ไม่ได้ส่งเมล์หาคนคนนั้นบ่อย ๆ

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

    ตัวอย่างคือ ถ้าเราพิมพ์คำว่า “นา” เข้าไป จะมีเฉพาะรายชื่อพนักงานที่มีคำนี้อยู่ในชื่อมาให้เลือก

    ก่อนอื่นข้อมูลตัวอย่างอยู่ในซีตชื่อ “data” โดยข้อมูลนี้ได้จากการสุ่มมาจาก https://kidhaina.com/thainamegenerator.html และเหมือนเช่นเคย (สำหรับผม 😁) ข้อมูลทำการ Format as Table แล้ว และตั้งชื่อเป็น tblData

    ข้อมูลพนักงานที่เราใช้นำมาทำตัวอย่าง

    มีอีก 2 คอลัมภ์ที่นำข้อมูลที่มีอยู่มาเชื่อมกัน โดยคอลัมภ์ i หรือ forlookup จะใช้แสดงผลลัพธ์เมื่อผู้ใช้เลือกชื้อใดชื่อหนึ่ง

    ส่วนคอลัมภ์ j หรือ forsearch ใช้เพื่อช่วยให้เราสามารถค้นหาได้ทั้งภาษาไทยและภาษาอังกฤษ ดังภาพ

    2 คอลัมภ์ที่นำข้อมูลที่มีอยู่มาเชื่อมกัน

    ฟังก์ชันที่ใช้กรองข้อมูล

    สำหรับการกรองข้อมูลที่มีอยู่เทียบกับข้อมูลที่ถูกพิมพ์เขามา เราจะใช้ฟังก์ชัน FILTER(), SEARCH() และ ISNUMBER() ทำงานร่วมกัน

    สำหรับตัวอย่างผมแยกชีต “Data” กับ “Search” ออกจากกัน โดยข้อมูลที่จะให้ผู้ใช้พิมพ์และเลือกตัวเลือกจะอยู่ในเซลล์ B2 ของชีตชื่อ “Search”

    ของเริ่มจากฟังก์ชัน SEARCH() ซึ่งใช้สำหรับค้นหาตัวอักษรหรือข้อความ โดยไม่สนความแตกต่างของตัวใหญ่หรือตัวเล็กในภาษาอังกฤษ โดยสูตรผมจะใส่ในเซลล์ L2 ตามนี้ก่อน

    =SEARCH(Search!$B$2,tblData[forsearch])

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

    แต่เราจะใช้เฉพาะแถวที่เป็นผลเป็นตัวเลข เราก็เลยต้องพึ่งฟังก์ชัน ISNUMBER() ซึ่งผลจะได้เป็นไม่ TRUE ก็จะเป็น FALSE ดังภาพ

    =ISNUMBER(SEARCH(Search!$B$2,tblData[forsearch]))

    และเราจะใช้ค่านี้ส่งเข้าไปให้ฟังก์ชัน FILTER() ช่วยกรองเอาเฉพาะข้อมูลที่ตรงกับที่พิมพ์มา ซึ่งก็คือค่าเป็น TRUE และสูตรจะกลายเป็น

    =FILTER(tblData[ชื่อ-สกุล],ISNUMBER(SEARCH(Search!$B$2,tblData[forsearch])),"Not found")

    โดยอาร์กิวเมนต์ตัวแรกจะเป็นข้อมูลที่เราต้องการ ซึ่งในที่นี้คือคอลัมภ์ “ชื่อ-สกุล” เพราะต้องการแสดงข้อมูลจากคอลัมภ์นี้

    และเป็นสูตรที่เราใช้ก่อนหน้านี้ ⚠️ ซึ่งจะค้นหาจากคอลัมภ์ชื่อ “forsearch” เพราะเราต้องการค้นหาทั้งภาษาไทยและภาษาอังกฤษ

    สุดท้ายถ้าไม่พบให้ส่งค่า “Not found” กลับมา

    ผลลัพธ์หลังใช้ร่วมกับฟังก์ชัน FILTER()

    จะเห็นว่าเราจะใช้เฉพาะชื่อพนักงานที่มีคำว่า “นา” อยู่ด้วยกลับมา

    และหากเราต้องการเรียงข้อมูลด้วย เราสามารถใส่ฟังก์ช้น SORT() เพิ่มเข้าไปอีกชั้นหนึ่งได้ และสูตรก็จะกลายเป็น

    =SORT(FILTER(tblData[ชื่อ-สกุล],ISNUMBER(SEARCH(Search!$B$2,tblData[forsearch])),"Not found"))
    ผลลัพธ์หลังจากที่เราใช้ฟังก์ชัน SORT เพิ่มเข้าไป

    โดยฟังก์ชัน FILTER() จะให้ข้อมูลกลับมาเป็นไดนามิก อาร์เรย์ (dynamic array) ซึ่งผลลัพธ์จะส่งกลับมามากกว่า 1 ค่า และจะเรียงลงไปตามแถวเรื่อย ⚠️ ดังนั้นคอลัมภ์ L ไม่ควรจะมีอะไรนอกจากนี้ ไม่เช่นนั้นข้อมูลจะถูกวางทับไป แต่ถ้าเราจะแก้ไขอะไรก็แก้ไขแค่ L2 เท่านั้น

    เมื่อเสร็จจากการเตรียมรายการข้อมูลที่จะให้ผู้พิมพ์เลือกแล้ว เราจะกลับไปที่ชีต Search และเลือกเซลล์ B2 เพื่อทำ Data Validation (Data > Data Validation > Data Validation…)

    ที่ Allows: เลือกเป็น List และที่ Source: เลือกเป็นชีต Data เซลล์ L2 และพิมพ์เครื่องหมาย # เปิดท้าย 💡 เพื่อให้ Excel ดึงรายการด้านล่างมาดด้วย ดังภาพ

    =Data!$L$2#

    และ💥ที่ลืมไม่ได้คือ เราต้องยกเลิก Error Alert ของ Data Validation ของเซลล์นี้ด้วย ไม่เช่นนั้นเราจะพิมพ์ค่าอื่น นอกเหนือจากที่มีข้อมูลไม่ได้ และ Excel จะแสดง Error ให้ผู้ใช้ทราบ

    ซึ่งถ้าพิมพ์ข้อมูลที่ไม่พบ รายการจะแจ้งว่า “Not found” อยู่แล้ว

    คลิกที่แถบ Error Alert และคลิกที่เครื่องหมายถูกที่มีอยู่ให้หายไป ซึ่งจะได้ลักษณะดังภาพ

    เมื่อทำเสร็จ สมมติเราลองพิมพ์ “ya” เข้าไป เพื่อหาผู้ที่ในชื่อมีคำนี้ ก็จะได้ผลลัพธ์ดังภาพ

    ทดลองค้นด้วยภาษาอังกฤษ

    และหากเราเลือกเป็น “ชยา ภัชรปรีดา (คิด)” ในช่อง D2 ก็จะแสดงชื่อและแผนกของคน ๆ นั้นขึ้นมา ดังภาพด้านล่างนี้

    ใช้ XLOOKUP() ไปด้วยข้อมูลกลับมาแสดงผล

    เพียงเท่านี้ก็เรียบร้อยแล้วครับ หากติดขัดตรงไหนดูจากไฟล์ตัวอย่าง หรือ comment ไว้ด้านล่างได้นะครับ

  • การใส่เครื่องหมายคำพูดในสูตร Excel

    อาจมีบางครั้งเหมือนกันที่เราต้องการใช้ผลลัพธ์ใน Excel ที่เป็นเครื่องหมายคำพูด หรือเครื่องหมายอัญประกาศ หรือบางคนก็เรียกว่า “ฟันหนู” (มีหลายชื่อเหมือนกันแฮะ) โดยในภาษาอังกฤษก็คือ double quote (“) หรือเรียกเต็มคือ double quotation mark นั่นเอง

    และก็เป็นที่รู้กันอยู่แล้วว่า double quote ใช้สำหรับกำหนดช่วงของข้อความในสูตร Excel เช่น ถ้าเราใช้สูตร =A1&" นิ้ว" และในเซลล์ A1 มีค่าเท่ากับ 3 ผลลัพธ์ในเซลล์ที่เราใส่สูตรไว้จะแสดงเป็น 3 นิ้ว

    ตัวอย่างการเพิ่มข้อความ (string) ในสูตร Excel

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

    ตัวอย่าง error ที่เกิดขึ้นหากเราใส่เครื่องหมายคำพูดใน Excel ไม่ครบคู่

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

    วิธีการใส่เครื่องหมายคำพูดในผลลัพธ์ที่ถูกต้อง

    หรือหากใครใช้สูตรที่ซับซ้อนเกรงว่าจะงง เราสามารถใช้ฟังก์ชัน CHAR() แทนการใช้ escape string ก็ได้ โดยรหัส ASCII ของเครื่องหมายคำพูดคือ 34 จากภาพด้านล่างสูตรในเซลล์ E2 จะเป็น =D2&CHAR(34) และจะได้ผลลัพธ์เป็น 6"

    การใช้ฟังก์ชัน CHAR เพื่อแสดงเครื่องหมายคำพูด

  • การตัดข้อมูลซ้ำออกใน Excel

    สำหรับใครที่เจอปัญหาที่จะต้องกรอง หรือตัดข้อมูลซ้ำออกบ่อย ๆ โดยเฉพาะข้อมูลที่มาจาก Microsoft Forms หรือ Google Forms ซึ่งตั้งแต่ก่อนจะต้องใช้ advance filter มาช่วยจัดการ แต่ค่อนข้างจะใช้หลายคลิกถึงจะได้เฉพาะข้อมูลที่ต้องการ รวมถึงหากข้อมูลเปลี่ยนไปข้อมูลที่กรองออกมาแล้ว จะไม่เปลี่ยนแปลงตาม (ไม่ dynamic update) ตอนนี้ใน Excel มีฟังก์ชันชื่อ UNIQUE มาช่วยแก้ไขปัญหานั้นแล้ว

    ฟังก์ชัน UNIQUE ใน Excel

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

    ตัวอย่างการใช้ฟังก์ชัน UNIQUE และการใช้ร่วมกับฟังก์ชัน SORT

    การใช้งานฟังก์ชัน UNIQUE

    วิธีใช้งานง่าย ๆ คือใช้สูตร =UNIQUE(A2:A40) ใน cell แรกที่เราต้องการจะใส่ข้อมูลที่ผลการกรอกข้อมูลจะออกมา

    ไวยากรณ์ (Syntax)

    =UNIQUE(array,[by_col],[exactly_once])
    • array ก็คือ range ข้อมูล หรือจะใส่ข้อมูลเป็น array ก็ได้ (หมายถึงฟังก์ชันที่ให้ค่ากลับมาเป็น array)
    • by_col 💬 ไม่จำเป็นต้องระบุ จะเป็น FALSE โดยปริยาย แต่ถ้ากำหนด TRUE จะกำหนดให้กรองข้อมูลโดยดูจากคอลัมภ์ (ใช้ในกรณีข้อมูลที่จะกรองมาในแบบคอลัมภ์) เพราะปกติฟังก์ชัน UNIQUE จะกรองในแบบแถว (row)
    • exactly_once 💬 ไม่จำเป็นต้องระบุ จะเป็น FALSE โดยปริยาย แต่ถ้ากำหนดเป็น TRUE

    ตัวอย่างการกรองข้อมูลซ้ำแบบคอลัมภ์

    สำหรับอีกตัวอย่างเป็นการกรองข้อมูลที่เรียงมาแบบคอลัมภ์ โดยแถวที่ 1 ในไฟล์ตัวอย่างจะสุ่มตัวเลขจากคอลัมภ์ B ถึง Z

    และในแถวที่ 4 จะเป็นผลลัพธ์จากการตัดข้อมูลซ้ำออกไปแล้ว โดยข้อมูลซ้ำในแถวที่ 1 จะถูกไฮไลท์สีแดงไว้

    การกรองเอาเฉพาะข้อมููลที่พบเพียงครั้งเดียว

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

    ซึ่งจากในภาพจะเห็นว่า มีเพียง 2 คน แต่ถ้าเปิดจากไฟล์ตัวอย่างข้อมูลอาจแตกต่างไปจากนี้ ทั้งตัวอย่างใน sheet ที่ 2 และ 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

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

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

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

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

    ในตอนนี้เราจะขอใช้สูตร 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 แล้วแต่จะเลือกใช้