สร้างฟังก์ชันแบบกำหนดเองใน Excel

หมายเหตุ:  เราต้องการมอบเนื้อหาวิธีใช้ปัจจุบันในภาษาของคุณให้กับคุณโดยเร็วที่สุดเท่าที่เราจะทำได้ หน้านี้ได้รับการแปลด้วยระบบอัตโนมัติ และอาจมีข้อผิดพลาดทางไวยากรณ์หรือความไม่ถูกต้อง จุดประสงค์ของเราคือเพื่อให้เนื้อหานี้มีประโยชน์กับคุณ คุณแจ้งให้เราทราบว่าข้อมูลดังกล่าวมีประโยชน์ต่อคุณที่ด้านล่างของหน้านี้ได้หรือไม่ นี่คือ บทความภาษาอังกฤษ เพื่อให้ง่ายต่อการอ้างอิง

แม้ว่า Excel มีมากมายฟังก์ชันเวิร์กชีตที่มีอยู่ภายใน โอกาสนั้นจะไม่มีฟังก์ชันสำหรับทุกชนิดของการคำนวณที่คุณดำเนินการ ตัวออกแบบของ Excel ไม่สามารถอาจคาดว่าจะมีความต้องการคำนวณของผู้ใช้ทุกคน แทน Excel ให้คุณสามารถสร้างฟังก์ชันแบบกำหนดเอง ที่อธิบายไว้ในบทความนี้

ฟังก์ชันแบบกำหนดเอง เช่นแมโคร ใช้Visual Basic for Applications (VBA) ภาษาการเขียนโปรแกรม แตกต่างจากแมโครที่ได้สองวิธีที่สำคัญ ขั้นแรก พวกเขาใช้กระบวนงานของฟังก์ชันแทนการใช้กระบวนงานย่อย นั่นคือ พวกเขาเริ่มต้น ด้วยคำสั่งฟังก์ชันแทนการใช้คำสั่งย่อยและสิ้นสุดด้วยฟังก์ชันท้ายแทนที่จะสิ้นสุดย่อย Second พวกเขาทำการคำนวณแทนที่จะทำการกระทำต่าง ๆ ชนิดคำสั่ง เช่นคำสั่งที่เลือก และจัดรูปแบบช่วง บางชนิดจะถูกแยกออกจากฟังก์ชันแบบกำหนดเอง ในบทความนี้ คุณจะเรียนรู้วิธีการสร้าง และใช้ฟังก์ชันแบบกำหนดเอง เมื่อต้องการสร้างฟังก์ชันและแมโคร คุณทำงานกับตัวVisual Basic Editor (VBE), ซึ่งเปิดขึ้นในหน้าต่างแยกต่างหากจาก Excel ใหม่

สมมติว่าบริษัทของคุณมีส่วนลดปริมาณ 10 เปอร์เซ็นต์บน การขายของผลิตภัณฑ์ มีลำดับจะมากกว่า 100 หน่วย ในย่อหน้าที่ต่อไปนี้ เราจะสาธิตฟังก์ชันเพื่อคำนวณนี้ส่วนลด

ตัวอย่างด้านล่างแสดงฟอร์มการสั่งซื้อที่แสดงรายการแต่ละรายการ ปริมาณ ราคา ส่วนลด (ถ้ามี), และราคารวมเป็นผลลัพธ์

ฟอร์มใบสั่งซื้ออย่าง โดยไม่มีฟังก์ชันกำหนดเอง

เมื่อต้องการสร้างส่วนลดฟังก์ชันแบบกำหนดเองในเวิร์กบุ๊กนี้ ทำตามขั้นตอนเหล่านี้:

  1. กดAlt + F11 เพื่อเปิด Visual Basic Editor (บน Mac กดFN + ALT + F11 ), แล้ว คลิกแทรก >มอดูล หน้าต่างมอดูลใหม่ปรากฏที่ด้านขวาของ Visual Basic Editor

  2. คัดลอก และวางโค้ดต่อไปนี้เพื่อมอดูลใหม่

    Function DISCOUNT(quantity, price)
    If quantity >=100 Then
    DISCOUNT = quantity * price * 0.1
    Else
    DISCOUNT = 0
    End If

    DISCOUNT = Application.Round(Discount, 2)
    End Function

