วิธีใช้และจัดเก็บฟังก์ชันที่กำหนดเองใน Excel

  • แบ่งปันสิ่งนี้
Michael Brown

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

นอกจากนี้ เราจะแสดงวิธีบันทึกฟังก์ชันของคุณในไฟล์เสริมของ Excel เพื่อใช้ในภายหลังในไม่กี่คลิก

ดังนั้น ต่อไปนี้คือสิ่งที่เราจะพูดถึง:

    วิธีต่างๆ ในการใช้ UDF ใน Excel

    การใช้ UDF ในเวิร์กชีต

    เมื่อคุณตรวจสอบแล้วว่า UDF ของคุณทำงานถูกต้อง คุณสามารถใช้ใน Excel ได้ สูตรหรือในรหัส VBA

    คุณสามารถใช้ฟังก์ชันแบบกำหนดเองในสมุดงาน Excel ได้ในลักษณะเดียวกับที่คุณใช้ฟังก์ชันปกติ ตัวอย่างเช่น เขียนสูตรในเซลล์ด้านล่าง:

    = GetMaxBetween(A1:A6,10,50)

    UDF สามารถใช้ร่วมกับฟังก์ชันปกติได้ ตัวอย่างเช่น เพิ่มข้อความลงในค่าสูงสุดที่คำนวณได้:

    = CONCATENATE("Maximum value between 10 and 50 is ", GetMaxBetween(A1: A6,10,50))

    คุณสามารถดูผลลัพธ์ในภาพหน้าจอด้านล่าง:

    คุณ สามารถหาจำนวนที่มีทั้งค่าสูงสุดและอยู่ในช่วงตั้งแต่ 10 ถึง 50

    ลองตรวจสอบสูตรอื่น:

    = INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), the

    ฟังก์ชันแบบกำหนดเอง GetMaxBetween ตรวจสอบช่วง B2:B9 และค้นหาจำนวนสูงสุดระหว่าง 10 ถึง 50 จากนั้นใช้ INDEX + MATCH เราจะได้ชื่อผลิตภัณฑ์ที่ตรงกับค่าสูงสุดนี้:

    อย่างที่คุณเห็น การใช้ฟังก์ชันแบบกำหนดเองนั้นไม่แตกต่างจาก Excel ทั่วไปมากนักฟังก์ชัน

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

    การใช้ UDF ในโพรซีเดอร์และฟังก์ชัน VBA

    UDF สามารถใช้ในแมโคร VBA ได้เช่นกัน ด้านล่างนี้ คุณสามารถดูรหัสมาโครที่ค้นหาค่าสูงสุดในช่วงตั้งแต่ 10 ถึง 50 ในคอลัมน์ที่มีเซลล์ที่ใช้งานอยู่

    Sub MacroWithUDF() Dim Rng As Range, maxcase, i As Long With ActiveSheet.Range( เซลล์(ActiveCell.CurrentRegion.Row, ActiveCell.Column), เซลล์(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row - 1, ActiveCell.Column)) maxcase = GetMaxBetween(.Cells, 10, 50) i = Application.Match(maxcase, .Cells, 0) .Cells(i).Interior.Color = vbRed End With End Sub

    โค้ดมาโครประกอบด้วยฟังก์ชันที่กำหนดเอง

    GetMaxBetween(.Cells, 10, 50)

    มัน ค้นหาค่าสูงสุดในคอลัมน์ที่ใช้งานอยู่ ค่านี้จะถูกเน้นแล้ว คุณสามารถดูผลลัพธ์ของมาโครในภาพหน้าจอด้านล่าง

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

    ด้วยความช่วยเหลือของฟังก์ชันนี้ เราสามารถรับค่าสูงสุดจากช่วงได้ทันที เขียนเป็นข้อความ

    ในการทำเช่นนี้ เราจะสร้างฟังก์ชันแบบกำหนดเองใหม่ซึ่งเราจะใช้ฟังก์ชัน GetMaxBetween และ SpellNumber ที่เราคุ้นเคยอยู่แล้ว

    Function SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) End ฟังก์ชัน

    อย่างที่คุณเห็น ฟังก์ชัน GetMaxBetween เป็นอาร์กิวเมนต์ของฟังก์ชันที่กำหนดเองอื่น SpellNumber มันกำหนดค่าสูงสุดดังที่เราเคยทำมาหลายครั้งแล้ว จากนั้นตัวเลขนี้จะถูกแปลงเป็นข้อความ

    ในภาพหน้าจอด้านบน คุณสามารถดูวิธีที่ฟังก์ชัน SpellGetMaxBetween ค้นหาจำนวนสูงสุดระหว่าง 100 ถึง 500 และ จากนั้นแปลงเป็นข้อความ

    การเรียก UDF จากสมุดงานอื่น

    หากคุณสร้าง UDF ไว้ในสมุดงาน น่าเสียดายที่ไม่ได้หมายความว่าคุณจะไม่ประสบปัญหาใดๆ เลย

    จากประสบการณ์ของฉัน ผู้ใช้ส่วนใหญ่ไม่ช้าก็เร็วสร้างคอลเลกชันส่วนตัวของมาโครและฟังก์ชันที่กำหนดเองเพื่อทำให้กระบวนการและการคำนวณแต่ละรายการเป็นไปโดยอัตโนมัติ และที่นี่ปัญหาเกิดขึ้น - รหัสของฟังก์ชันที่กำหนดโดยผู้ใช้ใน Visual Basic จำเป็นต้องเก็บไว้ที่ไหนสักแห่งเพื่อใช้ในการทำงานในภายหลัง

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

    ลองมาดูวิธีการในซึ่งคุณสามารถใช้ฟังก์ชันแบบกำหนดเองที่คุณสร้างขึ้น

    วิธีที่ 1. เพิ่มชื่อสมุดงานลงในฟังก์ชัน

    คุณสามารถระบุชื่อสมุดงานที่อยู่หน้าชื่อของ การทำงาน. ตัวอย่างเช่น หากคุณบันทึกฟังก์ชันที่กำหนดเอง GetMaxBetween() ในสมุดงานชื่อ My_Functions.xlsm คุณต้องป้อนสูตรต่อไปนี้:

    = My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)

    วิธีที่ 2 จัดเก็บ UDF ทั้งหมดไว้ในไฟล์ทั่วไปไฟล์เดียว

    บันทึกฟังก์ชันที่กำหนดเองทั้งหมดไว้ในสมุดงานพิเศษเล่มเดียว (เช่น My_Functions.xlsm ) และคัดลอกฟังก์ชันที่ต้องการจากนั้นลงใน สมุดงานปัจจุบัน ถ้าจำเป็น

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

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

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

    วิธีที่ 3. สร้างไฟล์ส่วนเสริมของ Excel

    ฉันคิดว่าวิธีที่ดีที่สุดคือเก็บฟังก์ชันที่กำหนดเองที่ใช้บ่อยไว้ในไฟล์ส่วนเสริมของ Excel . ข้อดีของการใช้ Add-in:

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

    เราจะพูดถึงเพิ่มเติมเกี่ยวกับการสร้างและการใช้ Add-in ในภายหลัง

    การใช้ Add- ins เพื่อจัดเก็บฟังก์ชั่นที่กำหนดเอง

    ฉันจะสร้างส่วนเสริมของตัวเองได้อย่างไร? มาดูขั้นตอนนี้ทีละขั้นตอนกัน

    ขั้นตอนที่ 1. สร้างไฟล์ส่วนเสริม

    เปิด Microsoft Excel สร้างสมุดงานใหม่ และบันทึกภายใต้ชื่อที่เหมาะสม (เช่น My_Functions) ในรูปแบบ Add-in ในการดำเนินการนี้ ให้ใช้เมนู ไฟล์ - บันทึกเป็น หรือปุ่ม F12 อย่าลืมระบุประเภทไฟล์ Excel Add-in :

    Add-in ของคุณจะมีนามสกุล .xlam

    เคล็ดลับ. โปรดทราบว่าตามค่าเริ่มต้น Excel จะเก็บ Add-in ไว้ในโฟลเดอร์ C:\Users\[Your_Name]\AppData\Roaming\Microsoft\AddIns ฉันขอแนะนำให้คุณยอมรับตำแหน่งเริ่มต้น หากต้องการ คุณสามารถระบุโฟลเดอร์อื่นได้ แต่เมื่อเชื่อมต่อ Add-in คุณจะต้องค้นหาและระบุตำแหน่งใหม่ด้วยตนเอง หากคุณบันทึกไว้ในโฟลเดอร์เริ่มต้น คุณไม่จำเป็นต้องค้นหาโปรแกรมเสริมในคอมพิวเตอร์ของคุณ Excel จะแสดงรายการโดยอัตโนมัติ

    ขั้นตอนที่ 2 เชื่อมต่อไฟล์ add-in

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

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

    ขั้นตอนที่ 3. เพิ่มฟังก์ชันและมาโครที่กำหนดเองให้กับส่วนเสริม

    ส่วนเสริมของเราเชื่อมต่อกับ Excel แต่จะไม่เชื่อมต่อ 'ไม่มีฟังก์ชันใดๆยัง. หากต้องการเพิ่ม UDF ใหม่ ให้เปิด Visual Basic Editor โดยกด Alt + F11 จากนั้น คุณสามารถเพิ่มโมดูลใหม่ด้วยรหัส VBA ตามที่อธิบายไว้ในบทช่วยสอนสร้าง UDFs ของฉัน

    เลือกไฟล์ส่วนเสริมของคุณ ( My_Finctions.xlam ) ใน หน้าต่าง VBAProject ใช้เมนู แทรก - โมดูล เพื่อเพิ่มโมดูลที่กำหนดเอง คุณต้องเขียนฟังก์ชันแบบกำหนดเองลงไป

    คุณสามารถพิมพ์โค้ดของฟังก์ชันที่ผู้ใช้กำหนดด้วยตนเองหรือคัดลอกจากที่ใดที่หนึ่ง

    นั่นคือทั้งหมด ตอนนี้คุณได้สร้าง Add-in ของคุณเอง เพิ่มลงใน Excel และคุณสามารถใช้ UDF ในนั้นได้ หากคุณต้องการใช้ UDF มากขึ้น เพียงเขียนโค้ดในโมดูล Add-in ในตัวแก้ไข VBA แล้วบันทึก

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

    Michael Brown เป็นผู้ที่ชื่นชอบเทคโนโลยีโดยเฉพาะและมีความหลงใหลในการทำให้กระบวนการที่ซับซ้อนง่ายขึ้นโดยใช้เครื่องมือซอฟต์แวร์ ด้วยประสบการณ์กว่าทศวรรษในอุตสาหกรรมเทคโนโลยี เขาได้ฝึกฝนทักษะของเขาใน Microsoft Excel และ Outlook รวมถึง Google ชีตและเอกสาร บล็อกของ Michael ทุ่มเทให้กับการแบ่งปันความรู้และความเชี่ยวชาญของเขากับผู้อื่น โดยให้คำแนะนำและแบบฝึกหัดที่ทำตามได้ง่ายเพื่อปรับปรุงผลิตภาพและประสิทธิภาพ ไม่ว่าคุณจะเป็นมืออาชีพที่ช่ำชองหรือมือใหม่ บล็อกของ Michael นำเสนอข้อมูลเชิงลึกอันมีค่าและคำแนะนำที่เป็นประโยชน์สำหรับการใช้ประโยชน์สูงสุดจากเครื่องมือซอฟต์แวร์ที่จำเป็นเหล่านี้