جدول المحتويات
سنواصل اليوم استكشاف وظائف Excel المخصصة. نظرًا لأنك تعرف بالفعل كيفية إنشاء UDFs (وآمل أن تكون قد حاولت أيضًا تطبيقها في Excel الخاص بك) ، فلنحفر أعمق قليلاً ونتعلم كيفية استخدام وتخزين الوظائف المعرفة من قبل المستخدم في Excel.
علاوة على ذلك ، سنوضح لك كيفية حفظ وظائفك بسهولة في ملف الوظيفة الإضافية لبرنامج Excel لاستخدامها لاحقًا بنقرات قليلة.
إذن ، هذا ما سنتحدث عنه:
طرق مختلفة لاستخدام UDF في Excel
استخدام UDFs في أوراق العمل
بمجرد التحقق من أن UDFs تعمل بشكل صحيح ، يمكنك استخدامها في 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
يمكن أيضًا استخدام UDFs في وحدات ماكرو 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)
It يجد القيمة القصوى في العمود النشط. سيتم إبراز هذه القيمة بعد ذلك. يمكنك رؤية نتيجة الماكرو في لقطة الشاشة أدناه.
يمكن أيضًا استخدام وظيفة مخصصة داخل وظيفة مخصصة أخرى. في وقت سابق من مدونتنا ، نظرنا في مشكلة تحويل رقم إلى نص باستخدام الوظيفة المخصصة المسماة SpellNumber .
بمساعدتها ، يمكننا الحصول على أقصى قيمة من النطاق وعلى الفور اكتبه كنص.
للقيام بذلك ، سننشئ وظيفة مخصصة جديدة سنستخدم فيها الوظائف GetMaxBetween و SpellNumber المألوفة لنا بالفعل.
الوظيفة SpellGetMaxBetween (rngCells As Range ، MinNum ، MaxNum) SpellGetMaxBetween = SpellNumber (GetMaxBetween (rngCells، MinNum، MaxNum)) النهاية الوظيفةكما ترى ، فإن الوظيفة GetMaxBetween هي وسيطة لوظيفة مخصصة أخرى ، SpellNumber . إنها تحدد القيمة القصوى ، كما فعلنا عدة مرات من قبل. ثم يتم تحويل هذا الرقم إلى نص.
في لقطة الشاشة أعلاه ، يمكنك أن ترى كيف تعثر الدالة SpellGetMaxBetween على الحد الأقصى للعدد بين 100 و 500 و ثم يحولها إلى نص.
استدعاء UDF من مصنفات أخرى
إذا قمت بإنشاء UDF في المصنف الخاص بك ، فهذا ، للأسف ، لا يعني أنك لن تواجه أي مشاكل على الإطلاق.
من واقع خبرتي ، يقوم معظم المستخدمين عاجلاً أم آجلاً بإنشاء مجموعتهم الشخصية من وحدات الماكرو والوظائف المخصصة لأتمتة العمليات والحسابات الفردية. وهنا تبرز المشكلة - يجب تخزين رمز الوظائف التي يحددها المستخدم في Visual Basic في مكان ما لاستخدامه لاحقًا في العمل.
لتطبيق الوظيفة المخصصة ، يجب أن يكون المصنف الذي قمت بحفظه فيه مفتوحًا في Excel الخاص بك. إذا لم يكن كذلك ، فستحصل على #NAME! خطأ عند محاولة استخدامه. يشير هذا الخطأ إلى أن Excel لا يعرف اسم الوظيفة التي تريد استخدامها في الصيغة.
دعونا نلقي نظرة على الطرق المستخدمة فييمكنك استخدام الوظائف المخصصة التي تقوم بإنشائها.
الطريقة الأولى. أضف اسم المصنف إلى الوظيفة
يمكنك تحديد اسم المصنف الذي يوجد فيه قبل اسم وظيفة. على سبيل المثال ، إذا قمت بحفظ دالة مخصصة GetMaxBetween () في مصنف باسم My_Functions.xlsm ، فيجب عليك إدخال الصيغة التالية:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
الطريقة الثانية. قم بتخزين جميع UDFs في ملف واحد مشترك
احفظ جميع الوظائف المخصصة في مصنف خاص واحد (على سبيل المثال ، My_Functions.xlsm ) وانسخ الوظيفة المطلوبة منها في المصنف الحالي ، إذا لزم الأمر.
في كل مرة تقوم فيها بإنشاء وظيفة مخصصة جديدة ، تحتاج إلى تكرار رمزها في المصنف الذي ستستخدمها فيه. مع هذه الطريقة ، قد تظهر العديد من المضايقات:
- إذا كان هناك الكثير من ملفات العمل ، وكانت الوظيفة مطلوبة في كل مكان ، فسيتعين نسخ الرمز في كل كتاب.
- تذكر حفظ المصنف بتنسيق ممكن بماكرو (.xlsm أو .xlsb).
- عند فتح مثل هذا الملف ، ستعرض الحماية ضد وحدات الماكرو تحذيرًا في كل مرة ، وهو أمر يجب تأكيده. يشعر العديد من المستخدمين بالخوف عندما يرون تحذيرًا بشريط أصفر يطلب منهم تمكين وحدات الماكرو. لتجنب رؤية هذه الرسالة ، تحتاج إلى تعطيل حماية Excel تمامًا. ومع ذلك ، قد لا يكون هذا دائمًا صحيحًا وآمنًا.
أعتقد أنك ستوافقني على أنه طوال الوقت يفتحملف ونسخ رمز الوظائف المعرفة من قبل المستخدم منه أو كتابة اسم هذا الملف في صيغة ليست الحل الأفضل. وهكذا ، وصلنا إلى الطريقة الثالثة.
الطريقة الثالثة. إنشاء ملف إضافي لبرنامج Excel
أعتقد أن أفضل طريقة هي تخزين الوظائف المخصصة المستخدمة بشكل متكرر في ملف Excel الإضافي . مزايا استخدام الوظيفة الإضافية:
- تحتاج إلى توصيل الوظيفة الإضافية بـ Excel مرة واحدة فقط. بعد ذلك ، يمكنك استخدام إجراءاته ووظائفه في أي ملف على هذا الكمبيوتر. لا تحتاج إلى حفظ المصنفات الخاصة بك بتنسيقات .xlsm و. xlsb حيث لن يتم تخزين التعليمات البرمجية المصدر فيها ولكن في ملف الوظيفة الإضافية.
- لن تزعجك حماية وحدات الماكرو بعد الآن لأنك تشير الوظائف الإضافية دائمًا إلى مصادر موثوقة.
- الوظيفة الإضافية هي ملف منفصل. من السهل نقلها من كمبيوتر إلى كمبيوتر ، لمشاركتها مع الزملاء.
سنتحدث أكثر عن إنشاء وظيفة إضافية واستخدامها لاحقًا.
استخدام add- الوظائف الإضافية لتخزين الوظائف المخصصة
كيف يمكنني إنشاء الوظيفة الإضافية الخاصة بي؟ دعنا ننتقل من خلال هذه العملية خطوة بخطوة.
الخطوة الأولى. قم بإنشاء ملف الوظيفة الإضافية
افتح Microsoft Excel ، وأنشئ مصنفًا جديدًا ، واحفظه تحت أي اسم مناسب (على سبيل المثال ، My_Functions) بتنسيق الوظيفة الإضافية. للقيام بذلك ، استخدم القائمة ملف - حفظ باسم أو المفتاح F12. تأكد من تحديد نوع الملف وظيفة Excel الإضافية :
سيكون للوظيفة الإضافية الامتداد .xlam.
نصيحة. يرجى ملاحظة ذلكبشكل افتراضي ، يقوم Excel بتخزين الوظائف الإضافية في المجلد C: \ Users \ [Your_Name] \ AppData \ Roaming \ Microsoft \ AddIns . أوصي بقبول الموقع الافتراضي. إذا كنت ترغب في ذلك ، يمكنك تحديد أي مجلد آخر. ولكن بعد ذلك ، عند توصيل الوظيفة الإضافية ، ستحتاج إلى البحث عن موقعها الجديد وتحديده يدويًا. إذا قمت بحفظها في المجلد الافتراضي ، فلن تضطر إلى البحث عن الوظيفة الإضافية على جهاز الكمبيوتر الخاص بك. سيقوم Excel بإدراجها تلقائيًا.
الخطوة 2. قم بتوصيل ملف الوظيفة الإضافية
الآن يجب توصيل الوظيفة الإضافية التي أنشأناها بـ Excel. ثم سيتم تحميله تلقائيًا عند بدء تشغيل البرنامج. للقيام بذلك ، استخدم القائمة ملف - خيارات - الوظائف الإضافية . تأكد من تحديد وظائف Excel الإضافية في الحقل إدارة . انقر فوق الزر انتقال أسفل النافذة. في النافذة التي تظهر ، ضع علامة على الوظيفة الإضافية My_Functions. إذا لم تره في القائمة ، فانقر فوق الزر تصفح واستعرض موقع ملف الوظيفة الإضافية.
إذا كنت تستخدم وظيفة إضافية لتخزين وظائف مخصصة ، هناك قاعدة بسيطة واحدة يجب اتباعها. إذا كنت تنقل المصنف إلى أشخاص آخرين ، فتأكد أيضًا من نقل نسخة من الوظيفة الإضافية التي تحتوي على الوظيفة التي تريدها. يجب أن يقوموا بتوصيله بنفس الطريقة التي قمت بها الآن.
الخطوة الثالثة. أضف وظائف ووحدات ماكرو مخصصة إلى الوظيفة الإضافية
وظيفتنا الإضافية متصلة بـ Excel ، لكنها لا ليس لديها أي وظائفحتى الآن. لإضافة UDFs جديدة إليه ، افتح محرر Visual Basic بالضغط على Alt + F11. ثم يمكنك إضافة وحدات نمطية جديدة برمز VBA كما هو موضح في البرنامج التعليمي الخاص بي لإنشاء UDFs.
حدد ملف الوظيفة الإضافية ( My_Finctions.xlam ) في نافذة VBAProject. استخدم القائمة إدراج - وحدة لإضافة وحدة مخصصة. تحتاج إلى كتابة وظائف مخصصة فيه.
يمكنك إما كتابة رمز وظيفة محددة بواسطة المستخدم يدويًا أو نسخها من مكان ما.
هذا كل شيء. لقد قمت الآن بإنشاء الوظيفة الإضافية الخاصة بك وإضافتها إلى Excel ويمكنك استخدام UDF فيها. إذا كنت ترغب في استخدام المزيد من UDFs ، فقط اكتب الكود في الوحدة الإضافية في محرر VBA واحفظه.
هذا كل شيء لليوم. لقد تعلمنا كيفية استخدام الوظائف المعرفة من قبل المستخدم في المصنف الخاص بك. نأمل حقًا أن تجد هذه الإرشادات مفيدة. إذا كان لديك أي أسئلة ، فاكتب في التعليقات على هذه المقالة.