فهرست مطالب
امروز ما به بررسی توابع سفارشی اکسل ادامه خواهیم داد. همانطور که قبلاً می دانید که چگونه UDF ایجاد کنید (و امیدوارم استفاده از آنها را در اکسل خود نیز امتحان کرده باشید)، بیایید کمی عمیق تر بگردیم و یاد بگیریم که چگونه از توابع تعریف شده توسط کاربر در اکسل استفاده و ذخیره کنیم.
علاوه بر این، ما به شما نشان خواهیم داد که چگونه به راحتی توابع خود را در یک فایل افزودنی اکسل ذخیره کنید تا بعداً با چند کلیک از آنها استفاده کنید>
روش های مختلف استفاده از UDF در اکسل
استفاده از UDF در کاربرگ ها
پس از اینکه مطمئن شدید که UDF های شما به درستی کار می کنند، می توانید از آنها در اکسل استفاده کنید. فرمول ها یا در کد VBA.
شما می توانید توابع سفارشی را در یک کتاب کار اکسل به همان روشی که از توابع معمولی استفاده می کنید اعمال کنید. برای مثال، فقط فرمول زیر را در یک سلول بنویسید:
= 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)، Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row - 1، ActiveCell.Column)) حداکثر = GetMaxBetween(.Cells،50) = 1 Application.Match(maxcase, .Cells, 0) .Cells(i).Interior.Color = vbRed End With End Subکد ماکرو حاوی تابع سفارشی است
GetMaxBetween(.Cells, 10, 50)
It حداکثر مقدار را در ستون فعال پیدا می کند. سپس این مقدار برجسته می شود. میتوانید نتیجه ماکرو را در تصویر زیر مشاهده کنید.
یک تابع سفارشی همچنین میتواند در یک تابع سفارشی دیگر استفاده شود. قبلاً در وبلاگ خود، به مشکل تبدیل یک عدد به متن با استفاده از تابع سفارشی به نام SpellNumber نگاه کردیم.
با کمک آن میتوانیم حداکثر مقدار را از محدوده و بلافاصله دریافت کنیم. آن را به صورت متن بنویسید.
برای این کار، یک تابع سفارشی جدید ایجاد خواهیم کرد که در آن از توابع استفاده خواهیم کرد. GetMaxBetween و SpellNumber که قبلاً برای ما آشنا هستند.
تابع SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxCBetween,Minr) تابعهمانطور که می بینید، تابع GetMaxBetween یک آرگومان برای یک تابع سفارشی دیگر، SpellNumber است. همانطور که قبلاً بارها انجام داده ایم، حداکثر مقدار را تعیین می کند. سپس این عدد به متن تبدیل میشود.
در تصویر بالا، میتوانید ببینید که چگونه تابع SpellGetMaxBetween حداکثر عدد بین 100 و 500 را پیدا میکند و سپس آن را به متن تبدیل می کند.
فراخوانی UDF از کتاب های دیگر
اگر UDF را در کتاب کار خود ایجاد کرده اید، متأسفانه این بدان معنا نیست که اصلاً با مشکلی مواجه نخواهید شد.
طبق تجربه من، اکثر کاربران دیر یا زود مجموعه شخصی خود را از ماکروها و توابع سفارشی ایجاد می کنند تا فرآیندها و محاسبات فردی را خودکار کنند. و در اینجا مشکل ایجاد می شود - کد توابع تعریف شده توسط کاربر در ویژوال بیسیک باید در جایی ذخیره شود تا بعداً در کار استفاده شود.
برای اعمال تابع سفارشی، کتاب کاری که در آن ذخیره کرده اید باید باز باشد. در اکسل شما اگر اینطور نیست، #NAME را دریافت خواهید کرد! خطا هنگام تلاش برای استفاده از آن این خطا نشان میدهد که اکسل نام تابعی را که میخواهید در فرمول استفاده کنید نمیداند.
بیایید نگاهی به راههای موجود بیندازیم.که می توانید از توابع سفارشی که ایجاد می کنید استفاده کنید.
روش 1. نام کتاب کار را به تابع اضافه کنید
می توانید نام کتاب کاری را که در آن قرار دارد قبل از نام آن مشخص کنید. عملکرد. به عنوان مثال، اگر یک تابع سفارشی GetMaxBetween() را در کتاب کاری با نام My_Functions.xlsm ذخیره کرده اید، باید فرمول زیر را وارد کنید:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
روش 2. همه UDFها را در یک فایل مشترک ذخیره کنید
همه توابع سفارشی را در یک کتاب کار ویژه ذخیره کنید (به عنوان مثال My_Functions.xlsm ) و تابع مورد نظر را از آن در آن کپی کنید. کتاب کار فعلی، در صورت لزوم.
هر بار که یک تابع سفارشی جدید ایجاد می کنید، باید کد آن را در کتاب کاری که در آن استفاده خواهید کرد، کپی کنید. با این روش، ممکن است مشکلات متعددی پیش بیاید:
- اگر فایل های کاری زیادی وجود دارد، و تابع در همه جا مورد نیاز است، پس کد باید در هر کتاب کپی شود.
- به یاد داشته باشید که کتاب کار را در قالبی با قابلیت ماکرو (xlsm. یا .xlsb.) ذخیره کنید.
- هنگام باز کردن چنین فایلی، حفاظت در برابر ماکروها هر بار یک هشدار نمایش داده می شود که باید تأیید شود. بسیاری از کاربران با دیدن یک هشدار نوار زرد که از آنها می خواهد ماکروها را فعال کنند، می ترسند. برای جلوگیری از مشاهده این پیام، باید حفاظت اکسل را به طور کامل غیرفعال کنید. با این حال، این ممکن است همیشه درست و ایمن نباشد.
فکر میکنم شما با من موافق هستید که همیشه یکفایل و کپی کردن کد توابع تعریف شده توسط کاربر از آن یا نوشتن نام این فایل در فرمول بهترین راه حل نیست. بنابراین، ما به راه سوم رسیدیم.
روش 3. ایجاد یک فایل افزودنی اکسل
من فکر می کنم بهترین راه این است که توابع سفارشی پرکاربرد را در یک فایل الحاقی اکسل ذخیره کنیم. . مزایای استفاده از افزونه:
- شما باید افزونه را فقط یک بار به اکسل متصل کنید. پس از آن، می توانید از رویه ها و عملکردهای آن در هر فایلی در این رایانه استفاده کنید. نیازی نیست کتابهای کاری خود را با فرمتهای xlsm. و xlsb. ذخیره کنید، زیرا کد منبع در آنها ذخیره نمیشود، بلکه در فایل افزودنی ذخیره میشود.
- از حفاظت ماکروها دیگر اذیت نخواهید شد. افزونه ها همیشه به منابع قابل اعتماد مراجعه می کنند.
- یک افزونه یک فایل جداگانه است. انتقال آن از رایانه به رایانه برای به اشتراک گذاشتن آن با همکاران آسان است.
در ادامه بیشتر در مورد ایجاد و استفاده از افزونه صحبت خواهیم کرد.
استفاده از افزونه- ins برای ذخیره توابع سفارشی
چگونه افزونه خود را ایجاد کنم؟ بیایید این فرآیند را گام به گام طی کنیم.
مرحله 1. فایل افزودنی را ایجاد کنید
Microsoft Excel را باز کنید، یک Workbook جدید ایجاد کنید و آن را تحت هر نام مناسبی ذخیره کنید (به عنوان مثال، My_Functions) در قالب افزودنی. برای این کار از منوی File - Save As یا کلید F12 استفاده کنید. حتما نوع فایل را مشخص کنید Excel Add-in :
افزونه شما دارای پسوند xlam. خواهد بود.
نکته. لطفا توجه داشته باشید کهبه طور پیشفرض اکسل افزونهها را در پوشه C:\Users\[Your_Name]\AppData\Roaming\Microsoft\AddIns ذخیره میکند. توصیه می کنم مکان پیش فرض را بپذیرید. در صورت تمایل، می توانید هر پوشه دیگری را مشخص کنید. اما پس از آن، هنگام اتصال افزونه، باید مکان جدید آن را به صورت دستی پیدا کرده و مشخص کنید. اگر آن را در پوشه پیش فرض ذخیره کنید، لازم نیست به دنبال افزونه در رایانه خود بگردید. اکسل به طور خودکار آن را فهرست می کند.
مرحله 2. فایل افزونه را وصل کنید
اکنون افزونه ای که ایجاد کرده ایم باید به اکسل متصل شود. سپس با شروع برنامه به طور خودکار بارگذاری می شود. برای انجام این کار، از منوی File - Options - Add-Ins استفاده کنید. مطمئن شوید که Excel Add-Ins در قسمت Manage انتخاب شده است. روی دکمه Go در پایین پنجره کلیک کنید. در پنجره ظاهر شده، افزونه My_Functions را علامت بزنید. اگر آن را در لیست نمیبینید، روی دکمه مرور کلیک کنید و به محل فایل افزودنی خود بروید.
اگر میخواهید از یک افزونه برای ذخیره توابع سفارشی استفاده می کنید، یک قانون ساده وجود دارد که باید دنبال کنید. اگر کتاب کار را به افراد دیگری انتقال میدهید، حتماً یک نسخه از افزونه را که حاوی عملکرد مورد نظر شما است نیز انتقال دهید. آنها باید آن را به همان روشی که شما اکنون انجام دادید متصل کنند.
مرحله 3. توابع و ماکروهای سفارشی را به افزونه اضافه کنید
افزونه ما به اکسل متصل است، اما این کار را انجام نمی دهد. هیچ عملکردی ندارندهنوز. برای افزودن UDF های جدید به آن، ویرایشگر ویژوال بیسیک را با فشار دادن Alt + F11 باز کنید. سپس میتوانید ماژولهای جدیدی را با کد VBA اضافه کنید همانطور که در آموزش ایجاد UDF من توضیح داده شد.
فایل افزودنی خود را انتخاب کنید ( My_Fincions.xlam ) در پنجره VBAProject از منوی Insert - Module برای افزودن یک ماژول سفارشی استفاده کنید. باید توابع سفارشی را در آن بنویسید.
شما می توانید کد یک تابع تعریف شده توسط کاربر را به صورت دستی تایپ کنید یا آن را از جایی کپی کنید.
همین. اکنون افزونه خود را ایجاد کرده اید، آن را به اکسل اضافه کرده اید و می توانید از UDF در آن استفاده کنید. اگر می خواهید از UDF های بیشتری استفاده کنید، فقط کد را در ماژول افزودنی در ویرایشگر VBA بنویسید و آن را ذخیره کنید.
این برای امروز است. ما یاد گرفته ایم که چگونه از توابع تعریف شده توسط کاربر در کتاب کار شما استفاده کنیم. ما واقعا امیدواریم که این دستورالعمل ها برای شما مفید باشد. اگر سوالی دارید، در نظرات این مقاله بنویسید.