ปกติแล้วฟังก์ชันที่ใช้ในการสรุปผลข้อมูลที่เรามักจะใช้กันก็จะหนีไม่พ้นพวก SUMIFS, COUNTIFS, MAXIFS, MINIFS อะไรพวกนี้ ซึ่งมีความสามารถในการสรุปข้อมูลตามเงื่อนไขได้
แต่ใน Excel ก็ยังมีฟังก์ชันอีกกลุ่มนึงที่สามารถสรุปข้อมูลตามเงื่อนไขได้เช่นกัน ซึ่งผมขอเรียกว่า D-Function ซึ่งย่อมาจาก Database Function เช่น เช่น DSUM DCOUNT DMAX DGET และในบทความนี้เราก็จะมาเรียนรู้เรื่องฟังก์ชันนี้กัน ว่ามันดียังไง? มีข้อจำกัดยังไง? ซึ่งผมเรียบเรียงเนื้อหาใหม่จากที่ผมเคยเขียนไว้ในหนังสือจอมเวทเทพเอ็กเซลนะครับ
ขั้นตอนการใช้งาน D-Function
มีอยู่ 3 ขั้นตอนหลักๆ คือ
- เตรียมข้อมูลให้อยู่ในรูปแบบของ Database (มีชื่อคอลัมน์ครบทุกอัน ไม่ซ้ำกัน)
- เตรียมเงื่อนไขให้อยู่ในรูปแบบตาราง (เหมือน criteria ของเครื่องมือ Advanced Filter เป๊ะ)
- เรียกใช้ D-Function !
โดยที่ D-Function ส่วนใหญ่จะมีองค์ประกอบดังนี้
=ชื่อ D-FUNCTION ที่ต้องการ (database,field,criteria)
- Database ให้เลือกตารางทั้งอัน รวมหัวตารางด้วย (สำคัญมาก!)
- Field คือ ชื่อคอลัมน์ที่เราต้องการเอามาสรุปผล
- Criteria คือ ตารางเงื่อนไข โดยต้องมีชื่อ Field ที่จะเอามาทำเงื่อนไขด้วย
- ถ้าเงื่อนไขอยู่บรรทัดเดียวกัน แต่คนละคอลัมน์ คือเงื่อนไขแบบ AND (และ)
- ถ้าเงื่อนไขอยู่คนละบรรทัด คอลัมน์เดียวกัน คือเงื่อนไขแบบ OR (หรือ)
ตัวอย่างดังรูป
- Database คือ A5:D15
- Field คือ D5 หรือ ข้อความว่า ยอดขาย (ดังนั้นใส่ว่า “ยอดขาย” ก็ได้)
- Criteria คือตารางสีม่วง ซึ่งต้องมีชื่อ Field (หัวตาราง) ที่เป็นเงื่อนไขอยู่
ผลรวมของยอดขายจึงได้ 236,000 มาจากคอลัมน์ ยอดขาย ใน Database พื้นที่คือ A5:D15 โดยมีเงื่อนไขคือ
- ชื่อ =นาย ก และ สินค้า=Food (บรรทัดเดียวกัน คือ AND และ)
- หรือ สินค้า=Toy โดยไม่สนว่าชื่ออะไร (คนละบรรทัด คือ OR หรือ)
จะได้ว่า 17,000 + 37,000 + 77,000 + 60,000 + 45,000
= 236,000 นั่นเอง
ข้อดีของ D-Function
- สามารถใส่เงื่อนไขที่ซับซ้อนได้ เช่น มีทั้ง AND และ OR ผสมกันได้ โดยไม่จำเป็นต้องใช้ Helper Column มาทดไว้ก่อน
- เห็นชัดเจนว่าเงื่อนไขในการคัดกรองข้อมูลมาสรุปผลคืออะไร
- รองรับฟังก์ชั่นเยอะ (มีพอๆ กับ PivotTable) เช่น มี MIN, MAX แม้จะเป็น Excel Version เก่ากว่า 2019 (ใน Excel เก่ากว่า 2019 จะไม่มี MINIFS, MAXIFS)
ข้อเสียของ D-Function
ข้อเสียของ D-Function ที่สำคัญคือ เรื่องการจัดรูปแบบของตาราง Criteria นี่แหละครับ เพราะมันทำให้เราไม่สามารถ Copy สูตรลงมาข้างล่างเรื่อยๆ ได้เหมือนสูตรปกติ
ข้อจำกัดที่ทำให้ลากสูตรลงมาข้างล่างไม่ได้ เพราะในส่วนของ criteria ใน D-FUNCTION(database,field,criteria) ต้องมีชื่อคอลัมน์ในตาราง Criteria ด้วยตลอด ดังนั้นถ้าอยากจะหาผลรวม Food, Toy , Furniture แยกกันคนละบรรทัด จะต้องสร้างตาราง Criteria 3 อันด้วย ซึ่งทำให้ลำบากและไม่สะดวกเอามาก ๆ
แต่ถ้าอยากปลดล๊อคเรื่องเงื่อนไขหัวตารางของ Criteria นี้ สามารถใช้วิธีผสานพลัง D-Function ร่วมกับเครื่องมือ Data Table เช่น ตัวอย่างในรูป สามารถใช้ DMAX กับสินค้าหลายๆ ตัวได้เลยพร้อมๆ กัน โดยไม่ต้องสร้างหัวตารางทุกอันครับ
อย่างไรก็ตาม ถ้ามีฟังก์ชันสรุปในกลุ่ม SUMIFS COUNTIFS MINIFS MAXIFS แล้ว ผมว่าใช้พวกนั้นน่าจะสะดวกกว่าครับ หรือถ้าเงื่อนไขซับซ้อนหน่อยอาจต้องเรียนรู้เรื่อง Array Formula เพิ่มเติม ก็จะทำเงื่อนไขยากๆ ได้โดยไม่ต้องใช้ D-Function ครับ