หมายเหตุ: เพื่อให้ รหัสของคุณอ่านง่ายขึ้นคุณสามารถใช้แป้นTab เพื่อเยื้องบรรทัด การเยื้องเป็นประโยชน์ของคุณเท่านั้น และเลือกได้ ตามโค้ดจะทำงานด้วย หรือ ไม่นั้น หลังจากที่คุณพิมพ์บรรทัดที่เยื้อง Visual Basic Editor ถือสายของคุณถัดไปจะมีการเยื้องในทำนองเดียวกัน เมื่อต้องการย้ายหา (นั่นคือ ไปทางซ้าย) อักขระแท็บหนึ่ง กดShift + Tab

ตอนนี้ คุณก็พร้อมที่จะใช้ฟังก์ชันส่วนลดใหม่ ปิด Visual Basic Editor เลือกเซลล์ G7 และพิมพ์ต่อไปนี้:

=DISCOUNT(D7,E7)

Excel คำนวณส่วนลด 10 เปอร์เซ็นต์ในหน่วย 200 ที่ 47.50 ต่อหน่วย และ $950.00 ส่งกลับ

ในบรรทัดแรกของโค้ด VBA ของคุณ ฟังก์ชัน DISCOUNT(quantity, price) คุณระบุว่า ฟังก์ชันส่วนลดจำเป็นต้องมีสองอาร์กิวเมนต์ปริมาณและราคา เมื่อคุณเรียกใช้ฟังก์ชันในเซลล์เวิร์กชีต คุณต้องมีสองอาร์กิวเมนต์เหล่านั้น ในสูตร = DISCOUNT(D7,E7), D7 เป็นอาร์กิวเมนต์ปริมาณและ E7 เป็นอาร์กิวเมนต์ราคา ตอนนี้ คุณสามารถคัดลอกสูตรลดการ G8:G13 เพื่อให้ได้ผลลัพธ์ที่แสดงด้านล่าง

มาลองดูวิธีที่ Excel แปลงกระบวนงานนี้ฟังก์ชันนี้ เมื่อคุณกดEnter, Excel ค้นหาชื่อส่วนลดในเวิร์กบุ๊กปัจจุบัน และค้นหาว่า เป็นฟังก์ชันแบบกำหนดเองในมอดู VBA ชื่ออาร์กิวเมนต์ภายในวงเล็บปริมาณและราคาทั้งพื้นที่ที่สำรองไว้สำหรับค่าที่ใช้คำนวณส่วนลด

ตัวอย่างฟอร์มใบสั่งซื้อ ด้วยฟังก์ชันแบบกำหนดเอง

ถ้าคำสั่งในบล็อกของโค้ดต่อไปนี้ตรวจสอบอาร์กิวเมนต์ปริมาณและกำหนดว่า จำนวนของสินค้าที่ขายได้มีค่ามากกว่า หรือเท่ากับ 100:

If quantity >= 100 Then
DISCOUNT = quantity * price * 0.1
Else
DISCOUNT = 0
End If

ถ้าจำนวนของสินค้าที่ขายได้มีค่ามากกว่า หรือเท่ากับ 100, VBA ดำเนินการคำชี้แจง ต่อไปนี้ซึ่งคูณค่าปริมาณราคาค่า จากนั้น คูณผลลัพธ์ ด้วย 0.1:

Discount = quantity * price * 0.1

ผลลัพธ์ถูกเก็บเป็นตัวแปรส่วนลด คำสั่ง VBA ที่เก็บค่าในตัวแปรจะเรียกว่าคำสั่งการกำหนดเนื่องจากประเมินนิพจน์บนด้านขวาของเครื่องหมายเท่ากับ และกำหนดผลลัพธ์ให้ชื่อตัวแปรทางด้านซ้าย เนื่องจากตัวแปรส่วนลดมีชื่อเดียวกับฟังก์ชันกระบวนงาน จะส่งกลับค่าเก็บไว้ในตัวแปรลงในสูตรแผ่นงานที่เรียกว่าฟังก์ชันส่วนลด

ถ้าปริมาณที่น้อยกว่า 100, VBA ดำเนินการคำสั่งต่อไปนี้:

Discount = 0

สุดท้าย คำสั่งต่อไปนี้ปัดเศษค่ากำหนดให้กับตัวแปรส่วนลดเป็นทศนิยมสองตำแหน่ง:

Discount = Application.Round(Discount, 2)

ไม่มีฟังก์ชัน ROUND มี VBA แต่ Excel ไม่ ดังนั้น การใช้ ROUND ในคำชี้แจงนี้ คุณบอก VBA เพื่อค้นหาวิธี Round (ฟังก์ชัน) ในแอปพลิเคชันวัตถุ (Excel) คุณดำเนินดังกล่าว โดยการเพิ่มแอปพลิเคชันword ก่อนคำ Round ใช้ไวยากรณ์นี้เมื่อใดก็ ตามที่คุณต้องการเข้าถึงมีฟังก์ชัน Excel จากมอ VBA

