บทความนี้ผมตั้งใจจะให้เป็นบทความที่จะสอน Concept ของ Array Formula แบบสั้นๆ พอได้ไอเดียและพอเห็นภาพว่า Array Formula คืออะไร? มีข้อดีข้อเสียอย่างไร ?

ใครอยากรู้เชิญอ่านได้เลยครับ รับรองว่าได้ความรู้ดีๆ เพียบเช่นเคย!

Array Formula คืออะไร?

มันคือการเขียนสูตร Excel ขั้นสูง ที่เราเอาไว้ทำเรื่องเจ๋งๆ อย่างการ Dynamic Range (ขยาย หด range ตามต้องการ) , Filter, Sort,  การคำนวณแบบแปลกๆ ตามเงื่อนไข ด้วย “การเขียนสูตร” ได้

Array Formula จะเป็นสูตรที่ทำงานกับ ชุดข้อมูลที่มีสมาชิกหลายๆ ตัว (Array) พร้อมๆ กัน

พูดง่ายๆ คือ ถ้าเราใส่ Range แทนลงในตำแหน่งในสูตรที่ปกติจะเป็น Cell เดียว นั่นแหละ Array Formula

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

  • สูตรปกติ : =A1*B1
  • สูตร Array : =A1:A5*B1:B5 หรือ =A1:A5*B1
  • สูตรปกติ : =LEN(A1)
  • สูตร Array : =LEN(A1:B10)

โดยที่ปกติแล้ว เวลาเราเขียนสูตรแบบ Array จะต้องกดปุ่ม Ctrl+Shift+Enter เพื่อบอก Excel ว่าจะใช้สูตรแบบ Array แล้วนะ… ไม่งั้น Excel จะให้ค่า Error กลับมา (เหมือนด่าว่าเราเขียนสูตรไม่เป็น)

โดยที่เวลากด Ctrl+Shift+Enter แล้ว ตรง Formula Bar จะมีเครื่องหมายปีกกา { } มาครอบให้โดยอัตโนมัติ (เขียนเองไม่ได้) เพื่อบ่งบอกว่าสูตรนี้เป็นสูตรพิเศษ ที่กด Ctrl+Shift+Enter เพื่อใช้งาน

array-0

ผลลัพธ์ของ Array Formula

  • Array Formula สามารถให้ผลลัพธ์การคำนวณออกมาได้ 1 ค่า หรือจะมากกว่า 1 ค่าก็ได้ แล้วแต่วิธีที่เราเขียนสูตร โดยที่เราสามารถตรวจสอบได้โดยการลากแถบดำแล้วกดปุ่ม F9
  • แต่ทว่า ในแต่ละ Cell ของ Excel นั้นจะแสดงผลลัพธ์ได้เพียง 1 ค่าเท่านั้น
  • ดังนั้นถ้าเราเขียน Array Formula ที่ให้ผลลัพธ์มากกว่า 1 ตัว แต่เขียนสูตรอยู่ใน 1 Cell มันจะแสดงผลลัพธ์ออกมาแค่ค่าแรกสุดค่าเดียว (แต่จริงๆ เก็บข้อมูลไว้หลายค่า)
  • ถ้าอยากจะแสดงผลลัพธ์ให้ครบทุกตัว ต้องลากพื้นที่เลือก Range ให้ครอบคลุมจำนวนผลลัพธ์ที่ต้องการแสดงซะก่อน จากนั้นค่อยใส่สูตร Array แล้วกด Ctrl+Shift+Enter
  • หรือจะมีอีกกรณีคือ จะต้องใส่ฟังก์ชั่นบางอย่างครอบผลลัพธ์ลงไป เพื่อทำการรวบผลลัพธ์ทั้งหมดที่มีหลายค่า ให้เหลือเพียงค่าเดียว เช่น การใช้ฟังก์ชั่นสรุปผลอย่างเช่น SUM, MAX, MIN… และอื่นๆ อีกเยอะแยะ

ค่าที่แท้จริงของ Array

สมมติผมเขียนสูตรแบบนี้

array-1

หากลองกด F9 ดูเพื่อดูค่าที่แท้จริงว่าคืออะไร มันจะได้แบบนี้ครับ

array-2

ในทำนองเดียวกัน ถ้าเป็นแบบนี้

array-3

เวลากด F9 จะได้แบบนี้

array-4

ผลลัพธ์ที่ออกมานั้นบ่งบอกว่า ในสูตรๆ เดียวที่เราเขียนนั้น ให้ค่าผลลัพธ์ออกมาหลายตัวด้วยกัน

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

  • มีหลายแถว ={“a”;”b”;”c”;1;2;3} สังเกตว่ามีผลลัพธ์ 6 ตัว คั่นด้วย Semi Colon
  • มีหลายคอลัมน์ ={“a”,”b”,”c”,1,2,3} สังเกตว่า มีผลลัพธ์ 6 ตัว แต่คั่นด้วย Comma
    ** วิธีการจำคือ ถ้าขึ้น Column ใหม่ ใช้ Comma (ตัว C เหมือนกัน)

ตัวอย่างการคำนวณแบบ Array

ปกติเรามักจะใส่สูตร Array โดยเป็น Range ที่มีขนาดเท่าๆ กัน มาทำอะไรซักอย่าง เช่น บวก ลบ คูณ หาร เชื่อมText หรือเอาไปใส่ใน Function ต่างๆ

