جدول المحتويات
نحن نواصل سلسلة البرامج التعليمية حول الوظائف التي يحددها المستخدم. في مقالاتنا السابقة ، تعرفنا على الوظائف المخصصة وتعلمنا كيفية إنشائها واستخدامها. في هذا الدليل سوف ننظر في تفاصيل استخدام هذه الوظائف ونرى الاختلافات بين وحدات ماكرو UDFs و VBA.
في هذا البرنامج التعليمي ، سنتعلم ما يلي:
نأمل أن تعزز هذه المقالة معرفتك بـ UDF وتساعدك على استخدامها بشكل أكثر فاعلية في مصنفات Excel.
هل UDF و Macro هما نفس الشيء؟
كل من الوظائف المعرفة من قبل المستخدم و VBA يتم إنشاء وحدات الماكرو باستخدام محرر VBA. ما هو الفرق بينهما وما الذي يجب تفضيله؟
الفرق الأكثر أهمية هو أن الوظيفة تقوم بالحساب ، ويقوم الماكرو ببعض الإجراءات. يجب كتابة وظيفة يحددها المستخدم ، مثل وظيفة Excel العادية ، في خلية. كنتيجة لتنفيذه ، ترجع الخلية بعض القيمة. في الوقت نفسه ، من المستحيل تغيير قيم الخلايا الأخرى ، وكذلك بعض خصائص الخلية الحالية (على وجه الخصوص ، التنسيق). ومع ذلك ، يمكنك استخدام دالة مخصصة في صيغ التنسيق الشرطي. يعمل الماكرو
UDF و VBA بطرق مختلفة. على سبيل المثال ، عند إنشاء UDF في محرر Visual Basic ، تبدأ بعبارة Function وتنتهي بـ End Function . عند تسجيل ماكرو ، تبدأ بملحقالعبارة Sub وتنتهي بـ End Sub.
لا يمكن استخدام جميع عوامل تشغيل Visual Basic لإنشاء UDFs. لهذا السبب ، يعد الماكرو حلاً أكثر تنوعًا.
لا يتطلب الماكرو من المستخدم تمرير أي وسيطات (ولا يمكنه قبول أي وسيطات) ، بخلاف الوظيفة المحددة من قِبل المستخدم.
النقطة هي أن بعض أوامر وحدات الماكرو يمكن أن تستخدم عناوين الخلية أو عناصر التنسيق (على سبيل المثال ، اللون). إذا قمت بنقل الخلايا أو إضافة صفوف وأعمدة أو إزالتها ، أو تغيير تنسيق الخلايا ، فيمكنك بسهولة "كسر" وحدات الماكرو. هذا ممكن بشكل خاص إذا قمت بمشاركة ملفك مع زملاء لا يعرفون كيفية عمل وحدات الماكرو الخاصة بك.
على سبيل المثال ، لديك ملف به ماكرو يعمل بشكل مثالي. تحسب هذه الصيغة النسبة المئوية للخلية A1 إلى A4. يقوم الماكرو بتغيير لون هذه الخلايا إلى اللون الأصفر. يتم تعيين تنسيق النسبة المئوية في الخلية النشطة.
إذا قررت أنت أو أي شخص آخر إدراج صف جديد ، فسيستمر الماكرو في البحث عن القيمة في الخلية A4 ( المعلمة 4،1 في UDF الخاص بك) ، فشل وإرجاع خطأ:
في هذه الحالة ، حدث الخطأ بسبب القسمة على صفر (لا توجد قيمة في عنصر مضاف حديثًا صف). في حالة تنفيذ الماكرو ، دعنا نقول ، التجميع ، ستحصل ببساطة على نتيجة خاطئة. لكنك لن تعرف ذلك.
على عكس وحدات الماكرو ، لا يمكن للوظائف التي يحددها المستخدم أن تسبب مثل هذا الموقف غير السار.
أدناه ترى أداءنفس الحسابات باستخدام UDF. هنا يمكنك تحديد خلايا الإدخال في أي مكان في ورقة العمل ولن تواجه أي مشكلات غير متوقعة عند تغييرها.
كتبت الصيغة التالية في C3:
=UDF_vs_Macro(A1,A4)
ثم أدخلت صفًا فارغًا ، وتغيرت الصيغة كما ترى في لقطة الشاشة أعلاه.
الآن يمكننا نقل خلية إدخال أو خلية بها وظيفة في أي مكان. ستكون النتيجة صحيحة دائمًا.
فائدة إضافية لاستخدام UDFs هي أنها يتم تحديثها تلقائيًا عندما تتغير القيمة في خلية الإدخال. عند استخدام وحدات الماكرو ، يجب عليك دائمًا التأكد من أن جميع البيانات محدثة.
مع مراعاة هذا المثال ، أفضل استخدام UDF حيثما أمكن واستخدام وحدات الماكرو فقط للأنشطة الأخرى غير الحسابية.
قيود ومساوئ استخدام UDF
لقد ذكرت بالفعل مزايا UDF أعلاه. قصة قصيرة طويلة ، يمكنه إجراء حسابات غير ممكنة باستخدام وظائف Excel القياسية. بالإضافة إلى ذلك ، يمكنه حفظ واستخدام الصيغ الطويلة والمعقدة ، وتحويلها إلى وظيفة واحدة. ولن تضطر إلى كتابة صيغ معقدة مرارًا وتكرارًا.
الآن دعنا نتحدث بمزيد من التفاصيل حول عيوب UDF:
- يتطلب إنشاء UDF استخدام VBA. لا توجد طريقة للتغلب عليها. هذا يعني أنه لا يمكن للمستخدم تسجيل UDF بنفس طريقة ماكرو Excel. يجب عليك إنشاء UDF بنفسك. ومع ذلك ، يمكنك نسخ وقم بلصق أجزاء من كود الماكرو المسجل مسبقًا في وظيفتك. تحتاج فقط إلى أن تكون على دراية بحدود الوظائف المخصصة.
- عيب آخر لـ UDF هو أنه مثل أي وظيفة Excel أخرى يمكنها فقط إرجاع قيمة واحدة أو مجموعة من القيم في خلية. إنه ببساطة يقوم بإجراء العمليات الحسابية ، لا أكثر.
- إذا كنت ترغب في مشاركة المصنف الخاص بك مع زملائك ، فتأكد من حفظ UDFs في نفس الملف. وإلا ، فلن تعمل وظائفك المخصصة معهم.
- تكون الوظائف المخصصة التي تم إنشاؤها باستخدام محرر VBA أبطأ من الوظائف العادية. هذا ملحوظ بشكل خاص في الطاولات الكبيرة. لسوء الحظ ، تعد VBA لغة برمجة بطيئة للغاية حتى الآن. لذلك ، إذا كان لديك الكثير من البيانات ، فحاول استخدام الوظائف القياسية كلما أمكن ذلك ، أو قم بإنشاء UDFs باستخدام وظيفة LAMBDA.
حدود الوظيفة المخصصة:
- UDFs هي مصمم لأداء العمليات الحسابية وإرجاع قيمة. لا يمكن استخدامها بدلاً من وحدات الماكرو.
- لا يمكنها تغيير محتويات أي خلايا أخرى (الخلية النشطة فقط).
- يجب أن تتبع أسماء الوظائف قواعد معينة. على سبيل المثال ، لا يمكنك استخدام اسم يطابق اسم دالة Excel أصلي أو عنوان خلية ، مثل AB123.
- لا يمكن أن تحتوي وظيفتك المخصصة على مسافات في الاسم ، ولكن يمكن أن تتضمن حرف التسطير السفلي. ومع ذلك ، فإن الطريقة المفضلة هي استخدام الأحرف الكبيرة في بداية كل جديدword (على سبيل المثال ، GetMaxBetween).
- لا يمكن لـ UDF نسخ الخلايا ولصقها في مناطق أخرى من ورقة العمل.
- لا يمكنهم تغيير ورقة العمل النشطة.
- UDFs can ' ر تغيير التنسيق في الخلية النشطة. إذا كنت تريد تغيير تنسيق خلية عند عرض قيم مختلفة ، فيجب استخدام التنسيق الشرطي.
- لا يمكنهم فتح كتب إضافية.
- لا يمكن استخدامها لتشغيل وحدات الماكرو باستخدام Application. .
- لا يمكن إنشاء وظيفة معرفة من قبل المستخدم باستخدام مسجل الماكرو.
- لا تظهر الوظائف في Developer & gt؛ مربع حوار وحدات الماكرو .
- ستظهر وظائفك في مربع الحوار ( إدراج & gt ؛ الوظيفة ) وفي قائمة الوظائف فقط إذا تم الإعلان عنها على أنها عامة (هذا هو الإعداد الافتراضي ، ما لم يُذكر خلاف ذلك).
- لن تظهر أي وظائف تم الإعلان عنها على أنها خاصة في قائمة الميزات.
عملية بطيئة للغاية ، بالإضافة إلى بعض القيود قيد الاستخدام ، قد تجعلك تفكر: "ما فائدة هذه الوظائف المخصصة؟"
يمكن أن تكون مفيدة ، ونفعلها إذا كنا مدركين للقيود المفروضة عليها. إذا تعلمت كيفية إنشاء واستخدام UDF بشكل صحيح ، يمكنك كتابة مكتبة الوظائف الخاصة بك. سيؤدي هذا إلى زيادة قدرتك على العمل مع البيانات في Excel بشكل كبير.
بالنسبة لي ، تعد الوظائف المخصصة موفرة للوقت بشكل كبير. وماذا عنك؟ هل حاولت بالفعل إنشاء UDF الخاص بك؟ هل أحببتهاأفضل من وظائف Excel الأساسية؟ دعونا نناقش ذلك في التعليقات :)