ฟังก์ชันแบบกำหนดเองต้องเริ่มต้น ด้วยคำสั่งฟังก์ชัน และสิ้นสุด ด้วยคำสั่งฟังก์ชันสิ้นสุด นอกจากชื่อฟังก์ชัน คำสั่งฟังก์ชันมักจะระบุอย่าง น้อยหนึ่งอาร์กิวเมนต์หรือไม่ อย่างไรก็ตาม คุณสามารถ สร้างฟังก์ชัน มีอาร์กิวเมนต์ไม่ Excel มีฟังก์ชันที่มีอยู่หลาย — RAND และ NOW ตัวอย่างเช่นที่ไม่ได้ใช้อาร์กิวเมนต์

ติดตามงบฟังก์ชัน ฟังก์ชันกระบวนงานมีคำสั่ง VBA อย่าง น้อยหนึ่งที่ตัดสินใจ และทำการคำนวณโดยใช้อาร์กิวเมนต์ที่ส่งไปยังฟังก์ชัน สุดท้าย ที่ใดที่หนึ่งในกระบวนงานฟังก์ชัน คุณต้องมีคำสั่งที่กำหนดค่าให้กับตัวแปรมีชื่อเดียวกันกับฟังก์ชัน ค่านี้จะส่งกลับสูตรที่เรียกใช้ฟังก์ชัน

จำนวนของ VBA คำสำคัญคุณสามารถใช้ในฟังก์ชันแบบกำหนดเองมีค่าน้อยกว่าจำนวนคุณสามารถใช้ในแมโครได้ ฟังก์ชันแบบกำหนดเองจะไม่สามารถทำสิ่งอื่นนอกเหนือจากผลตอบแทนค่าสูตรในเวิร์กชีต หรือนิพจน์ที่ใช้ในแมโคร VBA หรือฟังก์ชันอื่น ตัวอย่างเช่น ฟังก์ชันแบบกำหนดเองไม่สามารถปรับขนาดหน้าต่าง แก้ไขสูตรในเซลล์ หรือเปลี่ยนแบบอักษร สี หรือตัวเลือกรูปแบบสำหรับข้อความในเซลล์ ถ้าคุณมีรหัส "การดำเนินการ" ชนิดนี้ในกระบวนงานฟังก์ชัน ฟังก์ชันจะส่งกลับ# #VALUE ข้อผิดพลาด

การกระทำหนึ่งที่สามารถทำกระบวนงานฟังก์ชัน (นอกเหนือจากการคำนวณ) จะแสดงกล่องโต้ตอบ คุณสามารถใช้คำสั่งบุ ในฟังก์ชันแบบกำหนดเองเป็นวิธีการเริ่มการป้อนข้อมูลจากผู้ใช้ที่ใช้ฟังก์ชัน คุณสามารถใช้คำสั่งMsgBox เป็นวิธีการต่าง ๆ ข้อมูลให้กับผู้ใช้ คุณยังสามารถใช้กล่องโต้ตอบแบบกำหนดเอง หรือฟอร์มผู้ใช้ แต่ที่มีชื่อเรื่องเกินขอบเขตของบทนำนี้

ฟังก์ชันแบบกำหนดเองและแมโครอย่างง่ายแม้แต่อาจเป็นเรื่องยากเมื่อต้องการอ่าน คุณสามารถทำให้ง่ายต่อการทำความเข้าใจ ด้วยการพิมพ์ข้อความอธิบายในรูปแบบของข้อคิดเห็น คุณสามารถเพิ่มข้อคิดเห็น โดยก่อนหน้าข้อความอธิบาย ด้วยเครื่องหมายอัญประกาศเดี่ยว ตัวอย่างเช่น ตัวอย่างต่อไปนี้แสดงฟังก์ชันส่วนลดที่ มีข้อคิดเห็น เพิ่มข้อคิดเห็นดังต่อไปนี้ทำให้ง่ายสำหรับคุณหรือบุคคลอื่นจะรักษาโค้ด VBA ของคุณเมื่อเวลาผ่าน ถ้าคุณต้องการเปลี่ยนแปลงรหัสในอนาคต คุณจะมีเวลาง่ายที่ทำความเข้าใจเกี่ยวกับสิ่งที่คุณทำแรก

ตัวอย่างของฟังก์ชัน VBA ที่มีข้อคิดเห็น

