ฟังก์ชั่นคือ สูตรคำนวน หรือรหัสคำสั่งที่ได้จัดเตรียมไว้ล่วงหน้า โดยการใช้ค่าที่ระบุเฉพาะ หรือที่เรียกว่า อะกิวเม้นท์ (aguments) ใส่เข้าไปในโครงสร้าง ซึ่งค่า อะกิวเม้นท์ ก็คือ ค่าของตัวแปรต่างๆ ที่จำเป็นในการคำนวน
โครงสร้างของฟังก์ชั่น
ฟังก์ชันที่ใช้ในโปรแกรมเอ็กเซล จะประกอบด้วย
= ชื่อฟังก์ชัน (อาร์กิวเมนต์ 1, อากิวเมนต์ 2, …)
1. เครื่องหมาย =
2. ชื่อของฟังก์ชัน
3.
ค่าอิวกิวเม้นท์ เป็นค่าของตัวแปรต่างๆ ที่จำเป็นในการคำนวน อาจเป็น
ตัวเลข ตัวอักษร ค่าตรรกะ ค่าอ้างอิงเซลล์ต่างๆ หรืออาจเป็นสูตร
หรือฟังก์ชั่นอื่น ซ้อนอีกชั่นหนึ่งก็ได้
โดยค่าอะกิวเม้นท์อาจมีได้หลายค่าโดยแยกค่าต่างๆ ด้วย (,)
ตัวอย่าง
เช่น ฟังก์ชั่นหาผลรวม SUM ซึ่งมีโครงสร้างคือ =SUM(A1:A10)
ชื่อฟังก์ชั่น คือ SUM โดยมีอะกิวเม้นท์เป็นช่วงการอ้างอิงเซลล์ในเวิร์คชีทคือ ช่วงเซลล์ A1 ถึง A10
ฟังก็ชั่นที่ใช้ในโปรแกรมเอ็กเซลล์ หากจำแนกตามแหล่งที่มา ก็จะจำแนกได้เป็น 2 ประเภทคือ
1. ฟังก์ชั่นสำเร็จรูปที่มาพร้อมกับโปรแกรม
2. ฟังก์ชั่นที่ผู้ใช้งานสร้างขึ้นมาเองเพื่อตอบสนองต่อประโยชน์เฉพาะอย่าง ที่ผู้ใช้ต้องการ
1.ฟังก์ชั่นสำเร็จรูป
เป็นฟังก์ชั่นที่มาพร้อมกับโปรแกรมเอ็กเซลล์ ผู้ใช้งานสามารถเรียกใช้ฟังก์ชั่นสำเร็จรูปได้ทันที ตัวอย่างเช่น
ประเภท
|
ชื่อฟังก์ชั่น
|
รายละเอียด
|
Finance
|
FV
|
ส่งคืนค่ามูลค่าเงินในอนาคต
|
NPV
|
ส่งคืนค่ามูลค่าปัจจุบันสุทธิของเงินลงทุน
| |
PV
|
ส่งคืนค่ามูลค่าเงินในปัจจุบัน
| |
Date&Time
|
DAY
|
ส่งคืนค่าเลขวันที่ 1-31 ออกมาจากข้อมูล วันที่, เดือน, ปี
|
NOW
|
ส่งคืนค่าวันที่และเวลาปัจจุบัน ที่อยู่ในเครื่องคอมพิวเตอร์
| |
TODAY
|
ส่งคืนค่าวันที่ปัจจุบัน ตามที่อยู่ในเครื่องคอมพิวเตอร์
| |
Math&Trig
|
FACT
|
ส่งค่าผลคำนวนแฟคทอเรียล
|
INT
|
ปัดตัวเลขลง ให้เท่ากับจำนวนเต็มที่ใกล้เคียงที่สุด
| |
PI
|
ส่งคืนค่า Pi = 22/7
| |
SUM
|
ส่งค่าผลรวมตัวเลขที่กำหนด หรือในช่วงที่กำหนดทั้งหมด
| |
Statistical
|
AVERAGE
|
ส่งคืนค่าเฉลี่ยของจำนวนตัวเลข
|
COUNT
|
ส่งคืนค่าจำนวนเซลล์ที่บรรจุจำนวนตัวเลข
| |
MAX
|
ส่งคืนค่ามากที่สุดจากชุดข้อมูลที่กำหนด
| |
MIN
|
ส่งคืนค่าน้อยที่สุดจากชุดข้อมูลที่กำหนด
| |
TEXT
|
FIND
|
ส่งคืนค่าตำแหน่งเริ่มต้นของการค้นหาข้อความหนึ่งจากในข้อความหนึ่ง
|
LEN
|
ส่งกลับจำนวนอักขระในสตริงข้อความ LEN
| |
MID
|
ส่งกลับจำนวนตัวอักษรจากข้อความที่ระบุตำแหน่งที่คุณระบุขึ้นอยู่กับจำนวนของตัวอักษรที่คุณระบุ
| |
TRIM
|
ลบช่องว่างทั้งหมดออกจากข้อความยกเว้นช่องว่างระหว่างคำ
|
2.ฟังก์ชั่นที่สร้างขึ้นมาใช้งานเอง
นอก
เหนือจากฟังก์ชั่นสำเร็จรูป
ที่โปรแกรมเอ็กเซลล์ได้จัดเตรียมไว้ให้ผู้ใช้โปรแกรมได้เลือกใช้อย่างมากมาย
แล้วก็ตาม บางครั้ง ผู้ใช้งานก็มีความต้องการที่จะคำนวน
หรือให้โปรแกรมประมวลผลที่ซับซ้อนมากกว่า
หรือต้องการให้โปรแกรมสามารถตอบสนองต่อความต้องการงานที่ผู้ใช้ทำอยู่
ด้วยเหตุนี้
การพัฒนาความสามารถของโปรแกรมอาจต้องใช้การเขียนรหัสคำสั่งเพิ่มเติม
เพื่อให้ได้ฟังก์ชั่นตามที่ต้องการ
ซึ่งการสร้างฟังก์ชั่นนั้นมีโครงสร้างพื้นฐานที่ต้องทำความเข้าใจในเบื้อง
ต้น ตามโครงสร้างดังนี้
[Public | Private] [Static] Function name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function
Private หมายถึง กำหนดให้ฟังก์ชันที่สร้างขึ้นมา มีขอบเขตในการเรียกใช้งานเฉพาะฟอร์ม หรือโมดูลที่ประกาศเท่านั้น
Public หมายถึง กำหนดให้ฟังก์ชันที่สร้างขึ้นมา สามารถถูกเรียกใช้งานได้ทุกส่วน
Static หมายถึง กำหนดให้ฟังก์ชันเก็บค่าที่ได้จากการประมวลผลไว้ เมื่อมีการเรียกใช้งานฟังก์ชันครั้งต่อๆ ไป ค่าดังกล่าวจะมีค่าเท่าเดิม
Sub หมายถึง ต้องการสร้างโพรซีเดอร์ทั่วๆ ไป แบบฟังก์ชัน
name หมายถึง ชื่อของฟังก์ชัน
arglist หมายถึง อาร์กิวเมนต์ที่ต้องใช้ในฟังก์ชัน ซึ่งจะมีหรือไม่มีก็ได้
As type หมายถึง ชนิดของข้อมูลที่ฟังก์ชั่นจะส่งค่าคืนมาเช่น Integer, Long เป็นต้น
statements หมายถึง ชุดคำสั่งต่างๆ ในฟังก์ชัน
Exit Function หมายถึง คำสั่ง ที่สั่งให้ออกจากฟังก์ชันทันที
End Function หมายถึง จบการทำงานของฟังก์ชั่น
ตัวอย่างที่ 1 การสร้างฟังก์ชั่นคำนวนหาพื้นที่สี่เหลี่ยม
เป็นการสร้างฟังก์ชั่นคำนวนหาพื้นที่สี่เหลี่ยม โดยมีตัวแปร area เป็นชื่อฟังก์ชั่น และเป็นตัวแปรรับค่าคืนจากการคำนวน ของตัวแปร x และ y โดย x เป็นตัวแปรของความยาวด้านหนึ่ง และ y เป็นตัวแปรของความยาวอีกด้านหนึ่ง
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > Module
4. ให้พิมพ์คำสั่งฟังก์ชั่นดังนี้
Function area(x As Integer, y As Integer) As Integer
area = x * y
End Function
รูปที่ 5.1
การเรียกใช้ฟังก์ชั่น
ฟังก์ชั่นสำเร็จรูปและฟังก์ชั่นที่สร้างขึ้นมาใช้งานเอง มีวิธีการเรียกใช้งานอยู่ 3 วิธีคือ
วิธีที่ 1 การใช้ฟังก์ชั่นผ่านเวิร์คชีท
ด้วย
การคลิกเลือกเซลล์ที่ต้องการแสดงผลการคำนวน ใส่เครื่องหมายเท่ากับ (=)
แล้วตามด้วยชื่อฟังก์ชั่น และใส่ค่าอะกิวเม้นท์ต่างๆ ในวงเล็บ
รูปที่ 5.2
จากรูปตัวอย่างแสดงการใช้งานฟังก์ชั่นด้วยการคลิกเลือกเซลล์ A11 เพื่อแสดงผลการคำนวนค่า SUM ด้วยการพิมพ์ =Sum(A1:A10) เพื่อหาค่าผลรวมช่วงข้อมูลตั้งแต่เซลล์ A1 ถึงเซลล์ A10
สำหรับฟังก์ชั่นที่สร้างขึ้นมาใช้เองก็สามารถเรียกใช้ได้เช่นกัน เช่น การเรียกใช้ฟังก์ชั่นการหาพื้นที่ ที่ได้สร้างเอาไว้แล้ว
รูปที่ 5.3
วิธีที่ 2 กำหนดฟังก์ชั่นผ่าน Paste function
เลือกใช้ฟังก์ชั่นผ่านเมนูบาร์ฟังก์ชั่น โดยการคลิกที่ปุ่ม fx จะปรากฏไดอะล็อกของ Insert Function ขึ้นมาให้เราได้เลือกใช้ฟังก์ชั่น
รูปที่ 5.4
จากรูปตัวอย่างเป็นการเรียกใช้ฟังก์ชั่นโดยการเรียก ไดอะล็อก Insert Function ขึ้นมาจากนั้นเลือกฟังก์ชั่น SUM แล้วกดปุ่ม OK ก็จะปรากฏไดอะล็อกอะกิวเม้นท์ขึ้นมาเพื่อให้ผู้ใช้ได้กำหนดค่าอะกิวเม้นท์ ซึ่งฟังก์ชั่น SUM ในตัวอย่างนี้ ค่าอะกิวเม้นท์ ก็คือ ช่วงอ้างอิงข้อมูลในเซลล์ ตั้งแต่ A1 ถึง A10
รูปที่ 5.5
สำหรับฟังก์ชั่นที่สร้างขึ้นมาใช้เองก็สามารถเรียกใช้ได้เช่นกัน โดยการเลือก Select Category เป็น User Defined เช่น ตัวอย่างการสร้างฟังก์ชั่นหาพื้นที่สี่เหลี่ยม ที่ได้สร้างเอาไว้แล้ว จะปรากฏในไดอะล็อก Insert Function ในกลุ่ม User Defined
รูปที่ 5.6
วิธีที่ 3 การเรียกใช้ฟังก์ชั่นด้วยการเขียนรหัสคำสั่ง
ในการเขียนรหัสคำสั่ง VBA หรือ
สร้างโปรแกรมใช้งานบางครั้งต้องมีการใช้ฟังก์ชั่นต่างๆ
เพื่อการคำนวนหรือประมวลผล
ซึ่งฟังก์ชั่นบางชนิดก็ถูกสร้างมาพร้อมกับโปรแกรมเอ็กเซลล์แล้ว
ทำให้ผู้ใช้ไม่ต้องเขียนฟังก์ชั่นเพิ่ม เพียงแค่รู้จักวิธีการใช้งาน
หน้าที่ของฟังก์ชั่น และการเรียกใช้งานของฟังก์ชั่นนั้นๆ
ก็สามารถนำมาใช้งานได้แล้ว
3.1 การเรียกใช้งานฟังก์ชั่นสำเร็จรูปแบบเขียนรหัสคำสั่งนี้จะใช้คุณสมบัติ Worksheetfunction (property) ในการส่งค่าคืนจากฟังก์ชั่น ซึ่งมีโครงสร้างดังนี้(ดูตัวอย่างที่ 2)
= Worksheetfunction.[name](agument)
3.2 การเรียกใช้งานฟังก์ชั่นที่เขียนขึ้นมาเอง (UserDefined) แบบเขียนรหัสคำสั่งซึ่งมีโครงสร้างดังนี้ (ดูตัวอย่างที่ 3)
=[name](agument)
ตัวอย่างที่ 2 การเรียกใช้ฟังก์ชั่นสำเร็จรูปด้วยการเขียนคำสั่ง VBA ซึ่งในตัวอย่างนี้ จะเป็นการให้โปรแกรมคำนวนหาค่าผลรวมของช่วงข้อมูล A1 ถึง A10 แล้วส่งคืนมาแสดงที่ TextBox1
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert > UserForm
4. UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้
7. ใส่ TextBox1 เพื่อป้อนค่าหรือพิมพ์ตัวอักษร
8. ใส่ CommandButton1 เพื่อเป็นปุ่มกด สั่งให้โปรแกรมทำงาน
9. กำหนดค่าคุณสมบัติ (property) ให้แต่ละคอนโทรลดังนี้
คอนโทรล
|
พร็อพเพอร์ตี้
|
ค่าที่กำหนด
|
UserForm1
|
Caption
|
UserForm1
|
Height
|
125
| |
Width
|
240
| |
TextBox1
|
Caption
|
-
|
Height
|
30
| |
Width
|
120
| |
CommandButton1
|
Caption
|
SUM
|
Height
|
30
| |
Width
|
90
|
10. จะได้ Userform1 ที่ประกอบด้วยคอนโทรลต่างๆ ดังรูป
รูปที่ 5.7
11. ใส่โค๊ดคำสั่งใน CommandButton1 โดยการดับเบิ้ลคลิกที่ CommandButton1 หน้าต่างโค๊ดคำสั่งจะปรากฏขึ้นมา ให้พิมพ์คำสั่งดังนี้
Private Sub CommandButton1_Click()
TextBox1.Text = WorksheetFunction.Sum(Range("A1:A10"))
End Sub
โปรแกรมจะเรียกฟังก์ชั่น SUM โดยอาศัยคุณสมบัติ (property) WorksheetFunction เพื่อส่งคืนค่าจากฟังก์ชั่น โดยอะกิวเม้นท์คือ ช่วงอ้างอิงของข้อมูลตั้งแต่เซลล์ A1 ถึง เซลล์ A10
12. ทดสอบโปรแกรม โดยการกลับไปที่หน้าต่าง Worksheet แล้วสร้างปุ่ม Button1 ขึ้นมา (ถ้าไม่มีปุ่ม Button1 ให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms) คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button1
รูปที่ 5.8
13. จากนั้นหน้าต่าง Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New
14. เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
UserForm1.Show
End Sub
15. การทดสอบโปรแกรม ให้พิมพ์ค่าตัวเลขลงในช่วงเซลล์ A1 ถึง A10 แล้วคลิกที่ปุ่ม Button1 เพื่อเรียก UserForm1 ขึ้นมา จากนั้นให้กดปุ่ม CommandButton1 (ปุ่ม SUM) จะได้ผลรวมทั้งหมดซึ่งแสดงใน TextBox1
รูปที่ 5.9
ตัวอย่างที่ 3 การเรียกใช้ฟังก์ชั่นที่เขียนขึ้นเอง ด้วยการเขียน VBA ในตัวอย่างนี้ เป็นการให้โปรแกรมคำนวนหาค่าพื้นที่รูปสี่เหลี่ยมที่มีความกว้าง และความยาวตามที่กำหนด
1. เปิดโปรแกรมเอ็กเซลล์
2. เปิดหน้าต่าง Visual Basic Editor โดยที่เมนูบาร์คลิก Tools>Macro> Visual Basic Editor
3. เมื่อหน้าจอ Visual Basic Editor ปรากฏขึ้น ให้คลิกเลือก Insert>Module
4. สร้างฟังก์ชั่นโดยการพิมพ์คำสั่งฟังก์ชั่นดังนี้
Function area(x As Integer, y As Integer) As Integer
area = x * y
End Function
รูปที่ 5.10
5. ที่หน้าจอ Visual Basic Editor ให้เลือก Insert>UserForm
6. UserForm1 จะปรากฏขึ้น ให้ปรับขนาดตามต้องการโดยการคลิกลากส่วนขอบของ UserForm1 หรืออาจกำหนดขนาดในหน้าต่างพร็อพเพอร์ตี้ก็ได้
7. ใส่ TextBox1 และ TextBox2 เพื่อป้อนค่าหรือพิมพ์ตัวอักษร
8. ใส่ Label1 และLabel2 เพื่อป้ายชื่อ
9. ใส่ Label3 เพื่อแสดงค่าผลการคำนวน
10. ใส่ CommandButton1 เพื่อสั่งให้โปรแกรมทำงาน
11. กำหนดค่าคุณสมบัติ (property) ให้แต่ละคอนโทรลดังนี้
คอนโทรล
|
พร็อพเพอร์ตี้
|
ค่าที่กำหนด
|
UserForm1
|
Caption
|
UserForm1
|
Height
|
125
| |
Width
|
240
| |
TextBox1
|
Caption
|
-
|
Height
|
25
| |
Width
|
66
| |
TextBox2
|
Caption
|
-
|
Height
|
25
| |
Width
|
66
| |
Label1
|
Caption
|
ความกว้าง
|
Height
|
25
| |
Width
|
66
| |
Label2
|
Caption
|
ความยาว
|
Height
|
25
| |
Width
|
66
| |
Label3
|
BackColor
|
&H8000000E&
|
Caption
|
-
| |
Height
|
30
| |
Width
|
66
| |
CommandButton1
|
Caption
|
พื้นที่
|
Height
|
30
| |
Width
|
72
|
รูปที่ 5.11
12. ใส่โค๊ดคำสั่งใน CommandButton1 โดยการดับเบิ้ลคลิกที่ CommandButton1 หน้าต่างโค๊ดคำสั่งจะปรากฏขึ้นมา ให้พิมพ์คำสั่งดังนี้
Private Sub CommandButton1_Click()
Dim a As String
Dim x As Integer
Dim y As Integer
x = TextBox1.Text
y = TextBox2.Text
a = area(x, y)
Label3.Caption = a
End Sub
จากรหัสคำสั่งจะสังเกตุเห็นว่า การเรียกฟังก์ชั่นที่เราสร้างขึ้นสามารถเรียกโดยการพิมพ์ชื่อและอะกิวเม้นเท่านั้น = area(x,y)
13. ทดสอบโปรแกรม โดยการกลับไปที่หน้าต่าง Worksheet แล้วสร้างปุ่ม Button1 ขึ้นมา (ถ้าไม่มีปุ่ม Button1 ให้คลิกขวาที่เมนู แล้วคลิกเลือก Forms) คลิกเม้าส์ซ้ายค้างแล้วลากเม้าส์ เพื่อวาดปุ่ม Button1
รูปที่ 5.12
14. จากนั้นหน้าต่าง Assign macro จะเปิดขึ้นมา ให้คลิกเลือกปุ่ม New
15. เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
UserForm1.Show
End Sub
16. การแสดงผลโดยการกดปุ่ม Button1 เพื่อเรียกโปรแกมขึ้นมา ให้ลองใส่ข้อมูลความกว้างและความยาวลงใน TextBox1 และ TextBox2 แล้วกดปุ่ม CommandButton1 เพื่อคำนวนพื้นที่
รูปที่ 5.13
ไม่มีความคิดเห็น:
แสดงความคิดเห็น