สร้าง Named Function ใน Google Sheets ใช้สูตรเดิมซ้ำได้โดยไม่ต้องเขียนใหม่

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

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

Named Function ต่างจาก Named Range อย่างไร

Named Range เป็นชื่อที่ใช้แทนช่วงข้อมูล เช่นชื่อ SalesAmount แทนคอลัมน์ยอดขาย ส่วน Named Function เป็นชื่อของวิธีคำนวณที่รับค่าแล้วคืนผล เช่น ORDER_TOTAL รับจำนวนสินค้าและราคาต่อชิ้น ก่อนคำนวณยอดรายการนั้น

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

เตรียมตารางตัวอย่างและผลที่ควรได้

แถว B: จำนวน C: ราคาต่อชิ้น ยอดที่คาดหวัง
2 3 120 360
3 5 75 375
4 10 49 490

ตัวเลขนี้ใช้ทดสอบฟังก์ชันเท่านั้น ไม่รวมภาษี ส่วนลด หรือค่าจัดส่ง เริ่มจากการคูณจำนวนกับราคาให้ถูกก่อน เมื่อเข้าใจการกำหนด argument แล้วจึงนำสูตรในงานจริงมาปรับใช้

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

  1. เปิด Google Sheets บนคอมพิวเตอร์ ไปที่ Data > Named functions แล้วเลือกเพิ่มฟังก์ชันใหม่
  2. ตั้ง Function name เป็น ORDER_TOTAL และเขียนคำอธิบายว่า คำนวณยอดจากจำนวนคูณราคาต่อชิ้น
  3. เพิ่ม Argument placeholders สองชื่อ ตามลำดับ qty และ unit_price
  4. ใน Formula definition ใส่ =qty*unit_price
  5. ตรวจหน้ารายละเอียด argument เพิ่มคำอธิบายและตัวอย่างที่จำเป็น แล้วยืนยันสร้างฟังก์ชัน

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

เรียกใช้กับข้อมูลแต่ละแถว

ใน D2 ใส่สูตรนี้ แล้วตรวจว่าผลลัพธ์เป็น 360 จากนั้นคัดลอกลง D3 และ D4 ซึ่งควรได้ 375 และ 490 ตามลำดับ

=ORDER_TOTAL(B2,C2)

ลองทดสอบอีกครั้งโดยเปลี่ยน B2 จาก 3 เป็น 4 ผลควรเป็น 480 แล้วเปลี่ยนกลับเมื่อเสร็จฝึก การทดสอบค่าที่รู้คำตอบช่วยยืนยันว่าฟังก์ชันรับ argument ตามที่วางไว้ ไม่ได้อ่านเซลล์อื่นจากนิยาม

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

เพิ่มเงื่อนไขโดยไม่เขียนสูตรใหม่ทุกจุด

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

=IF(OR(qty="",unit_price=""),"",qty*unit_price)

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

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

นำ Named Function ไปใช้ในอีกไฟล์

เปิดไฟล์ปลายทาง แล้วไปที่ Data > Named functions > Import function เลือกไฟล์ต้นทางและฟังก์ชันที่จะนำเข้า จากนั้นตรวจสูตรและคำอธิบายก่อนยืนยัน หากชื่อซ้ำกับฟังก์ชันที่มีอยู่ การนำเข้าอาจแทนที่นิยามเดิม จึงควรสำรองและตรวจผลที่ถูกเรียกใช้อยู่ก่อน

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

ข้อผิดพลาดที่ควรตรวจเมื่อสูตรไม่ทำงาน

  • ชื่อไม่ถูกต้อง: เลี่ยงช่องว่าง ชื่อเซลล์อย่าง A1 และชื่อฟังก์ชันมาตรฐานอย่าง SUM ใช้ชื่อที่สื่อความหมายและคั่นคำด้วย underscore
  • จำนวน argument ไม่ตรง: ตัวอย่างนี้รับสองค่า หากให้เพียง B2 ต้องตรวจสูตรเรียกใช้ก่อนแก้นิยาม
  • ชื่อ placeholder ไม่ตรงกัน: qty ในสูตรต้องตรงกับชื่อที่กำหนด อย่าเขียน quantity ในสูตรทั้งที่ไม่ได้ประกาศ
  • ตัวเลขเป็นข้อความ: ตรวจค่าที่นำเข้าจากเว็บหรือไฟล์อื่นก่อนคำนวณ โดยเฉพาะข้อมูลที่มีหน่วยหรือช่องว่างติดมา
  • อ้างเซลล์ตายตัวโดยไม่ตั้งใจ: ใช้ argument ส่งตำแหน่งเซลล์หรือช่วงข้อมูลจากสูตรที่เรียกใช้ เมื่อแต่ละแถวต้องคำนวณจากข้อมูลของตัวเอง

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

อ้างอิงการสร้าง การนำเข้า และข้อจำกัดชื่อ: Google Docs Editors Help — Create & use named functions