เครื่องหมายอัญประกาศเดี่ยวบอก Excel จะละเว้นทุกสิ่งทุกอย่างที่ด้านขวาบนบรรทัดเดียวกัน เพื่อให้คุณสามารถสร้างข้อคิดเห็นบนบรรทัด ด้วยตัวเอง หรือทางด้านขวาของบรรทัดที่ประกอบด้วย VBA code คุณอาจเริ่มบล็อกของโค้ดที่มีข้อคิดเห็นที่อธิบายวัตถุประสงค์โดยรวมของความยาวไม่มากนักแล้ว ใช้คำสั่งแต่ละเอกสารข้อคิดเห็นแบบอินไลน์

อีกวิธีหนึ่งที่เอกสารแมโครและฟังก์ชันที่กำหนดเองของคุณเพื่อ ให้ป้ายชื่อเหล่านั้นได้ ตัวอย่างเช่น แทนชื่อป้ายชื่อแมโคร คุณไม่สามารถตั้งชื่อนั้นMonthLabelsเพื่ออธิบายความหมายมากขึ้นโดยเฉพาะอย่างยิ่งวัตถุประสงค์แมโครที่ทำหน้าที่ ใช้ป้ายชื่อสำหรับแมโครและฟังก์ชันที่กำหนดเองมีประโยชน์มากเมื่อคุณได้สร้างขึ้นในขั้นตอนหลาย โดยเฉพาะอย่างยิ่งถ้าคุณสร้างขั้นตอนที่มีวัตถุประสงค์คล้ายกัน แต่ไม่เหมือนกัน

วิธีที่คุณเอกสารแมโครและฟังก์ชันที่กำหนดเองของคุณจะเป็นเพียงการกำหนดลักษณะส่วนบุคคล สิ่งสำคัญคือการ ยอมรับวิธีบางอย่างของเอกสาร และใช้อย่างสอดคล้องกัน

เมื่อต้องการใช้ฟังก์ชันแบบกำหนดเอง เวิร์กบุ๊กประกอบด้วยมอดูลที่คุณสร้างฟังก์ชันต้องถูกเปิด ถ้าเวิร์กบุ๊กนั้นไม่ได้เปิด คุณได้รับการ #NAME ได้อย่างไร ข้อผิดพลาดเมื่อคุณพยายามที่จะใช้ฟังก์ชัน ถ้าคุณอ้างอิงฟังก์ชันในเวิร์กบุ๊กอื่น คุณต้องนำหน้าชื่อฟังก์ชันที่ มีชื่อของเวิร์กบุ๊กที่ใช้ฟังก์ชันอยู่ ตัวอย่างเช่น ถ้าคุณสร้างฟังก์ชันเรียกว่าส่วนลดในเวิร์กบุ๊กที่เรียกว่า Personal.xlsb และคุณที่ฟังก์ชัน call จากเวิร์กบุ๊กอื่น คุณต้องพิมพ์=personal.xlsb!discount()ไม่เพียงแค่=discount()

คุณสามารถประหยัดบางแป้น (และพิมพ์ผิดเป็นไปได้) โดยการเลือกฟังก์ชันแบบกำหนดเองของคุณจากกล่องโต้ตอบแทรกฟังก์ชัน ฟังก์ชันแบบกำหนดเองของคุณปรากฏในประเภทผู้ใช้กำหนดเอง:

กล่องโต้ตอบแทรกฟังก์ชัน

