การใช้สูตร Array IF แบบหลายเงื่อนไข

กรณี Range ที่ใช้ตรวจสอบเงื่อนไขมาจากต่างเรื่องกัน ให้ใช้คูณ

 

image207

ให้หายอดรวม Amount ของรหัส Id a001 เฉพาะรายการที่มี Name เท่ากับ c (ทั้งนี้ที่เรียกว่า เป็นต่างเรื่องกัน เพราะเงื่อนไขรหัสต่างจากเงื่อนไขชื่อ) โดยบันทึกรหัสที่ต้องการให้ใช้เป็นรหัสและชื่อที่ค้นหาไว้ที่เซลล์ G3 และ H3 ตามลำดับ ซึ่งสามารถใช้สูตรหาคำตอบเป็นยอดรวม 30 ได้หลายวิธี ดังนี้

  1. ใช้สูตร { =SUM(IF(Id=G3, IF(Name=H3,Amount,0), 0 ))}

    โดยต้องกดปุ่ม Ctrl+Shift+Enter เพื่อสร้างเครื่องหมายวงเล็บปีกกา { } ปิดหัวท้ายสูตร ถ้าแกะสูตร IF(Id=G3, IF(Name=H3,Amount,0), 0 ) โดยการคลิกลากทับส่วนของสูตรนี้แล้วกดปุ่ม F9 จะได้ Array {0;0;30;0;0} ซึ่งเปลี่ยนค่า Amount ของรหัสอื่นที่ไม่เท่ากับ a001 และชื่อไม่ใช่ c ให้เท่ากับ 0 แทน
  2. ใช้สูตร { =SUM(  (Id=G3)*(Name=H3)  *Amount) }

    โดยต้องกดปุ่ม Ctrl+Shift+Enter เพื่อสร้างเครื่องหมายวงเล็บปีกกา { } ปิดหัวท้ายสูตร ถ้าแกะสูตร (Id=G3)*(Name=H3) โดยการคลิกลากทับส่วนของสูตรนี้แล้วกดปุ่ม F9 จะได้ Array {0;0;1;0;0} โดยมีเลข 1 ตรงกับตำแหน่งรายการที่ต้องการ

    ถ้าแกะที่มาของเงื่อนไข (Id=G3) จะได้ Array ของ
    {TRUE;FALSE;TRUE;FALSE;FALSE} นำมาคูณกับ (Name=H3) ซึ่งเป็น Array ของ
    {FALSE;FALSE;TRUE;FALSE;FALSE} ทำให้ได้ Array
    {0;0;1;0;0}
    และเมื่อนำ {0;0;1;0;0} คูณกับ Array ของ Amount {10;20;30;40;50}
    จะได้ Array {0;0;30;0;0} ซึ่งรวมค่าทั้งหมดได้เท่ากับ 30 ตามต้องการ
  3. ใช้สูตร =SUMPRODUCT(  (Id=G3)*(Name=H3)  *Amount)

    โดยมีหลักการคำนวณแบบเดียวกับวิธีที่สอง แต่ไม่ต้องอาศัย { }
  4. ใช้สูตร =SUMIFS(Amount,Id,G3,Name,H3) เป็นสูตรที่เกิดขึ้นใน Excel 2007 เป็นต้นมา

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

image209

  • Column ที่ 1 เป็นรหัส Id จะพบว่ามีรหัส a001 อยู่ 2 รายการ
  • Column ที่ 2 ตรวจสอบรหัส Id a001 จะพบว่ามีรหัส a001 อยู่ 2 รายการ โดยถ้ามองตำแหน่งที่เป็นรหัสที่ต้องการเป็นเลข 1 และตำแหน่งที่ไม่ใช่เป็นเลข 0
    จะได้เลข 1, 0, 1, 0, 0 ตามลำดับจากบนมาล่าง
  • Column ที่ 3 เป็นชื่อ Name จะพบว่ามีชื่อ c อยู่ 1 รายการ
  • Column ที่ 4 ตรวจสอบชื่อ Name c จะพบว่ามีชื่อ Name c อยู่ 1 รายการ โดยถ้ามองตำแหน่งที่เป็นรหัสที่ต้องการเป็นเลข 1 และตำแหน่งที่ไม่ใช่เป็นเลข 0
    จะได้เลข 0, 0, 1, 0, 0 ตามลำดับจากบนมาล่าง
  • Column ที่ 5 เป็นผลคูณเมื่อนำ Column ที่ 2 มาคูณกับ Column ที่ 4
    จะได้เลข 0, 0, 1, 0, 0 ตามลำดับจากบนมาล่าง แสดงตำแหน่งของรหัส a001 มีชื่อ Name c ณ ตำแหน่งที่ตรงกับเลข 1
  • Column ที่ 6 เป็นตัวเลข Amount ทั้งหมด
  • Column ที่ 7 เป็นผลคูณเมื่อนำ Column ที่ 5 มาคูณกับ Column ที่ 6
    จะได้เลข 0, 0, 30, 0, 0 ตามลำดับจากบนมาล่าง ซึ่งรวมเท่ากับ 30
Author: สมเกียรติ ฟุ้งเกียรติEmail: This email address is being protected from spambots. You need JavaScript enabled to view it.

E-Learning

Go to top