การใช้ 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
ภาพที่ 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
ไม่มีความคิดเห็น:
แสดงความคิดเห็น