โดย คุณอรวีร์
สำหรับบทความตอนนี้ ผู้อ่านต้องมีความรู้เกี่ยวกับสูตร Array อยู่ก่อนแล้วนะคะ (อ่านจาก Quick Step ใน Website ของอาจารย์สมเกียรติได้ค่ะ)
ให้ A1:A10 มีเลข 1 ถึง 10 เหมือนตอนที่แล้วต่อค่ะ
ถ้าเราต้องการหาผลรวมของ A1:A10 เฉพาะที่มีค่าระหว่าง 3 ถึง 5 สามารถใส่สูตร Array ที่ A11 ดังนี้
=SUM(A1:A10*(A1:A10>=3)*(A1:A10<=5))
แล้วกด Ctrl-Shift Enter เพื่อให้เป็นสูตร Array จะได้ผลลัพธ์เหมือนเป็น 12 (มาจาก 3+4+5)
ใน VBA ถ้าทดลอง Run . . .
Msgbox [ SUM( A1:A10 * (A1:A10>=3) * (A1:A10<=5) ) ]
จะพบว่าได้ผลเป็น 12 เช่นกัน
ถ้าต้องการหาผลรวมของ A1:A10 เฉพาะที่หมายเลขบรรทัดเป็นเลขคี่ สามารถใส่สูตร Array ได้ดังนี้
=SUM(MOD(ROW(A1:A10),2)*A1:A10)
จะได้ผลลัพธ์เป็น 25 (มาจาก 1+3+5+7+9)
ใน VBA ถ้าทดลอง Run . . .
Msgbox [SUM(MOD(ROW(A1:A10),2)*A1:A10)]
จะพบว่าได้ผลเป็น 25 เช่นกัน
ถ้ากด Ctrl-F3 เพื่อไปกำหนดชื่อ MySum โดย Refers to: เป็น
=SUM(MOD(ROW(Sheet1!$A$1:$A$10),2)*Sheet1!$A$1:$A$10)
แล้วกลับมาใส่สูตรที่ Cell ใดๆดังนี้ . . .
=MySum
จะพบว่าได้ผลเป็น 25 เช่นกัน
ใน VBA ถ้าทดลอง Run . . . Msgbox [MySum] จะได้ผลลัพธ์เหมือนกัน
ถ้ากด Ctrl-F3 เพื่อไปกำหนดชื่อ MyArray โดย Refers to: เป็น
={1;2;3}
แล้วกลับมาใส่สูตร Array ที่ Cell ใดๆดังนี้ . . .
=SUM(A4:A6*MyArray)
อย่าลืมกด Ctrl-Shift Enter นะคะเพราะเป็นสูตร Array
จะได้ผลลัพธ์เป็น 32 (มาจาก 4*1 + 5*2 + 6*3 )
ใน VBA ก็ใช้แบบนี้ค่ะ
[SUM(A4:A6*MyArray)]
ตัวอย่างข้างบน ถ้ากำหนด MyArray เป็น =ROW($1:$3)
ก็ได้ผลเช่นเดียวกันค่ะ
ตอนต่อไป ... การใช้
Array Evaluate - ตอนที่ 3
| Home |
|
www.xls.i.am www.tpa.or.th/xlsiam |
29/06/2545 |