Excel Expert Training
Home

การใช้ Evaluate กับ Array - ตอนที่ 2

โดย คุณอรวีร์

สำหรับบทความตอนนี้ ผู้อ่านต้องมีความรู้เกี่ยวกับสูตร 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