วันเสาร์ที่ 31 ตุลาคม พ.ศ. 2552
SUMIF
SUMIF นั้นมาจาก IF แล้วจึง SUM
ลองมาดูตัวอย่าง IF ก่อน แล้ว SUM
ต้องการหายอดขายรวมของรถยี่ห้อต่างๆ ที่มียอดขายมากกว่า 150 คันขึ้นไป
หากมองว่าใช้ IF เพื่อหาคำตอบออกมา จะได้ว่าเพิ่มคอลัมน์ขึ้นมา 1 คอลัมน์เพื่อสร้างเงื่อนไข IF แล้วหาผลรวม(SUM) แบบนี้ก็ทำได้
หากจะใช้ฟังก์ชั่น SUMIF() ซึ่งมี ไวยากรณ์ดังนี้
=SUMIF(range,criteria,sum_range)
=SUMIF(ข้อมูลหรือชุดข้อมูลที่ให้อ่านค่า ,เงื่อนไข ,ผลรวมของชุดข้อมูล)
จะได้ว่า..
มาดู SUMIF แบบเงื่อนไขเดียวอีกซักตัวอย่าง
โจทย์ ให้หาผลรวมของค่าที่มากกว่า 30
สามารถทำได้หลายๆวิธี เช่น
1.ใช้ IF ธรรมดา กำหนดเงื่อนไข แล้วจึง SUM หาผลลัพท์
2.ใช้ SUMIF
3. ใช้ ARRAY
- - - - - - - - - - -- - -
SUMIF เงื่อนไขเดียวอีกซักตัวอย่าง
ให้หาผลรวมของจำนวนและยอดเงินจากยอดขายของสินค้าแต่ละชนิดในแต่ละเดือน
- - - - - - - - - - - - - -- -
การหาผลรวมที่มากกว่า 1 เงื่อนไข
โดยปกตินั้น SUMIFไม่สามารถหาผลรวมที่มากกว่า 1 เงื่อนไขได้ แต่ก็ยังมีวิธีอื่นๆที่สามารถช่วยได้ดังนี้ ตัวอย่างโจทย์ ให้หาผลรวมของค่าที่มากกว่า 20 และน้อยกว่า 50
มีวิธีหาผลลัพท์ได้หลายๆวิธีเช่น
1. ใช้ IF ธรรมดากำหนดเงื่อนไขก่อน แบบกระจายสูตรออกมา แล้วจึง SUM
ใช้ IF บังคับเงื่อนไขแรก ถ้ามากกว่า 20 ให้เป็น ตัวมันเอง ถ้าไม่ใช่ให้เป็น 0
IF บังคับเงื่อนไขที่ 2 ถ้าน้อยกว่า 50 ให้เป็น 1 ถ้าไม่ใช่ให้เป็น 0
แล้วนำทั้ง 2 กรณีมา คูณกัน
- - - - - - - - - - - -
2. ใช้ IF ธรรมดาแต่รวบสูตรเข้ามาหากัน แล้วจึง SUM
มาจากข้อ 1. โดยรวบสูตรเข้ามา
- - - - - - - - - - - -
3. ใช้ ARRAY จากวิธีที่ 2 ใช้ IF ธรรมดาแต่รวบสูตรเข้ามา แล้วทำเป็น Array
4. โจทย์บังคับ 2 เงื่อนไข อยู่แล้ว จะใช้ IF(AND() ก็ได้
- - - - - - - - - - - -- - -
อีกตัวอย่าง การหาผลรวม ที่มากกว่า 1 เงื่อนไข
โจทย์ต้องการให้หายอดขาย ของรถ HONDA ที่มากว่า 15 คัน
วิธีที่ 1 ใช้ IF ธรรมดา กำหนดเงื่อนไขโดยกระจายสูตรออกมา
เงื่อนไขแรก กำหนดว่า ถ้าเป็น HONDA ให้เป็น 1 ถ้าไม่ใช่ให้เป็น 0
เงื่อนไขที่ 2 กำหนดว่า ถ้ามากกว่า 15 ให้เป็นตัวมันเอง ถ้าไม่ใช่ให้เป็น 0
จากนั้น นำทั้ง 2 เงื่อนไขมาคูณกัน
- - - - - - - - - - - -
วิธีที่ 2. ใช้ IF ธรรมดาแบบวิธีที่1 แต่รวบสูตรเข้ามาให้กระชับ
- - - - - - - - - - - -
วิธีที่ 3.โจทย์บังคับทั้ง 2 กรณีอยู่แล้ว ใช้ IF(AND()
บังคับว่า ถ้าเป็น HONDA และ มากกว่า 15 ให้เป็นตัวมันเอง ถ้าไม่ใช่ให้เป็น 0
- - - - - - - - - - - -
วิธีที่ 4. ใช้ Array โดยใช้ IF ธรรมดา วิธีที่ 2 แล้ว SUM ทำเป็น Array
- - - - - - - - - - - -
โจทย์ให้หาผลรวม ถ้าคอลัมน์ B เป็น TOYOTA และ คอลัมน์ C มากกว่า 10
วิธีที่ 1. ใช้ IF ธรรมดากำหนดเงื่อนไข แรก ถ้าเป็น TOYOTA ให้เป็น 1 ถ้าไม่ใช่ให้เป็น 0
เงื่อนไขที่ 2 ถ้ามากกว่า 10 ให้เป็นตัวมันเอง ถ้าไม่ใช่ให้เป็น 0
จากนั้น นำทั้ง 2 กรณี มาคูณกัน .
- - - - - - - - - - - -
วิธีที่ 2. โจทย์บังคับทั้ง 2 เงื่อนไขอยู่แล้ว ใช้ IF(AND()
บังคับว่า ถ้า คอลัมน์B เป็น TOYOTA และ คอลัมน์ C มากกว่า 10 ให้เป็น คอลัมน์ C ถ้าไม่ใช่ให้เป็น 0
- - - - - - - - - - - -
วิธีที่ 3. ทำเป็น Array โดยมาจากวิธีที่ 1 ใช้ IF ธรรมดา แล้ว SUM แต่ทำเป็น Array
- - - - - - - - - - - - - - - -
ตัวอย่างต่อไป
โจทย์ให้หายอดขาย ของรถยี่ห้อ BMW ที่เป็นสีดำ
วิธีที่ 1. ใช้ IFธรรมดาบังคับ เงื่อนไขแรก ถ้าเป็น BMW ให้เป็น 1 ถ้าไม่ใช่ให้เป็น 0 คูณกับเงื่อนไขหลังโดยบังคับเงื่อนไขหลัง ถ้าเป็น สีดำ (BLACK) ให้เป็น จำนวนที่ขาย ถ้าไม่ใช่ให้เป็น 0
- - - - - - - - - - - -
วิธีที่ 2.เนื่องจากโจทย์บังคับให้ต้องเป็นทั้ง 2 กรณี คือ BMW และ BLACK จึงใช้ IF(AND() หาคำตอบ โดย ถ้า B4 เป็น BMW และ C4 เป็น BLACK ให้เป็น จำนวนที่ขาย ถ้าไม่ใช่ให้เป็น 0
- - - - - - - - - - - -
วิธีที่ 3. ใช้ Array ช่วยโดยหลักการจากวิธีที่ 1. แต่บังคับทั้งชุดข้อมูล คือ B4:B12 และ C4:C12 และ D4:D12 ที่เซลล์ใดๆ พิมพ์ =SUM(IF(B4:B12="BMW",1,0)*IF(C4:C12="BLACK",1,D4:D12,0)) จากนั้น บังคับกด Ctrl + Shift +Enter พร้อมกัน...ติดรูป
{=SUM(IF(B4:B12="BMW",1,0)*IF(C4:C12="BLACK",1,D4:D12,0))}
ตัวอย่าง
เงื่อนไขให้หาผลรวมของจำนวนรถ ที่เป็นยี่ห้อ BMW หรือ AUDI
ทำได้หลายๆวิธี
1. ใช้ IF ธรรมดา โดยการ เพิ่มคอลัมน์ขึ้นมา 2 คอลัมน์และนำผลลัพท์แต่ละคอลัมน์มาบวกกัน การเพิ่มคอลัมน์จะช่วยลดความยุ่งยากไปได้มากมาย และยังตรวจสอบได้ง่าย
วิธีที่ 2 ใช้ IF ซ้อน IF ( 2 เงื่อนไข) วิธีนี้ก็ง่ายดี พื้นๆ ไม่ยุ่งยาก
วิธีที่ 3 ใช้ IF(OR() (โจทย์ให้เป็น BMW หรือ AUDI)
วิธีที่ 4 ใช้ Array
ตัวอย่าง
ให้หาค่าเฉลี่ยจากจำนวนที่มีค่ามากกว่า 30 โดยหาค่าเฉลี่ยจากจำนวนทั้งหมด
วิธีที่ 1 ใช้ IF เงื่อนไขเดียว เพื่อหาผลรวมแล้ว หารด้วย จำนวนทั้งหมด
วิธีที่ 2 จากวิธีที่ 1 แต่ทำเป็น Array (Sum/Count)
วิธีที่ 3 ใช้ Array (Average)
วันศุกร์ที่ 30 ตุลาคม พ.ศ. 2552
COUNTIF
ไวยากรณ์
=COUNTIF(range,criteria)
=COUNTIF(ข้อมูลหรือชุดข้อมูลที่ต้องการนับ ,เงื่อนไข)
ตัวอย่าง
ข้อสังเกตุ
ถ้าเงื่อนไขคือการเท่ากับ เราไม่ต้องพิมพ์เครื่องหมาย " " ปิดหน้า-หลังของเงื่อนไข ถ้าเงื่อนไข ไม่ใช่เท่ากับ เช่น มากกว่า,น้อยกว่า, มากกว่าหรือเท่ากับ, น้อยกว่าหรือเท่ากับเป็นต้น แบบนี้ต้องมีเครื่องหมาย " " ครอบเงื่อนไขอีกทีหนึ่ง สาเหตุก็เนื่องจาก Excel อ่านค่าเครื่องหมายเหล่านี้ เป็น Text นั่นเอง พอเป็น Text ก็ต้องใช้ " " ปิดหน้าหลัง
อีกประการคือถ้าต้องการให้เงื่อนไขอ่านจากเซลล์อ้างอิงใดๆ ถ้าเงื่อนไขมีค่าไม่เท่ากับเซลล์อ้างอิงนั้น ต้อง เชื่อมด้วยเครื่องหมาย & ที่เงื่อนไขด้วย เช่น จากโจทย์เดิม แต่เงื่อนไขอยู่ที่เซลล์ A1
จะพบว่า =COUNTIF(C3:C7,A1) อันนี้พิมพ์ A1 ลงไปเป็นเงื่อนไขได้เลย เนื่องจากเงื่อนไขมีความหมายเป็น เท่ากับ ส่วนข้ออื่นๆ เงื่อนไขไม่ได้เป็นเท่ากับ ต้องพิมพ์ " " ปิดหน้าหลัง เงื่อนไขตามที่กล่าวมาแล้ว และจะต้อง เชื่อมด้วย & เสมอ
การนับเซลล์ว่าง
เราสามารถใช้ COUNTIF นับเซลล์ว่างได้ ดังนี้ สมมุติชุดข้อมูลอยู่ที่ เซลล์ B2:B7 ถ้าต้องการนับเซลล์ว่าง
=COUNTIF(B2:B7,"<>"&"*") ความหมายคือ ไม่เท่ากับ อะไรเลยซึ่งก็คือเซลล์ว่างนั่นเอง
หรือจะเลี่ยงไป ใช้คำสั่งนี้แทนก็ได้ =COUNTBLANK()ซึ่งในที่นี้คือ COUNTBLANK(B2:B7) นั่นเอง
The COUNTIF function does not support multiple ranges.
ขออนุญาตยกภาษาฝรั่งมังค่า มาอ้างอิงเล็กน้อย แปลกันง่ายๆได้ว่า เจ้า COUNTIF นี่ไม่สามารถนับเงื่อนไขหลายๆเงื่อนไขได้นั่นเอง
ถ้ามีหลายๆเงื่อนไขให้นับ แล้วเราจะทำ จะใดดี..
ทำได้อยู่หลายๆวิธี เช่น ใช้ IF ก่อน แล้วค่อยมา COUNT จากผลลัพท์ของ IF ก็ได้ อันนี้วิธีหนึ่ง อีกวิธีหนึ่งพอเป็นกระสัยคือ ทำCOUNTIF แต่ละเงื่อนไขให้จบไปในตัวก่อน แล้วนำผลลัพท์ของแต่ละ COUNTIF ที่ได้มารวมกัน จะเอามาบวกหรือจะ Sumก็ตามแต่ถนัด
เช่น เขียนสูตรแบบนี้
=COUNTIF(A3,A8,F16,">0") แบบนี้ไม่ได้แน่ เพราะมันมีหลายๆเงื่อนไขใน COUNTIF เดียว
ลองดูวิธีนี้ =COUNTIF(A3,">0")+COUNTIF(A8,">0")+COUNTIF(F16">0")
หรือ =SUM(COUNTIF(A3,">0"),COUNTIF(A8,">0"),COUNTIF(F16,">0"))
อย่างนี้เป็นต้น
ขอยกตัวอย่างกรณีอื่นๆที่ให้เป็นแนวทางในการใช้
IF แล้ว COUNT และ COUNTIF เพื่อเปรียบเทียบ
ตัวอย่าง เงื่อนไขคือต้องการหาค่าที่มากกว่า 0
จะเห็นว่าจะใช้ IF แล้ว COUNT หรือ COUNTIF เลยก็ได้ ข้อแตกต่างก็คือ กรณีใช้ IF แล้ว COUNTนั้นจะต้องกระจายเงื่อนไขออกมาก่อน แล้วจึงนับ กรณีนี้จะต้องเพิ่ม คอลัมน์ขึ้นมา ข้อดีคือทำให้มองเห็นเงื่อนไขได้ง่าย ตรวจสอบได้ง่าย ส่วนการใช้ COUNTIF นั้นจะได้คำตอบแบบเบ็ดเสร็จในตัว ในเซลล์เพียงเซลล์เดียว แต่กรณีนี้ ถ้าเราผูกเงื่อนไขผิดหรือ เขียนสูตรไม่ถูกต้อง อาจจะตรวจสอบยากกว่าแบบ IF แล้ว COUNT
การนับค่าเป็นช่วงๆ
เช่นเงื่อนไขต้องการนับค่าที่มากกว่า100 และค่าที่น้อยกว่า 500
มีหลายๆวิธีที่จะหาคำตอบออกมา
เช่น ใช้ IF อย่างเดียวก็ได้ โดยการเพิ่มคอลัมน์ แล้วใช้ IF บังคับทั้ง 2 เงื่อนไขให้เป็นเลขลงตัวน้อยๆ (แนะนำให้เป็น 0 และ 1 จะง่าย) กรณีเป็นจริงให้เป็น 1 ถ้าเป็นเท็จให้เป็น 0 ทั้ง 2กรณี แล้วนำทั้ง 2 กรณีมา คูณกัน จากนั้น Sum หาผลรวมก็จะได้จำนวนออกมาตามเงื่อนไขที่ต้องการ
วิธีนี้ดูเหมือนจะยุ่งยากซับซ้อน แต่วิธีนี้กลับเป็นวิธีที่ตรวจสอบง่ายที่สุด เนื่องจากการกระจายเงื่อนไขออกมานั่นเอง
วิธีการเดียวกันนี้หากไม่ต้องการกระจายสูตรสามารถรวบสูตรเข้ามาให้กระชับดังนี้
เนื่องจากเงื่อนไขให้บังคับทั้ง 2 กรณี ดังนั้นจะใช้ IF(AND() ก็ได้ ดังนี้
หากจะทำเป็น Array ก็อาจจะทำได้ดังนี้
มาจากสูตร IF ธรรมดา ดังตัวอย่างด้านบน ที่เซลล์ใดๆ พิมพ์
=SUM(IF(B2:B7>100,1,0)*IF(B2:B7<500,1,0))
จากนั้นบังคับ กด Ctrl + Shift +Enter พร้อมกัน ..ติดรูป
{=SUM(IF(B2:B7>100,1,0)*IF(B2:B7<500,1,0))}
กรณีใช้ COUNTIF
ต้องใช้ COUNTIF ทีละกรณีก่อน แล้วนำผลลัพท์มาลบกัน COUNTIF ที่น้อยกว่า 500 - COUNTIF ที่น้อยกว่าหรือเท่ากับ 100
การใช้ COUNTIF นับค่าที่ซ้ำกัน
ตัวอย่าง ต้องการหาค่าที่ไม่ซ้ำกันในตารางด้านล่าง
สามารถใช้หลายๆวิธีในการหาค่าที่ไม่ซ้ำกันออกมา
วิธีที่ 1 ใช้ COUNTIF และ IF แบบกระจายสูตรออกมา
ใช้ COUNTIF เพื่อนับค่าที่ซ้ำกัน ถ้าไม่ซ้ำจะเป็น 1 ถ้า ซ้ำ จะมากกว่า 1
ใช้ IF บังคับค่า COUNTIF ที่ได้ ถ้ามากกว่า 1 ให้เป็น ค่าว่าง (Blank) ถ้าไม่ใช่ให้เป็นค่าที่ต้องการ
- - - - - - - - - - -
วิธีที่ 2. มาจากวิธีที่ 1 แต่ใช้วิธีรวบสูตรเข้าไว้ด้วยกัน
- - - - - - - - - - -
วิธีที่ 3 หากสามารถ Sort data ได้โดยเรียงค่าจากน้อยไปมาก หรือมากไปน้อยก็ได้ สามารถใช้ IF ธรรมดา หาค่าที่ต้องการออกมาได้เช่นกัน
จากสูตร อธิบายได้ว่า ถ้า B2=B1 ให้เป็น ค่าว่าง (Blank) ถ้าไม่ใช่ให้เป็น B2 (ตัวมันเอง)
- - - - - - - - - - -
วิธีที่ 4. แถมให้อีกวิธี ใช้ Array วิธีนี้จะไม่อธิบายมาก เพียงแต่อยากแสดงให้ดูว่า จะใช้ Array ก็ได้
ดังนั้น พอจะสรุปได้ว่า จะใช้วิธีการไหนก็ขึ้นอยู่กับรูปแบบของข้อมูล และความถนัดของผู้ใช้ว่าจะใช้แบบไหน ก็ขอให้ยึดแบบใดแบบหนึ่งไว้เป็นหลัก โดยทั่วๆไป วิธีที่ 2 ข้างต้นจะเป็นที่นิยมมากกว่า เพราะไม่ต้อง คอยจัดเรียงข้อมูล จากมากไปน้อย หรือ น้อยไปมาก และสามารถเลี่ยงการใช้ Array ด้วย
อีกซักตัวอย่าง โจทย์ต้องการให้ดึงเอาเฉพาะค่าที่ไม่ซ้ำออกมา
วันพุธที่ 28 ตุลาคม พ.ศ. 2552
COUNT และ COUNTA
ไวยากรณ์
=COUNT(value1,value2,...)
=COUNT(ค่าที่ 1 ,ค่าที่ 2,...)
ตัวอย่าง
Count จะนับเฉพาะตัวเลข และวันที่ ไม่อ่าน Text
ถ้าจะให้นับ Text ด้วย ต้องใช้ CountA ช่วย
ไวยากรณ์
=COUNTA(value1,value2,...)
=COUNTA(ค่าที่ 1 ,ค่าที่ 2,...)
จากตัวอย่างเดิม
Count จะนับเฉพาะตัวเลข และวันที่ ไม่อ่าน Text
CountA นับ ทั้งตัวเลข วันที่ และ Text
Count จะไม่นับเซลล์ว่าง (Empty Cell) และ ค่าว่าง (Empty Text) หรือ ""
CountA จะไม่นับเซลล์ว่าง (Empty Cell) แต่จะนับ ค่าว่าง (Empty Text) หรือ ""
**เซลล์ว่าง (Empty Cell) คือเซลล์ที่ไม่มี อักขระหรือตัวเลขใดๆ( เหมือนกับตอนที่เราเปิด Worksheet ใหม่ขึ้นมา )
**ค่าว่างจะมองดูเหมือนเซลล์ว่าง แต่ไม่ว่าง จะมีเครื่องหมาย (') อยู่ในนั้นตรงมุมซ้ายบน
ROUNDDOWN
ROUNDDOWN จะปัดตัวเลขลงทุกกรณี โดยไม่มองเศษว่าเศษจะน้อยกว่า 5 หรือตั้งแต่ 5 ขึ้นไป
ไวยากรณ์
=ROUNDDOWN(number,num_digits)
=ROUNDDOWN(เซลล์อ้างอิง, จำนวนตำแหน่งที่ให้ปัดลง)
ตัวอย่างที่ 1
เปรียบเทียบ ROUNDDOWN กับ ROUND และ ROUNDUP
กรณีนี้ ปัดให้เป็นจำนวนเต็ม (,0)
จะพบว่า
Rounddown จะปัดเศษทิ้งทุกกรณี ไม่ดูว่าจะเศษเท่าไหร่
Round จะมองที่เศษ ถ้าเศษน้อยกว่า 5 จะปัดลง ถ้าตั้งแต่ 5 ขึ้นไป จะปัดขึ้น
Roundup จะตรงข้ามกับ Rounddown คือปัดขึ้นทุกกรณี ไม่ดูว่าเศษจะเป็นเท่าไหร่ก็ตาม
โจทย์เดียวกันคราวนี้ (,1) คือให้เป็นทศนิยม 1 ตำแหน่ง
จะพบว่า
Rounddown จะปัดทศนิยม ตำแหน่งที่ 2 ทิ้งทุกกรณี
Round จะมองที่ทศนิยมตำแหน่งที่ 2 ถ้าน้อยกว่า 5 ปัดทิ้ง ถ้ามากกว่าหรือเท่ากับ 5 ขึ้นไปจะปัดขึ้น
Roundup จะตรงข้ามกับ Rounddown คือปัดทศนิยมตำแหน่งที่ 1 ขึ้น ทุกกรณี โดยไม่ดูว่าทศนิยมตำแหน่งที่ 2 จะเป็นเท่าไหร่ก็ตาม
พอจะสรุปเป็นกติกาง่ายๆ ของตระกลู Roundว่า
Rounddown ปัดทิ้ง
Round มองที่ 5เป็นหลัก
Roundup ปัดขึ้น
ยึดหลักที่ว่านี้ไว้ แล้วท่านจะแก้ปัญหาเรื่อง การปัดเศษได้โดยไม่สับสน
แถมตัวอย่างเล็กๆแบบเบาๆ ของ Rounddown
แยกเป็น 2 วิธี เปรียบเทียบกัน เพื่อให้ดูชัดๆว่า ถ้าแยกแล้วเป็นอย่างไร
กับถ้าไม่แยก เราสามารถรวบสูตรเข้ามาได้เลยเป็นอย่างไร
วันอังคารที่ 27 ตุลาคม พ.ศ. 2552
ROUNDUP
ไวยากรณ์
=ROUNDUP(number,num_digits)
=ROUNDUP(เซลล์อ้างอิง,จำนวนตำแหน่งที่ต้องการปัดขึ้น)
ROUND
สังเกตุการปัดเป็นจำนวนเต็ม จากตัวอย่างด้านล่างนี้
ในการคำนวณจริงนั้น ควรจะหาผลลัพท์ออกมาก่อน แล้ว Round ที่ผลลัพท์นั้น ถ้า Round ที่ข้อมูลก่อนในแต่ข้อมูล ผลรวมของข้อมูล อาจจะไม่ถูกต้องได้ แต่ก็ขึ้นอยู่กับ กรณี และวิธีการคำนวณว่าจะยึดวิธีการใด แต่จะขอแสดงให้เห็นว่า ทั้ง 2 กรณีอาจจะได้ ผลลัพท์ไม่เท่ากัน
MAX
MAX จะแสดงผล หรือส่งกลับค่าที่มากที่สุดใน ช่วงเซล หรือ ชุดข้อมูลนั้นๆ
โครงสร้าง ไวยากรณ์
MAX(number1,number2,...)
เช่น
=Max(A1:A5)
=Max(A1:A5,100)
=Max(5,6,7,99)
Max นอกจากจะอ่านค่าตัวเลขแล้วยัง อ่านค่าวันที่ด้วย เช่น
Max อ่านค่าข้อมูลที่เป็นตัวเลข จะไม่อ่านค่า Text
ถ้าจะให้อ่าน Text ด้วยต้องใช้ MaxA()
อีกหน้าตาที่นำเอา Max ไปใช้ได้
ยังมีอีกหลายๆกรณี ที่เราใช้ Max ในการใช้งานทั่วๆไป
เอาไว้จะทยอยเขียนให้อ่าน ตอนนี้เอาแบบเบาๆตามที่ว่ามาทั้งหมดนี้ไปก่อนครับ