วิธีง่ายขึ้นเพื่อให้ฟังก์ชันแบบกำหนดเองของคุณให้พร้อมใช้งานที่จะเก็บไว้ในเวิร์กบุ๊กที่แยกต่างหากเวลาทั้งหมดแล้ว บันทึกเวิร์กบุ๊กนั้นเป็นโปรแกรม add-in คุณสามารถทำให้ add-in ที่พร้อมใช้งานเมื่อใดก็ ตามที่คุณเรียกใช้ Excel ต่อไปนี้เป็นวิธีการทำเช่นนี้:

  1. หลังจากที่คุณสร้างในฟังก์ชันที่คุณต้อง คลิกไฟล์ >บันทึกเป็น

    ในExcel 2007 คลิกปุ่ม Microsoft Office และคลิกบันทึกเป็น

  2. ในกล่องโต้ตอบบันทึกเป็น เปิดรายการดรอปดาวน์บันทึกเป็นชนิด และเลือกExcel Add-in ใน บันทึกเวิร์กบุ๊กภายใต้ชื่อที่รู้จัก เช่นMyFunctionsในโฟลเดอร์AddIns กล่องโต้ตอบบันทึกเป็น จะนำเสนอที่โฟลเดอร์ เพื่อยอมรับตำแหน่งที่ตั้งเริ่มต้นคือสิ่งที่คุณต้องการทำ

  3. หลังจากที่คุณบันทึกสมุดงาน คลิกไฟล์ >ตัวเลือกของ Excel ออก

    ในExcel 2007 คลิกปุ่ม Microsoft Office คลิ กตัวเลือกของ Excel

  4. ในกล่องโต้ตอบตัวเลือกของ Excel คลิกประเภทAdd-in

  5. ในรายการดรอปดาวน์จัดการ เลือกExcel Add-in คลิกปุ่มไป แล้ว

  6. ในกล่องโต้ตอบAdd-in เลือกกล่องกาเครื่องหมายที่อยู่ข้างชื่อคุณใช้ในการบันทึกเวิร์กบุ๊ก ดังที่แสดงด้านล่าง

    กล่องโต้ตอบ Add-in

  1. หลังจากที่คุณสร้างในฟังก์ชันที่คุณต้อง คลิกไฟล์ >บันทึกเป็น

  2. ในกล่องโต้ตอบบันทึกเป็น เปิดรายการดรอปดาวน์บันทึกเป็นชนิด และเลือกExcel Add-in ใน บันทึกเวิร์กบุ๊กภายใต้ชื่อที่รู้จัก เช่นMyFunctions

  3. หลังจากที่คุณบันทึกสมุดงาน คลิกเครื่องมือ > Excel Add-ins ที่

  4. ในกล่องโต้ตอบAdd-in เลือกปุ่มเรียกดูเพื่อค้นหา add-in ของคุณ คลิกเปิด จาก นั้นเลือกกล่องอยู่ด้านข้างของคุณเพิ่มเข้าในกล่องAdd-ins ที่มีอยู่

หลังจากที่คุณทำตามขั้นตอนเหล่านี้ ฟังก์ชันแบบกำหนดเองของคุณจะไม่พร้อมใช้งานทุกครั้งที่คุณเรียกใช้ Excel ถ้าคุณต้องการเพิ่มลงในไลบรารีของฟังก์ชัน กลับไป Visual Basic Editor ถ้าคุณดูใน Visual Basic Editor Project Explorer ภายใต้หัวเรื่อง VBAProject คุณจะเห็นมอดูลชื่อหลังจากไฟล์ของคุณเพิ่มเข้ามา Add-in ของคุณจะมี.xlam นามสกุล

โมดูลที่มีชื่อใน VBE

ดับเบิลคลิกที่มอดูลนั้นใน Project Explorer ทำให้เกิดการแสดงโค้ดของฟังก์ชัน Visual Basic Editor เมื่อต้องการเพิ่มฟังก์ชันใหม่ จัดตำแหน่งจุดของคุณหลังจากคำสั่งฟังก์ชันสิ้นสุดที่ฟังก์ชันสุดท้ายในหน้าต่างโค้ดสิ้นสุดลง และเริ่มพิมพ์ คุณสามารถสร้างกับฟังก์ชันจำนวนมาก ขณะที่คุณต้องการในลักษณะนี้ พวกเขาจะเสมอจะพร้อมใช้งานในประเภทผู้ใช้กำหนดเองในกล่องโต้ตอบแทรกฟังก์ชัน

เนื้อหาเหล่านี้ถูกเขียนขึ้น ด้วยเครื่องหมาย Dodge และ Craig Stinson เป็นส่วนหนึ่งของสมุดรายชื่อของพวกเขาMicrosoft Office Excel 2007 ภายในไม่ จะมีการอัพเดเพื่อนำไปใช้กับรุ่นที่ใหม่กว่าของ Excel เช่นเนื่องจาก

ต้องการความช่วยเหลือเพิ่มเติมไหม

คุณสามารถสอบถามผู้เชี่ยวชาญใน Excel Tech Community ขอความช่วยเหลือใน Answers community หรือแนะนำฟีเจอร์ใหม่หรือการปรับปรุงบน Excel User Voiceได้เสมอ

ขยายทักษะ Office ของคุณ
สำรวจการฝึกอบรม
รับฟีเจอร์ใหม่ก่อนใคร
เข้าร่วม Office Insider

ข้อมูลนี้เป็นประโยชน์หรือไม่

ขอบคุณสำหรับคำติชมของคุณ!

ขอขอบคุณสำหรับคำติชมของคุณ! เราคิดว่าอาจเป็นประโยชน์ที่จะให้คุณได้ติดต่อกับหนึ่งในตัวแทนฝ่ายสนับสนุน Office ของเรา

×