เช่น ในรูปข้างล่างเป็น Range ที่มีขนาด 1 แถว 3 คอลัมน์ 2 อันมาคูณกัน Excel จะทำการจับคู่คำนวณ โดยเอาสมาชิกแต่ละอันดับมาคูณกัน (ตัวแรกคู่ตัวแรก ตัวที่สองคู่ตัวที่สอง…)

แบบนี้จะได้ผลลัพธ์ออกมา 3 ตัว เหมือนกับ Range 2 ตัวที่เป็น Input

array-cal-match

อีกแบบหนึ่งที่อาจพบบ่อย คือ ตัวนึงเป็น Range อีกตัวเป็นตัวเดี่ยวๆ เวลา Excel จับคู่มันจะจับตัวเดี่ยวคู่กับสมาชิกทุกตัวที่เป็น Range เลย

แบบนี้จะได้ผลลัพธ์ออกมา 3 ตัว เช่นกัน (เหมือนกับ Range ที่เป็น Input)

array-cal-match2

ตัวอย่างจริง

ตัวอย่างที่ 1 หายอดขายรวมที่ต้องทำเพิ่ม

ถ้าเขียนสูตรปกติ ก็ต้องกดไว้ก่อนว่าขาดเป้าเท่าไหร่ แล้วค่อยเขียน SUM รวมอีกที

array-6fix

ตัวอย่างที่ 2 หาว่ายาวสุดกี่ตัวอักษร

ถ้าเขียนสูตรปกติ จะต้องทดไว้ก่อนว่าแต่ละคำยาวกี่ตัวอักษร แล้วค่อยใช้ MAX มาครอบ แต่ถ้าใช้ Array ก็สามารถเขียนใน Cell เดียวได้เลย

array-5

ตัวอย่างที่ 3 ตรวจการกรอกรหัสบัตรประชาชนว่าใส่ถูกต้องหรือไม่? (Advance)

ให้ B2 เป็นช่องที่เราจะใส่รหัสประชาชน 13 หลักลงไป แล้วเราจะตรวจเลขตำแหน่งสุดท้ายได้ด้วยสูตรนี้ครับ (เป็น Array Formula ที่ไม่ต้องกด Ctrl+Shift+Enter เนื่องจากเป็นความสามารถพิเศษของ SUMPRODUCT ครับ)

=RIGHT(11-MOD(SUMPRODUCT(–(MID(B2,ROW(INDIRECT(“1:12”)),1)),14-ROW(INDIRECT(“1:12”))),11),1)

array-7

สรุปแล้ว Array Formula ดียังไง?

การเขียน Array Formula นั้นผมเชื่อว่ามีคนไม่ถึง 5% ของคนทั้งโลกที่ใช้มันเป็น… ดังนั้นข้อดีของมันอย่างแรกก็คือ “ถ้าคุณใช้เป็นคุณจะโคตรเทพ!” ซึ่งอันนี้เป็นข้อดีทางจิตใจ อิอิ

ส่วนข้อดีทางเทคนิคจริงๆ ของ Array Formula ก็คือ มันช่วยให้…

  1. ประหยัดเนื้อที่การคำนวณ สามารถพุ่งไปยังคำตอบสุดท้ายได้ใน Cell เดียว โดยไม่ต้องทดการคำนวณทิ้งไว้หลาย Cell
  2. สร้าง Range จำลองขึ้นมาได้ ในสถานการณ์ต่างๆ เช่น เอาไปใส่ใน Defined Name หรือทำ Dynamic Range ได้
  3. สร้างเกราะป้องกันไม่ให้มีคนมาแก้บางส่วนของสูตรได้ ถ้าจะลบ Array Formula ต้องลบทั้งยวง ไม่สามารถลบบางส่วนได้
  4. ผลลัพธ์อัปเดททันทีเมื่อ Input เปลี่ยนไป ซึ่งอันนี้คือข้อดีสุดๆ ของการเขียนสูตรทุกชนิด เมื่อเทียบกับเครื่องมืออื่นๆ ใน Excel ที่ใช้งานง่ายกว่า เช่น Sort/Filter/PivotTable/Advanced Filter

ข้อเสียของ Array Formula

  1. มันยากกว่าสูตรปกติ การเขียนสูตร Array ว่ายากแล้ว แต่อ่านสูตรแบบ Array ที่คนอื่นเขียนนั้นยิ่งมึนหนักกว่า! ยิ่งหากปล่อยให้คนทั่วไปมาอ่าน มีสิทธิ์ช๊อคตายได้เลย
  2. อาจทำให้คำนวณช้าลงได้ การเขียน Array Formula ถ้าเขียนไม่ดร อาจทำให้คำนวณช้ากว่าการแยก Cell ทดไว้ตามปกติได้

คราวนี้ก็ขึ้นอยู่กับคุณแล้วล่ะ ว่าอยากจะเรียนรู้การเขียนสูตรแบบ Array รึเปล่า? เพราะถ้าถามว่าจำเป็นสุดๆ มั้ย? ก็ต้องตอบว่า ถึงใช้ Array ไม่เป็นก็น่าจะพอหาคำตอบแบบเดียวกันได้ แต่อาจจะยุ่งยากพอสมควรหรือต้องทดไว้ใน Cell อื่นเยอะมากๆ (เช่น ถ้าจะหาค่า Percentile ของข้อมูลตาม Criteria ต่างๆ นี่อาจจะต้องทดเยอะมากๆ เลย)

ใครที่อยากเรียนรู้เพิ่มแบบลึกขึ้น ผมกำลังจะมีคอร์สออนไลน์ที่ SkillLane อันที่ 2 เรื่อง “การเขียนสูตร Excel ขั้นสูงและ Array Formula” รอติดตามกันได้ครับ