Mündəricat
İstifadəçi tərəfindən müəyyən edilmiş funksiyalar haqqında dərsliklər silsiləsini davam etdiririk. Əvvəlki yazılarımızda biz fərdi funksiyalarla tanış olduq və onları necə yaratmağı və istifadə etməyi öyrəndik. Bu təlimatda biz bu funksiyalardan istifadənin xüsusiyyətlərinə baxacağıq və UDF-lər və VBA makroları arasındakı fərqləri görəcəyik.
Bu dərslikdə biz aşağıdakıları öyrənəcəyik:
Ümid edirik ki, bu məqalə UDF haqqında biliklərinizi artıracaq və onlardan Excel iş kitablarınızda daha səmərəli istifadə etməyə kömək edəcək.
UDF və Makro eyni şeydir?
Həm istifadəçi tərəfindən müəyyən edilmiş funksiyalar, həm də VBA makrolar VBA redaktorundan istifadə etməklə yaradılır. Onların fərqi nədir və nəyə üstünlük verilməlidir?
Ən mühüm fərq odur ki, funksiya hesablamağı, makro isə bəzi hərəkətləri yerinə yetirir. Adi Excel funksiyası kimi istifadəçi tərəfindən müəyyən edilmiş funksiya xanada yazılmalıdır. Onun icrası nəticəsində xana müəyyən dəyər qaytarır. Eyni zamanda, digər hüceyrələrin dəyərlərini, eləcə də cari xananın bəzi xüsusiyyətlərini (xüsusilə formatlaşdırma) dəyişdirmək mümkün deyil. Bununla belə, şərti formatlaşdırma düsturlarında xüsusi funksiyadan istifadə edə bilərsiniz.
UDF və VBA makrosu müxtəlif üsullarla işləyir. Məsələn, Visual Basic Redaktorunda UDF yaratdığınız zaman siz Function ifadəsi ilə başlayır və Son Function ilə bitirirsiniz. Bir makro qeyd edərkən, a ilə başlayırsınız Sub ifadəsi və Son Alt ilə bitir.
Bütün Visual Basic operatorları UDF yaratmaq üçün istifadə edilə bilməz. Bu səbəbdən makro daha çox yönlü həlldir.
Makro istifadəçi tərəfindən müəyyən edilmiş funksiyadan fərqli olaraq istifadəçidən heç bir arqument ötürməsini tələb etmir (hər hansı arqumentləri qəbul edə bilməz).
Məsələ ondadır ki, makroların bəzi əmrləri hüceyrə ünvanlarından və ya formatlama elementlərindən (məsələn, rəng) istifadə edə bilər. Hüceyrələri köçürsəniz, satır və sütunlar əlavə etsəniz və ya silsəniz, xanaların formatını dəyişdirsəniz, makrolarınızı asanlıqla "sındıra" bilərsiniz. Bu, xüsusən də faylınızı makrolarınızın necə işlədiyini bilməyən həmkarlarınızla paylaşdığınız halda mümkündür.
Məsələn, sizin mükəmməl işləyən makroya malik bir faylınız var. Bu düstur A1-dən A4-ə qədər xananın faizini hesablayır. Makro bu hüceyrələrin rəngini sarıya dəyişir. Faiz formatı aktiv xanada müəyyən edilir.
Əgər siz və ya başqası yeni sətir daxil etmək qərarına gəlsəniz, makro A4 xanasında dəyəri axtarmağa davam edəcək ( UDF-nizdəki 4,1 parametri), uğursuz olur və xəta qaytarır:
Bu halda xəta sıfıra bölündüyü üçün baş verib (yeni əlavə edilmiş parametrdə dəyər yoxdur) sıra). Əgər makro yerinə yetirirsə, deyək ki, toplama, onda siz sadəcə olaraq səhv nəticə əldə edəcəksiniz. Lakin siz bu barədə bilməyəcəksiniz.
Makrolardan fərqli olaraq, istifadəçi tərəfindən müəyyən edilmiş funksiyalar belə xoşagəlməz vəziyyətə səbəb ola bilməz.
Aşağıda bu funksiyanın performansını görürsünüz.UDF istifadə edərək eyni hesablamalar. Burada siz iş vərəqinin istənilən yerində giriş xanalarını təyin edə bilərsiniz və onu dəyişdirərkən heç bir gözlənilməz problemlə üzləşməyəcəksiniz.
C3-də aşağıdakı düsturu yazdım:
=UDF_vs_Macro(A1,A4)
Sonra boş cərgə daxil etdim və yuxarıdakı skrinşotda gördüyünüz kimi düstur dəyişdi.
İndi biz giriş xanasını və ya funksiyası olan xananı istənilən yerə köçürə bilərik. Nəticə həmişə düzgün olacaq.
UDF-lərdən istifadənin əlavə üstünlüyü ondan ibarətdir ki, giriş xanasındakı dəyər dəyişdikdə avtomatik yenilənir. Makroslardan istifadə edərkən, siz həmişə bütün məlumatların güncəl olduğundan əmin olmalısınız.
Bu nümunəni nəzərə alaraq, mən mümkün olan yerlərdə UDF-lərdən istifadə etməyi və makroları yalnız digər hesablanmayan fəaliyyətlər üçün istifadə etməyi üstün tuturam.
UDF-dən istifadənin məhdudiyyətləri və çatışmazlıqları
Yuxarıda UDF-nin üstünlüklərini qeyd etmişəm. Uzun sözün qısası, standart Excel funksiyaları ilə mümkün olmayan hesablamaları yerinə yetirə bilir. Bundan əlavə, uzun və mürəkkəb düsturları saxlaya və istifadə edə, onları vahid funksiyaya çevirə bilər. Və təkrar-təkrar mürəkkəb düsturlar yazmalı olmayacaqsınız.
İndi isə gəlin UDF-nin çatışmazlıqları haqqında daha ətraflı danışaq:
- UDF-lərin yaradılması VBA-nın istifadəsini tələb edir. Bunun ətrafında heç bir yol yoxdur. Bu o deməkdir ki, istifadəçi UDF-ni Excel makrosunda olduğu kimi qeyd edə bilməz. UDF-ni özünüz yaratmalısınız. Bununla belə, kopyalaya bilərsiniz vəəvvəllər qeydə alınmış makro kodun hissələrini funksiyanıza yapışdırın. Siz sadəcə olaraq fərdi funksiyaların məhdudiyyətlərindən xəbərdar olmalısınız.
- UDF-nin digər çatışmazlığı ondan ibarətdir ki, hər hansı digər Excel funksiyası kimi o, xanaya yalnız bir dəyər və ya dəyərlər massivi qaytara bilir. O, sadəcə hesablamaları yerinə yetirir, başqa heç nə yoxdur.
- İş dəftərinizi həmkarlarınızla bölüşmək istəyirsinizsə, UDF-lərinizi eyni faylda saxladığınızdan əmin olun. Əks halda, sizin fərdi funksiyalarınız onlar üçün işləməyəcək.
- VBA redaktoru ilə yaradılmış fərdi funksiyalar adi funksiyalardan daha yavaş işləyir. Bu, xüsusilə böyük masalarda nəzərə çarpır. Təəssüf ki, VBA indiyə qədər çox yavaş proqramlaşdırma dilidir. Buna görə də, çoxlu məlumatınız varsa, mümkün olduqda standart funksiyalardan istifadə etməyə çalışın və ya LAMBDA funksiyasından istifadə edərək UDF-lər yaradın.
Fərdi Funksiya Məhdudiyyətləri:
- UDF-lər hesablamalar aparmaq və dəyəri qaytarmaq üçün nəzərdə tutulmuşdur. Onlar makroların yerinə istifadə edilə bilməz.
- Onlar başqa xanaların məzmununu dəyişə bilməz (yalnız aktiv xana).
- Funksiya adları müəyyən qaydalara əməl etməlidir. Məsələn, siz AB123 kimi yerli Excel funksiya adına və ya xana ünvanına uyğun gələn addan istifadə edə bilməzsiniz.
- Fərdi funksiyanız adda boşluq ola bilməz, lakin o, alt xətt simvolunu ehtiva edə bilər. Bununla belə, üstünlük verilən üsul hər yeninin əvvəlində böyük hərflərdən istifadə etməkdirsöz (məsələn, GetMaxBetween).
- UDF xanaları iş vərəqinin digər sahələrinə köçürə və yapışdıra bilməz.
- Onlar aktiv iş vərəqini dəyişə bilməz.
- UDF-lər' t aktiv xanadakı formatı dəyişdirin. Fərqli dəyərləri göstərərkən xananın formatını dəyişmək istəyirsinizsə, şərti formatlaşdırmadan istifadə etməlisiniz.
- Onlar əlavə kitabları aça bilməz.
- Onlardan Application.OnTime istifadə edərək makroları işə salmaq üçün istifadə edilə bilməz. .
- İstifadəçi tərəfindən müəyyən edilmiş funksiya makro yazıcıdan istifadə etməklə yaradıla bilməz.
- Funksiyalar Developer > Makroslar dialoqu.
- Funksiyalarınız dialoq qutusunda ( Insert > Function ) və funksiyalar siyahısında yalnız İctimai<7 kimi elan edildikdə görünəcək> (əgər başqa cür qeyd olunmayıbsa, bu, defoltdur).
- Şəxsi kimi elan edilmiş hər hansı funksiyalar funksiyalar siyahısında görünməyəcək.
Yəni yavaş əməliyyat. , eləcə də istifadədə bəzi məhdudiyyətlər sizi düşünməyə vadar edə bilər: "Bu fərdi funksiyaların istifadəsi nədir?"
Onlar lazımlı ola bilər və əgər biz onlara qoyulan məhdudiyyətləri nəzərə alsaq, edə bilərik. UDF-ləri düzgün yaratmağı və istifadə etməyi öyrənsəniz, funksiyalar kitabxananızı yaza bilərsiniz. Bu, Excel-də verilənlərlə işləmək qabiliyyətinizi xeyli genişləndirəcək.
Mənə gəlincə, fərdi funksiyalar vaxta böyük qənaət edir. Bəs sən? Artıq öz UDF-nizi yaratmağa çalışmısınız? Bəyəndinizmi?əsas Excel funksiyalarından daha yaxşıdır? Gəlin bunu Şərhlərdə müzakirə edək :)