วันเสาร์ที่ 11 มิถุนายน พ.ศ. 2554

การใช้ excel : การใช้สูตร excel if ใน vba

การใช้ Excel ในบทความนี้จะเป็นบทความต่อจากการใช้คำสั่งควบคุม For…Next และ Do While….Loop จากที่ได้กล่าวไว้ก่อนจบบทความที่ผ่านมา หากมีเงื่อนไขให้หาผลรวมเฉพาะค่าใน Cells ที่เป็นบวกเท่านั้น หากกล่าวถึงเงื่อนไข ใน excel เราจะพบการใช้สูตร excel if เข้ามาช่วยในการจัดการโดย สูตร excel if มีรูปแบบดังนี้

IF(condition,value if true,value if false) ซึ่งท่านผู้อ่านจะพบว่าสูตร excel if จะตรวจสอบเงื่อนไขก่อน เพื่อแยกดำเนินการตามเงื่อนไขจริงหรือเท็จ ดังนั้น ในการใช้สูตร if ใน vba ก็จะมีรูปแบบคล้ายกัน มาดูโค้ดกันเลยครับ

dim sum as double

for i = 1 to 3

sum = 0

for j = 1 to 3

if Cells(i,j) > 0 then sum = sum + Cells(i,j)

next j

Cells(i,j) = sum

next i

ลอง รันมาโคร ดูครับ

จะได้ผลลัพธ์ดังภาพที่ 1

การใช้สูตร excel ifภาพที่ 1 ผลการรันมาโคร การใช้สูตร if

รูปแบบของสูตร if มีสามรูปแบบดังนี้

กรณีมีสองเงื่อนไขและต้องดำเนินการทั้งสองเงื่อนไข

If (condition) then

‘หากเงื่อนไขสูตร if เป็นจริง

else

‘หากเงื่อนไขสูตร if เป็นเท็จ

endif

กรณีมีหลายเงื่อนไข

If (condition) then

‘หากเงื่อนไขสูตร if เป็นจริง

elseif (condition) then

‘หากเงื่อนไขสูตร elseif เป็นเท็จ

else

‘หากเงื่อนไขสูตร if เป็นเท็จ

endif

กรณีมีสองเงื่อนไขและต้องดำเนินการทั้งสองเงื่อนไข

If (condition) then ‘หากเงื่อนไขสูตร if เป็นจริง

ฝากไว้ให้ท่านผู้อ่านลองไปปรับแก้ดูนะครับ หากเพิ่มเงื่อนไขให้หาผลรวมของค่าที่เป็นบวกและค่าที่เป็นลบในแต่ละแถว เราจะต้องเขียนสูตร excel if อย่างไร เอาหล่ะครับจากสามบทความที่นำเสนอมา คิดว่าท่านผู้อ่านคงมีพื้นฐานการเขียนมาโครมาระดับหนึ่งแล้วนะครับ ไม่ว่าจะเป็น การเข้าถึงข้อมูลใน Cells การบันทึกข้อมูลใน Cells การใช้คำสั่งควบคุมเพื่อท่องไปใน Cells ต่างๆเพื่อจัดการข้อมูล การใช้คำสั่ง IF เพื่อจัดการข้อมูลให้มีประสิทธิภาพสูงขึ้นครับ ในบทความต่อๆไปท่านผู้อ่านจะเห็นตัวอย่างการประยุกต์ใช้ในการใช้งาน excel เพิ่มขึ้นเรื่อยๆครับ หากไม่เข้าใจก็ขอให้ย้อนกลับมาอ่านสามบทความนี้ครับ สวัสดีครับ

สุดท้ายเฉลยโจทย์ที่ฝากไว้ครับ มาดูการใช้สูตร excel if กันเลย

dim sum_pos as double

dim sum_nag as double

for i = 1 to 3

sum_pos = 0

sum_nag = 0

for j = 1 to 3

if Cells(i,j) >= 0 then

sum_pos = sum_pos + Cells(i,j)

else

sum_nag = sum_nag + Cells(i,j)

endif

next j

Cells(i,j) = sum_pos

Cells(i,j+1) = sum_nag

next i

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Yahoo bot last visit powered by  Ybotvisit.com