วันพฤหัสบดีที่ 24 ธันวาคม พ.ศ. 2552
MOD-02 การหาค่าโดยการเว้นบรรทัดคงที่
ARRAY และกล ARRAY-01
คราวนี้ลองสังเกตุในกรอบสี น้ำเงินและสีส้ม
แทนที่จะแยก ผลคูณในแต่ละบรรทัดลองเขียนผลคูณแบบนี้ดู ที่เซลล์ใดๆก็ได้
1. ยกผลคูณมาเขียน ทั้งชุดในบรรทัดเดียว =(A1:A3*B1:B3)
2.จากนั้นใช้ SUM ครอบเข้าไปเพื่อหาผลรวม=SUM(A1:A3*B1:B3)
3.กด Ctrl + Shift ค้างไว้ แล้วกด Enter
ติดรูป {=SUM(A1:A3*B1:B3)} ผลลัพธ์ เท่ากับ 38
จะเห็นว่าได้ผลลัพธ์ ผลรวมเป็น 38 เท่ากันกับการกระจายออกทีละบรรทัดแล้วหาผลรวม
มาดูการคูณแบบ 2 คอลัมน์บ้าง
จากรูป ผลลัพธ์ 42 มาจาก นำเอา คอลัมน์ A คูณ คอลัมน์ C บวกด้วย คอลัมน์ B คูณ คอลัมน์ Dโดยการคูณกันทีละบรรทัดแล้วหาผลรวม ถ้าเราลองเขียนสูตรแบบนี้ดู
1. ยกผลคูณมาทั้งชุดพร้อมกับนำมาบวกกันในตัว =(A1:A3*C1:C3+B1:B3*D1:D3)
2.ใช้ SUMครอบเข้าไปเพื่อหาผลรวมของทั้ง2ชุด คือ คูณกันแต่ละชุดแล้วนำมาบวกกัน=SUM(A1:A3*C1:C3+B1:B3*D1:D3)
3. กด Ctrl + Shift ค้างไว้ จากนั้น กด Enter
ติดรูป {=SUM(A1:A3*C1:C3+B1:B3*D1:D3)}
จะเห็นว่าได้ผลลัพธ์ ผลรวมเป็น 42 เท่ากันกับการกระจายออกทีละบรรทัดแล้วหาผลรวม
มาดูโจทย์ที่เกี่ยวกับเงื่อนไขบ้าง เงื่อนไขมีอยู่ว่า ที่เซลล์ A1:A10 มีจำนวนเรียงกันลงมาตั้งแต่ 1-10ให้หาผลรวมของค่าที่มากกว่า 6
จากรูป เราหาค่าของแต่ละบรรทัดออกมาโดยการใช้ IFบังคับให้เป็นไปตามโจทย์นั่นก็คือ เช่นที่เซลล์ B1=IF(A1>6,A1,"") ถ้า A1 มากกว่า 6 ให้เป็น A1 ถ้าไม่ใช่ให้เป็นค่าว่าง จากนั้น Copyสูตรลงมาด้านล่าง
จากโจทย์เดิมลองสังเกตุในกรอบสีน้ำเงินและสีส้มในรูปด้านล่างนี้
ถ้าเขียนเงื่อนไขแบบนี้
1.ยกเงื่อนไขมาเขียนทั้งชุดในบรรทัดเดียว(เซลล์ใดๆเซลล์เดียว)
=IF(A1:10>6,A1:A10,"")
2.ใช้ SUMครอบเข้าไปเพื่อหาผลรวม
=SUM(IF(A1:A10>6,A1:A10,""))
3.กด Ctrl + Shift ค้างไว้ แล้วกด Enter
ติดรูป {=SUM(IF(A1:A10>6,A1:A10,""))}
ผลลัพธ์ เท่ากับ 34 เหมือนกับการกระจายเงื่อนไขออกทีละบรรทัดแล้วหาผลรวม
จากตัวอย่างทั้ง 3 ตัวอย่างพอจะเห็นได้ว่าเราสามารถเขียนสูตรเป็นชุดๆในเซลล์ใดๆเพียงเซลล์เดียวแทนการกระจายสูตรออกเป็นบรรทัดๆ ได้ การรวบสูตรเข้ามาเป็นชุดๆแบบนี้ เรียกว่า ARRAY และการจะเป็น ARRAY ได้นั้นหลังจากเขียนสูตรเรียบร้อยแล้ว ต้องกด Ctrl + Shift ค้างไว้ จากนั้นกด Enter จะเกิดสัญลักษณ์ { } ปิดหน้าหลังสูตรให้โดยอัตโนมัติ
ARRAY เป็นฟังก์ชั่นการทำงานอย่างหนึ่งของ Excel ที่มีประโยชน์และมีประสิทธิภาพมากในการทำงานต่างๆบน Excel พึงจำไว้ว่า ARRAY จะคำนวณเป็นชุดๆ และการจะติดเป็น ARRAYได้นั้น จะต้องกด Ctrl + Shift ค้างไว้แล้วตามด้วย Enter เสมอ
หากเทียบ Excel กับการเล่นหมากกระดาน ARRAY ถือเป็นกลในExcel ชนิดหนึ่ง และมีกลพิสดารทาง ARRAYมากมาย ที่ชวนให้พิศวงและน่าศึกษาและการนำไปใช้ประยุกต์ในการทำงานบน Excel ต่อไป
บทต่อๆไปจะอธิบายถึงพื้นฐานที่สำคัญของ ARRAY และกล ARRAY ตลอดจนการนำ ARRAY ไปใช้ ในรูปแบบต่างๆ ที่พบเจออยู่บ่อยๆ
MOD
=MOD(number,divisor)
=MOD(จำนวน,ตัวหาร)
ผลลัพธ์ของฟังก์ชั่น MOD คือเศษจากการหาร
ตัวอย่าง
=MOD(1,4) ผลลัพธ์ =1 เกิดจาก 1/4 ไม่ลงตัว
=MOD(2,4)ผลลัพธ์ =2 เกิดจาก 2/4 ไม่ลงตัว
=MOD(3,4)ผลลัพธ์ =3 เกิดจาก 3/4 ไม่ลงตัว
=MOD(4,4)ผลลัพธ์ =0 เกิดจาก 4/4 ลงตัว พอดี ไม่เหลือเศษ
=MOD(5,4)ผลลัพธ์ =1 เกิดจาก 5/4 เศษ 1
=MOD(6,4)ผลลัพธ์ =2 เกิดจาก 6/4 เศษ 2
=MOD(7,4)ผลลัพธ์ =3 เกิดจาก 7/4 เศษ 3
=MOD(8,4)ผลลัพธ์ =0 เกิดจาก 8/4 ลงตัว พอดี ไม่เหลือเศษ
=MOD(9,4)ผลลัพธ์ =1 เกิดจาก 9/4 เศษ 1
=MOD(10,4)ผลลัพธ์ =2 เกิดจาก 10/4 เศษ 2
=MOD(11,4)ผลลัพธ์ =3 เกิดจาก 11/4 เศษ 3
=MOD(12,4)ผลลัพธ์ =0 เกิดจาก 12/4 ลงตัว พอดี ไม่เหลือเศษ
=MOD(13,4)ผลลัพธ์ =1 เกิดจาก 13/4 เศษ 1
=MOD(14,4) ผลลัพธ์ =2 เกิดจาก 14/4 เศษ 2
=MOD(15,4)ผลลัพธ์ =3 เกิดจาก 15/4 เศษ 3
=MOD(16,4)ผลลัพธ์ =0 เกิดจาก 16/4 ลงตัว พอดี ไม่เหลือเศษ
=MOD(17,4)ผลลัพธ์ =1 เกิดจาก 17/4 เศษ 1
1.ที่เซลล์ B1 พิมพ์ =IF(MOD(ROW(A1),2)=0,A1,"")
FLOOR
=FLOOR(number,significance)
=FLOOR(จำนวน,significance)
ตัว Significance นี้ให้มองเสมือนตัวหารตัวหนึ่ง และถ้าหารไม่ลงตัว Excel จะปัดค่าเศษนั้นโดย"ปัดลง"ให้เป็นจำนวนเต็มเพื่อให้หารด้วยตัว Significanceนี้ ได้ลงตัว
จำไว้ว่า FLOOR ปัดให้ติดพื้น
ตัวอย่าง เช่น
อธิบายได้ว่า
=FLOOR(1,3) ผลลัพธ์ 0 เกิดจาก 1/3 ไม่ลงตัว จึงปัดลง เป็น 0
=FLOOR(2,3) ผลลัพธ์ 0 เกิดจาก 2/3 ไม่ลงตัว จึงปัดลง เป็น 0
=FLOOR(3,3) ผลลัพธ์ 3 เกิดจาก 3/3 ลงตัวพอดี
=FLOOR(4,3) ผลลัพธ์ 3 เกิดจาก 4/3 ไม่ลงตัว จึงปัดลง เป็น 3
=FLOOR(5,3) ผลลัพธ์ 3 เกิดจาก 5/3 ไม่ลงตัว จึงปัดลง เป็น 3
=FLOOR(6,3) ผลลัพธ์ 6 เกิดจาก 6/3 ลงตัวพอดี
=FLOOR(7,3) ผลลัพธ์ 6 เกิดจาก 7/3 ไม่ลงตัว จึงปัดลง เป็น 6
=FLOOR(8,3) ผลลัพธ์ 6 เกิดจาก 8/3 ไม่ลงตัว จึงปัดลง เป็น 6
=FLOOR(9,3) ผลลัพธ์ 9 เกิดจาก 9/3 ลงตัวพอดี
=FLOOR(10,3)ผลลัพธ์ 9 เกิดจาก 10/3 ไม่ลงตัว จึงปัดลง เป็น 9
=FLOOR(11,3) ผลลัพธ์ 9 เกิดจาก 11/3 ไม่ลงตัว จึงปัดลง เป็น 9
=FLOOR(12,3) ผลลัพธ์ 12 เกิดจาก 12/3 ลงตัวพอดี
=FLOOR(13,3) ผลลัพธ์ 12 เกิดจาก 13/3 ไม่ลงตัว จึงปัดลง เป็น 12
=FLOOR(14,3) ผลลัพธ์ 12 เกิดจาก 14/3 ไม่ลงตัว จึงปัดลง เป็น 12
=FLOOR(15,3) ผลลัพธ์ 15 เกิดจาก 15/3 ลงตัวพอดี
=FLOOR(16,3) ผลลัพธ์ 15 เกิดจาก 16/3 ไม่ลงตัว จึงปัดลง เป็น 15
=FLOOR(17,3) ผลลัพธ์ 15 เกิดจาก 17/3 ไม่ลงตัว จึงปัดลง เป็น 15
ตัวอย่างการนำไปใช้
จากตารางต้องการให้ข้อมูลจากคอลัมน์ A มาเรียงกันเป็นชุด ชุดละ 3 เรียงต่อกันลงมาที่คอลัมน์ C
ทำได้หลายๆวิธี แต่ในที่นี้จะใช้ FLOOR + INDEX
1.ที่เซลล์ C1 พิมพ์ =INDEX($A$1:$A$5,FLOOR(ROW(A3),3)/3)
2. Copy สูตรลงล่าง
ให้สังเกตุ ในข้อนี้สูตรที่ C1 นั้นจะเริ่มที่ ROW(A3).. ไม่ได้เริ่มที่ ROW(A1) เนื่องจาก เพื่อความเหมาะสมในการแก้ปัญหานั่นเอง ถ้าเริ่มที่ ROW(A1) จะหาค่าแรกยาก เพราะ FLOOR จะปัดลงเป็น 0
โจทย์ข้อนี้ เหมือนกับ โจทย์ที่ให้ไว้ในการใช้ CEILING ลองสังเกตุเปรียบเทียบกันดู
CEILING
ไวยากรณ์
=CEILING(number,significance)
=CELING(จำนวน,significance)
ตัว Significance นี้ให้มองเสมือนตัวหารตัวหนึ่ง และถ้าหารไม่ลงตัว Excel จะปัดค่าเศษนั้นโดย"ปัดขึ้น"ให้เป็นจำนวนเต็มเพื่อให้หารด้วยตัว Significanceนี้ ได้ลงตัว
จำไว้ว่า CEILING ปัดให้ชนเพดาน
เช่น
=CEILING(1,3) ผลลัพธ์ =3 เกิดจาก 1/3 เหลือเศษจึงปัดให้ชนเพดานเป็น 3
=CEILING(2,3) ผลลัพธ์ =3 เกิดจาก 2/3 เหลือเศษจึงปัดให้ชนเพดานเป็น 3
=CEILING(3,3) ผลลัพธ์ =3 เกิดจาก 3/3 ลงตัวพอดี (ชนเพดาน)
=CEILING(4,3) ผลลัพธ์ =6 เกิดจาก 4/3 เหลือเศษจึงปัดให้ชนเพดานเป็น 6
=CEILING(5,3) ผลลัพธ์ =6 เกิดจาก 5/3 เหลือเศษจึงปัดให้ชนเพดานเป็น 6
=CEILING(6,3) ผลลัพธ์ =6 เกิดจาก 6/3 ลงตัวพอดี (ชนเพดาน)
=CEILING(7,3) ผลลัพธ์ =9 เกิดจาก 7/3 เหลือเศษจึงปัดให้ชนเพดานเป็น 9
=CEILING(8,3) ผลลัพธ์ =9 เกิดจาก 8/3 เหลือเศษจึงปัดให้ชนเพดานเป็น 9
=CEILING(9,3) ผลลัพธ์ =9 เกิดจาก 9/3 ลงตัวพอดี (ชนเพดาน)
ตัวอย่างการนำไปใช้
จากตารางต้องการให้ข้อมูลจากคอลัมน์ A มาเรียงกันเป็นชุด ชุดละ 3 เรียงต่อกันลงมาที่คอลัมน์ C
ทำได้หลายๆวิธี แต่ในที่นี้จะใช้ CEILING + INDEX
1. ที่เซลล์ C1 พิมพ์ =INDEX($A$1:$A$5,CEILING(ROW(),3)/3)
2. Copyลงล่าง
** สังเกตุว่าตัวเลข สีแดง คือจำนวนชุดที่ต้องการให้เรียงกัน ถ้าให้เรียงกัน มากน้อยกว่านั้นก็ปรับตัวเลขไปตามนั้น เช่น เรียง 5 ชุดก็ให้เป็น 5 **
จะไม่อธิบายละเอียดลองแยกสูตรออกมาดู โดย ยังไม่ต้องใช้ INDEX ให้ดูเฉพาะ CEILINGก่อน โดย = CEILING(ROW(),3/,3) แล้ว Copy ลงไปทุกบรรทัด สังเกตุดูจะพบว่ามันจะเป็นชุดตัวเลข ที่เรียงกันลงมาเป็น ชุดๆตามต้องการ
COLUMNS
=COLUMNS(Array)
=COLUMNS( จำนวนคอลัมน์ตามช่วงของคอลัมน์)
COLUMNS บอกถึงจำนวนคอลัมน์ทั้งหมด เช่น
=COLUMNS(B1) มีค่า = 1 เพราะมีจำนวนคอลัมน์เดียว
=COLUMNS(A1:C5) มีค่า = 3 เพราะตั้งแต่คอลัมน์ A1 ถึง คอลัมน์ C5 มีจำนวน 3 คอลัมน์
=COLUMNS(D3:H3) มีค่า = 5 เพราะตั้งแต่คอลัมน์ D3 ถึงคอลัมน์ H3 มีจำนวน 5 คอลัมน์
=COLUMNS(B3:AA8) มีค่า =26 เพราะตั้งแต่คอลัมน์ B3 ถึงคอลัมน์ AA8 มี จำนวน 26 คอลัมน์
ROWS
=ROWS(Array)
=ROWS(จำนวนแถวตามช่วงของแถว)
ROWS บอกถึงจำนวนแถวทั้งหมด เช่น
=ROWS(A1) มีค่า = 1 เพราะมีจำนวนแถวเดียว
=ROWS(A1:A5) มีค่า = 5 เพราะตั้งแต่แถว A1 ถึง แถว A5 มีจำนวน 5 แถว
=ROWS(A2:A5) มีค่า = 4 เพราะตั้งแต่แถว A2 ถึงแถว A5 มีจำนวน 4 แถว
=ROWS(B3:B8) มีค่า = 6 เพราะตั้งแต่แถว B3 ถึงแถว B8 มี จำนวน 6 แถว
วันพุธที่ 23 ธันวาคม พ.ศ. 2552
COLUMN
=COLUMN(reference)
=COLUMN(เซลล์อ้างอิง)
การใช้คำสั่ง COLUMN ใน Excel มีประโยชน์มากในการประยุกต์ใช้กับหลายๆฟังก์ชั่น
หน้าตาของ COLUMN หลักๆที่พบเจอบ่อยๆ จะมีดังต่อไปนี้
แบบที่ 1. ระบุชื่อเซลล์ =COLUMN(ชื่อเซลล์)ผลลัพธ์จะได้ค่าตาม COLUMN นั้นๆ
=COLUMN(A10) ผลลัพธ์ 1 เพราะ คอลัมน์ A. เป็น คอลัมน์ ที่ 1 ใน Excel
=COLUMN(D7) ผลลัพธ์ 4 เพราะ คอลัมน์ D. เป็น คอลัมน์ ที่ 4 ใน Excel
=COLUMN(N5) ผลลัพธ์ 14 เพราะ คอลัมน์ N. เป็น คอลัมน์ ที่ 14 ใน Excel
=COLUMN(N99)ผลลัพธ์ 14 เพราะ คอลัมน์ N. เป็น คอลัมน์ ที่ 14 ใน Excel
แบบที่ 2. ไม่ระบุชื่อเซลล์=COLUMN() จะได้ค่าตาม COLUMN นั้นๆ
เช่น =COLUMN() ที่ C7 จะได้ค่า 3 เพราะ คอลัมน์ C. เป็น คอลัมน์ ที่ 3 ใน Excel
เช่น =COLUMN() ที่ AB99 จะได้ค่า 28 เพราะ คอลัมน์ AB. เป็น คอลัมน์ ที่ 28 ใน Excel
แบบที่ 3. ระบุเป็นช่วงเซลล์ ผลลัพธ์จะได้ค่าตาม COLUMN ของเซลล์แรก...เช่น
=COLUMN(A2:C10) ผลลัพธ์ 1 เพราะ คอลัมน์ A. เป็น คอลัมน์ ที่ 1 ใน Excel
=COLUMN(B5:D5) ผลลัพธ์ 2 เพราะ คอลัมน์ B. เป็น คอลัมน์ ที่ 2 ใน Excel
แบบที่ 3 นี้มีประโยชน์มาก พบบ่อยๆในการใช้ร่วมกับสูตรแบบ ARRAY
ROW
=ROW(reference)
=ROW(เซลล์อ้างอิง)
การใช้คำสั่ง ROW ใน Excel มีประโยชน์มากในการประยุกต์ใช้กับหลายๆฟังก์ชั่น
หน้าตาของ ROW หลักๆที่พบเจอบ่อยๆ จะมีดังต่อไปนี้
แบบที่ 1. =ROW(ระบุชื่อเซลล์)ผลลัพธ์จะได้ค่าตาม ROW นั้นๆ
=ROW(A7) ผลลัพธ์ 7
=ROW(D7) ผลลัพธ์ 7
=ROW(N5) ผลลัพธ์ 5
แบบที่ 2.ไม่ระบุชื่อเซลล์=ROW() จะได้ค่าตาม ROW นั้นๆ
เช่น ROW() ที่ ROW ที่ C7 จะได้ค่า 7
เช่น ROW() ที่ ROW ที่ AB99 จะได้ค่า 99
แบบที่ 3. =ROW(ช่วงเซลล์)ผลลัพธ์จะได้ค่าตาม ROW ของเซลล์แรก...เช่น
=ROW(A2:A10) ผลลัพธ์ 2
=ROW(B5:A99) ผลลัพธ์ 5
แบบที่ 3 นี้มีประโยชน์มาก พบบ่อยๆในการใช้ร่วมกับสูตรแบบ ARRAY
วันอังคารที่ 22 ธันวาคม พ.ศ. 2552
INDEX
=INDEX(ชุดข้อมูล,Rowที่..,Columnที่..)
ตัวอย่าง
400 =INDEX(A2:B6,2,2) =INDEX(ชุดข้อมูล,Rowที่..2,Columnที่.. 2)
150 =INDEX(A2:B6,4,2) =INDEX(ชุดข้อมูล,Rowที่..4,Columnที่.. 2)
2009 =INDEX(A2:B6,3,1) =INDEX(ชุดข้อมูล,Rowที่..3,Columnที่.. 1)
กรณีที่ INDEX เพียงแถวใด แถวเดียว หรือ คอลัมน์ใดคอลัมน์เดียวนั้น มักจะละส่วนสุดท้ายไว้
เช่น....
2009 =INDEX(A2:A6,3) =INDEX(ชุดข้อมูล,Rowที่..3)
2009 =INDEX(A2:A6,3,1) =INDEX(ชุดข้อมูล,Rowที่..3,Columnที่.. 1)
การละส่วนสุดท้ายไว้นั้นสามารถทำได้ดังกล่าวมาแล้ว
แต่ควรเข้าใจว่า สูตรเต็มๆนั้นจะต้องมีทั้ง ส่วนของ Row และ Column และต้องไม่ลืมว่า Row มาก่อน Column เสมอ
การนำ INDEX ไปใช้ส่วนใหญ่ที่พบเจอบ่อยๆคือการนำไปใช้กับฟังก์ชั่น MATCH
โดยการหาตำแหน่งของข้อมูลจากการใช้ MATCH จากนั้นจึง INDEX
ตัวอย่างง่ายๆอีกซักชุด
=INDEX(ชุดข้อมูล,Rowที่…,Columnที่…)
=INDEX(B3:D6,1,1) ผลลัพธ์---> Honda
=INDEX(B3:D6,2,3) ผลลัพธ์---> 40
ตัวอย่าง
จากยอดขายใน 3 ไตรมาสแรกของปี ให้หาว่า
ใครทำยอดขายได้สูงสุดและเป็นจำนวนเท่าใด
โจทย์ในลักษณะนี้สามารถหาคำตอบได้หลายๆวิธี ขึ้นอยู่กับว่าจะใช้วิธีใดในการแก้ปัญหาออกมา เช่นใช้ IF ก็ได้ (โจทย์ในลักษณะ"เงื่อนไข" สามารถใช้ IFได้ทุกกรณี ไม่ว่าจะใช้ IF ตรงๆ หรือIF แบบประยุกต์ แบบรูปผสมกับฟังก์ชั่นอื่นๆเป็นต้น) ในที่นี้ต้องการแสดงถึง การ INDEX ของชุดข้อมูลเพื่อให้เป็นแนวทางจึงเลือกใช้ INDEXเป็นหลัก
1.หาค่า MAX ก่อน โดย = MAX( ชุดข้อมูล) ในที่นี้คือ MAX(E4:E9) ได้ตำตอบคือ 90
2.ขั้นต่อไปจะใช้ INDEX หาออกมาว่าเป็นผู้ใดที่ได้ยอดขายสูงสุด(90) จะหา INDEX ได้ ต้องทราบ ตำแหน่งก่อน ....จึงหาตำแหน่งจาก ค่าสูงสุดที่ได้ เป็น MATCH(MAX(E4:E9),E4:E9,0) ...ได้ตำแหน่งของ ค่าสูงสุดออกมา
3.จากนั้น ใช้ INDEX หาจากรายชื่อโดยใช้ตำแหน่งเดียวกันกับที่หาได้จาก ค่าMAX จึงออกมาเป็น
INDEX(A4:A9,MATCH(MAX(E4:E9),E4:E9,0))
ตัวอย่างเบาๆ