Mündəricat
Bu dərslikdə biz çoxlu sözləri, sətirləri və ya fərdi simvolları tapmaq və əvəz etmək üçün bir neçə üsula baxacağıq, beləliklə ehtiyaclarınıza ən uyğun olanı seçə bilərsiniz.
İnsanlar adətən Excel-də necə axtarış aparırlar? Əsasən, Find & Tək dəyərlər üçün yaxşı işləyən funksiyanı dəyişdirin. Bəs əvəz etmək üçün onlarla, hətta yüzlərlə əşyanız varsa nə olacaq? Şübhəsiz ki, heç kim bütün bu dəyişdirmələri əl ilə tək-tək etmək istəməz və sonra məlumatlar dəyişdikdə bunu yenidən etmək olmaz. Xoşbəxtlikdən, Excel-də kütləvi əvəzetmənin bir neçə daha təsirli üsulu var və biz onların hər birini ətraflı araşdıracağıq.
Birdən çox dəyəri tapın və iç-içə SUBSTITUTE ilə əvəz edin
Excel-də çoxlu qeydləri tapmaq və əvəz etməyin ən asan yolu Əvəz etmə funksiyasından istifadə etməkdir.
Düsturun məntiqi çox sadədir: siz köhnə dəyəri yenisi ilə əvəz etmək üçün bir neçə fərdi funksiya yazırsınız. . Və sonra siz bu funksiyaları bir-birinə yerləşdirirsiniz ki, hər bir sonrakı ƏVƏZİNƏ növbəti dəyəri axtarmaq üçün əvvəlki ƏVƏZİNƏNİN çıxışından istifadə etsin. köhnə_mətn1 , yeni_mətn1 ), köhnə_mətn2 , yeni_mətn2 ), köhnə_mətn3 , yeni_mətn3 )
A2:A10-dakı yerlər siyahısında, qısaldılmış ölkə adlarını (məsələn, FR , UK və USA ) tam ilə əvəz etmək istədiyinizi düşünək. MassReplace funksiyası yalnız kodu daxil etdiyiniz iş kitabında işləyəcək. Bunu necə düzgün edəcəyinizə əmin deyilsinizsə, lütfən, Excel-də VBA kodunu necə daxil etmək olar bölməsində təsvir olunan addımları yerinə yetirin.
Kod iş kitabınıza əlavə edildikdən sonra funksiya intellisense formulunda görünəcək - yalnız arqumentlər deyil, funksiyanın adı! Bununla belə, mən hesab edirəm ki, sintaksisi yadda saxlamaq o qədər də vacib deyil:
MassReplace(input_range, find_range, replace_range)Harda:
- Giriş_aralığı - burada mənbə diapazonu siz dəyərləri əvəz etmək istəyirsiniz.
- Tap_aralığı - axtarmaq üçün simvollar, sətirlər və ya sözlər.
- Əvəz_aralığı - simvollar, sətirlər, və ya əvəz ediləcək sözlər.
Excel 365-də dinamik massivlərin dəstəyinə görə, bu, yalnız yuxarı xanaya (B2) daxil edilməli olan normal düstur kimi işləyir:
=MassReplace(A2:A10, D2:D4, E2:E4)
Pre-dinamik Excel-də bu, köhnə tipli CSE massiv düsturu kimi işləyir: siz bütün mənbə diapazonunu seçirsiniz (B2:B10), daxil edin düsturunu seçin və onu tamamlamaq üçün Ctrl + Shift + Enter düymələrini eyni vaxtda basın.
Üstünlüklər : Excel 2019-da fərdi LAMBDA funksiyasına layiqli alternativ , Excel 2016 və əvvəlki versiyalar
Mühüm cəhətlər : iş kitabı makro-aktiv .xlsm faylı kimi saxlanmalıdır
Excel-də toplu şəkildə VBA makrosu ilə əvəz
Avtomobili sevirsinizsə makrolarla ümumi vəzifələri cütləşdirmək, sonra sizdiapazonda birdən çox dəyərləri tapmaq və əvəz etmək üçün aşağıdakı VBA kodundan istifadə edə bilər.
Sub BulkReplace() Dim Rng diapazon kimi, SourceRng kimi diapazon kimi, ReplaceRng kimi diapazon kimi Xətada davam edir Sonrakı Set SourceRng = Application.InputBox( "Mənbə məlumatı: " , "Toplu Dəyişdir" , Tətbiq.Seçim.Ünvan, Növ :=8) Səhv. Təmizləmə Mənbə heç bir şey deyilsə, ReplaceRng = Tətbiq.Giriş qutusunu təyin edin ("Aralığı dəyişdirin:" , "Toplu dəyişdirin" , Növ:=8) Xəta.Clear Əvəz etməzsə, heç bir şey deyildir, onda Application.ScreenUpdating = ReplaceRng.Columns(1).Cells SourceRng-də Hər Rng Üçün Yanlış. Nəyi dəyişdirin:=Rng.Value, əvəz:=Rng.Offset(0, 1).Dəyər Sonrakı Application.ScreenUpdating = True End If End If End SubMakrodan dərhal istifadə etmək üçün kodu ehtiva edən nümunə iş dəftərimizi endirə bilərsiniz. Və ya kodu öz iş dəftərinizə daxil edə bilərsiniz.
Makrodan necə istifadə etməli
Makronu işə salmazdan əvvəl köhnə və yeni dəyərləri aşağıdakı şəkildə göstərildiyi kimi iki bitişik sütuna yazın ( C2:D4).
Sonra mənbə məlumatlarınızı seçin, Alt + F8 düymələrini basın, Toplu Dəyişdir makrosunu seçin və Çalışdır üzərinə klikləyin.
mənbə qəzəbi əvvəlcədən seçildiyi üçün sadəcə istinadı yoxlayın və OK düyməsini basın:
Bundan sonra, əvəz et seçin və OK düyməsini basın:
Bitti!
Üstünlüklər : bir dəfə quraşdırmaq, istənilən vaxt yenidən istifadə etmək
Qətiyyətlər : makro hər bir məlumatla işlədilməlidirdəyişiklik
Alt sətir aləti ilə Excel-də çoxlu tapın və əvəz edin
Birinci misalda qeyd etdim ki, iç içə ƏVƏZƏT Excel-də çoxlu dəyərləri əvəz etməyin ən asan yoludur. Səhv etdiyimi etiraf edirəm. Ultimate Suite-imiz işləri daha da asanlaşdırır!
İş vərəqinizdə kütləvi şəkildə dəyişdirmək üçün Ablebits Data tabına keçin və Alt Sətir Alətləri > klikləyin. Alt sətirləri dəyişdirin .
Alt sətirləri dəyişdirin dialoq qutusu görünəcək və sizdən Mənbə diapazonunu və <1-i təyin etməyi xahiş edəcək>Alt sətirlər diapazonu.
İki diapazon seçilmiş halda, Əvəz et düyməsini klikləyin və nəticələri sağa daxil edilmiş yeni sütunda tapın orijinal məlumatlardan. Bəli, bu qədər asandır!
İpucu. Əvəz et düyməsinə klikləməzdən əvvəl nəzərə almalı olduğunuz bir vacib məsələ var - Hərf-həssas qutusu. Böyük və kiçik hərfləri fərqli simvollar kimi idarə etmək istəyirsinizsə, onu seçdiyinizə əmin olun. Bu nümunədə biz bu seçimi işarələyirik, çünki biz yalnız böyük hərflərlə yazılmış sətirləri əvəz etmək və "fr", "uk" və ya "ak" kimi alt sətirləri başqa sözlərlə toxunulmaz qoymaq istəyirik.
Əgər siz sətirlərdə hansı digər toplu əməliyyatların həyata keçirilə biləcəyini bilmək istəyirsinizsə, Ultimate Suite-ə daxil olan digər Substring Tools-a baxın. Və ya daha yaxşısı, aşağıdakı qiymətləndirmə versiyasını endirin və sınayın!
Bu, tapmaq və əvəz etmək üçün belədir.Excel-də birdən çox söz və simvol. Oxuduğunuz üçün sizə təşəkkür edirəm və sizi gələn həftə bloqumuzda görməyə ümid edirəm!
Mövcud endirmələr
Excel-də (.xlsm faylı) çoxlu tap və dəyişdir
Ultimate Suite 14 -günlük tam funksional versiya (.exe faylı)
adlar.Bunu yerinə yetirmək üçün aşağıdakı ekran görüntüsündə göstərildiyi kimi D2:D4-də köhnə dəyərləri və E2:E4-də yeni dəyərləri daxil edin. Sonra B2-yə aşağıdakı düsturu qoyun və Enter düyməsini basın:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)
…və bütün dəyişdirmələri bir anda yerinə yetirəcəksiniz:
Qeyd edək ki, yuxarıdakı yanaşma yalnız dinamik massivləri dəstəkləyən Excel 365 -da işləyir.
Excel 2019, Excel 2016 və əvvəlki versiyaların dinamikadan əvvəlki versiyalarında düstur belə olmalıdır ən yuxarıdakı xana (B2) üçün yazılır və sonra aşağıdakı xanalara kopyalanır:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)
Zəhmət olmasa, diqqət yetirin ki, bu halda əvəzedici dəyərləri mütləq xana istinadları ilə bağlayırıq, ona görə də düsturu aşağıya köçürərkən onlar yerdəyişməyəcək.
Qeyd. Əvəz etmə funksiyası hərflərə həssasdır , yəni köhnə dəyərləri ( köhnə_mətn ) orijinal məlumatda göründüyü kimi eyni hərf registrində yazmalısınız.
Nə qədər asan olsa da, bu metodun əhəmiyyətli çatışmazlığı var - əvəz etmək üçün onlarla elementiniz olduqda, iç-içə funksiyaları idarə etmək kifayət qədər çətinləşir.
Üstünlüklər : asan - həyata keçirmək; bütün Excel versiyalarında dəstəklənir
Mühüm cəhətlər : məhdud sayda dəyərləri tapmaq/dəyişdirmək üçün istifadə etmək daha yaxşıdır
XLOOKUP
<0 ilə çoxlu girişləri axtarın və əvəz edin>Bir hissəsini deyil, bütün xana məzmununu əvəz etmək istədiyiniz vəziyyətdə XLOOKUP funksiyası sizə kömək edir.GəlinA sütununda ölkələrin siyahısının olduğunu və bütün qısaltmaları müvafiq tam adlarla əvəz etməyi hədəflədiyinizi söyləyin. Əvvəlki misalda olduğu kimi, siz "Tap" və "Əvəz et" elementlərini ayrı-ayrı sütunlara (müvafiq olaraq D və E) daxil etməklə başlayırsınız və sonra B2-də bu düsturu daxil edin:
=XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)
Excel dilindən insan dilinə tərcümə edilən düsturun yerinə yetirdiyi budur:
D2:D4-də (axtarma_dəyəri) A2 dəyərini axtarın və E2:E4-dən (qaytarma_massivi) uyğunluğu qaytarın. Tapılmadıqda, orijinal dəyəri A2-dən çəkin.
Düsulu aşağıdakı xanalara kopyalamaq üçün doldurma sapına iki dəfə klikləyin və nəticə sizi gözlətməyəcək:
XLOOKUP funksiyası yalnız Excel 365-də mövcud olduğundan yuxarıdakı düstur əvvəlki versiyalarda işləməyəcək. Bununla belə, siz bu davranışı IFERROR və ya IFNA və VLOOKUP kombinasiyası ilə asanlıqla təqlid edə bilərsiniz:
=IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)
Qeyd. SUBSTITUTE-dan fərqli olaraq XLOOKUP və VLOOKUP funksiyaları həssas deyil , yəni hərf hərfinə məhəl qoymadan axtarış dəyərlərini axtarırlar. Məsələn, bizim düsturumuz həm FR , həm də fr ilə Fransa əvəz edəcək.
Üstünlüklər : adi funksiyaların qeyri-adi istifadəsi; bütün Excel versiyalarında işləyir
Mənfi cəhətlər : hüceyrə səviyyəsində işləyir, hüceyrə məzmununun bir hissəsini əvəz edə bilməz
Rekursiv LAMBDA funksiyasından istifadə edərək çoxlu əvəzləmə
Microsoft üçün365 abunəçi, Excel ənənəvi formula dilindən istifadə edərək fərdi funksiyalar yaratmağa imkan verən xüsusi funksiya təqdim edir. Bəli, mən LAMBDA haqqında danışıram. Bu metodun gözəlliyi ondan ibarətdir ki, o, çox uzun və mürəkkəb formulları çox yığcam və sadə düstura çevirə bilir. Bundan əlavə, o, Excel-də mövcud olmayan öz funksiyalarınızı yaratmağa imkan verir, bu, əvvəllər yalnız VBA ilə mümkün idi.
Fərdi LAMBDA funksiyalarının yaradılması və istifadəsi haqqında ətraflı məlumat üçün lütfən, bu təlimata baxın: Necə Excel-də LAMBDA funksiyalarını yazmaq. Burada biz bir neçə praktik nümunəni müzakirə edəcəyik.
Üstünlüklər : nəticə əvəzedici cütlərin sayından asılı olmayaraq zərif və istifadəsi heyrətamiz dərəcədə sadə funksiyadır
Mühüm cəhətlər : yalnız Excel 365-də mövcuddur; iş kitabına xasdır və müxtəlif iş kitablarında təkrar istifadə oluna bilməz
Nümunə 1. Eyni anda birdən çox söz/sətir axtarın və dəyişdirin
Birdən çox söz və ya mətni bir anda əvəz etmək üçün biz fərdi proqram yaratdıq MultiReplace adlı LAMBDA funksiyası, bu formalardan birini ala bilər:
=LAMBDA(text, old, new, IF(old"", MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0)), text))
Vəya
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))))
Hər ikisi rekursivdir özlərini çağıran funksiyalar. Fərq yalnız çıxış nöqtəsinin necə qurulduğundadır.
Birinci düsturda IF funksiyası köhnə siyahısının boş (köhnə"") olub olmadığını yoxlayır. Əgər TRUE olarsa, MultiReplace funksiyası çağırılır. FALSE, funksiya mətn cari formasını qaytarır və çıxış edir.
İkinci düstur tərs məntiqdən istifadə edir: əgər köhnə boşdursa (köhnə=""), onda <1-i qaytarın>mətn və çıxın; əks halda MultiReplace -ə zəng edin.
Ən çətin hissə başa çatdı! Sizə qalan aşağıdakı ekran görüntüsündə göstərildiyi kimi Ad Menecerində MultiReplace funksiyasını adlandırmaqdır. Ətraflı təlimatlar üçün lütfən, LAMBDA funksiyasını necə adlandırmaq olar bölməsinə baxın.
Funksiya ad aldıqdan sonra siz onu hər hansı digər daxili funksiya kimi istifadə edə bilərsiniz.
Son istifadəçi nöqteyi-nəzərindən seçdiyiniz iki formula variantından hansını seçsəniz, sintaksis bu qədər sadədir:
MultiReplace(mətn, köhnə, yeni)Burada:
- Mətn - mənbə verilənləri
- Köhnə - tapmaq üçün dəyərlər
- Yeni - ilə əvəz ediləcək dəyərlər
Əvvəlki nümunəni bir qədər irəli apararaq, təkcə ölkə abbreviaturalarını deyil, dövlət abbreviaturalarını da əvəz edək. Bunun üçün D2-dən başlayan D sütununda abbreviaturaları ( köhnə dəyərlər) və E2-dən başlayan E sütununda tam adları ( yeni dəyərlər) yazın.
İçində. B2, MultiReplace funksiyasını daxil edin:
=MultiReplace(A2:A10, D2, E2)
Enter düyməsini basın və nəticələrdən həzz alın :)
Bu formula necə işləyir
Düsulu başa düşməyin ipucu rekursiyanı başa düşməkdir. Bu mürəkkəb görünə bilər, amma prinsip olduqca sadədir. Hər biri iləiterasiya zamanı rekursiv funksiya daha böyük problemin kiçik bir nümunəsini həll edir. Bizim vəziyyətimizdə MultiReplace funksiyası köhnə və yeni dəyərlər arasında dövrə vurur və hər dövrə ilə bir əvəz yerinə yetirir:
MultiReplace (SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))
İç içə ƏVƏZİNƏ funksiyalarında olduğu kimi, əvvəlki ƏVƏZİNƏNİN nəticəsi növbəti ƏVƏZƏT üçün mətn parametrinə çevrilir. Başqa sözlə, MultiReplace -nin hər bir sonrakı çağırışında Əvəz etmə funksiyası orijinal mətn sətirini deyil, əvvəlki zəngin çıxışını emal edir.
<1-dəki bütün elementləri idarə etmək üçün>köhnə siyahısı, biz ən yuxarıdakı xana ilə başlayırıq və hər qarşılıqlı əlaqə ilə 1 cərgə aşağı hərəkət etmək üçün OFFSET funksiyasından istifadə edirik:
OFFSET(old, 1, 0)
Eyni şey üçün də edilir. new list:
OFFSET(new, 1, 0)
Əsas odur ki, rekursiv zənglərin əbədi davam etməsinin qarşısını almaq üçün çıxış nöqtəsi təmin olunsun. Bu IF funksiyasının köməyi ilə edilir - əgər köhnə xana boşdursa, funksiya mətn onu indiki formasını qaytarır və çıxış edir:
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(…)))
və ya
=LAMBDA(text, old, new, IF(old"", MultiReplace(…), text))
Nümunə 2. Excel-də çoxlu simvolları dəyişdirin
Prinsipcə, əvvəlki nümunədə müzakirə olunan MultiReplace funksiyası hər bir köhnə və yeni simvol yuxarıdakı skrinşotlardakı qısaldılmış və tam adlar kimi ayrıca xanaya daxil edilməsi şərtilə fərdi simvolları da idarə edin.
Əgər köhnə simvolu daxil etmək istərdinizsə.bir xanadakı simvolları və digər xanadakı yeni simvolları daxil edin və ya onları birbaşa düsturda yazın, sonra bu düsturlardan birini istifadə edərək ReplaceChars adlı başqa fərdi funksiya yarada bilərsiniz:
=LAMBDA(text, old_chars, new_chars, IF(old_chars"", ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1)), text))
Vəya
=LAMBDA(text, old_chars, new_chars, IF(old_chars="", text, ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))))
Ad Menecerində həmişəki kimi yeni Lambda funksiyanızı adlandırmağı unutmayın:
Və yeni fərdi funksiyanız istifadəyə hazırdır:
ReplaceChars(mətn, köhnə_simvol, yeni_xarakter)Burada:
- Mətn - orijinal sətirlər
- Köhnə - axtarılacaq simvollar
- Yeni - ilə əvəz olunacaq simvollar
Bir sahə testi vermək üçün, tez-tez idxal edilmiş məlumatlarda yerinə yetirilən bir şey edək - ağıllı sitatları və ağıllı apostrofları düz sitatlar və düz apostroflarla əvəz edin.
Birincisi, biz D2-də ağıllı sitatlar və ağıllı apostrofları, E2-də düz sitatlar və düz apostrofu daxil edirik. , daha yaxşı oxunaqlılıq üçün simvolları boşluqlarla ayırın. (Hər iki xanada eyni ayırıcıdan istifadə etdiyimiz üçün bunun nəticəyə heç bir təsiri olmayacaq - Excel sadəcə boşluğu boşluqla əvəz edəcək.)
Bundan sonra B2-də bu düsturu daxil edirik:
=ReplaceChars(A2:A4, D2, E2)
Və tam olaraq axtardığımız nəticələri əldə edin:
Düsturda simvolları birbaşa yazmaq da mümkündür. Bizim vəziyyətimizdə düz sitatları belə "dublikat etməyi" unutmayın:
=ReplaceChars(A2:A4, "“ ” ’", """ "" '")
Bu düstur necə işləyir
ReplaceChars funksiya old_chars və new_chars sətirləri arasında dövr edir və soldakı birinci simvoldan başlayaraq hər dəfə bir əvəz edir. Bu hissə Əvəz etmə funksiyası ilə yerinə yetirilir:
SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars))
Hər iterasiya ilə RIGHT funksiyası həm köhnə_simvollar , həm də simvollarının solundan bir simvolu silir. new_chars sətirləri, beləliklə SOL əvəz üçün növbəti simvol cütünü əldə edə bilsin:
ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))
Hər rekursiv çağırışdan əvvəl IF funksiyası old_chars sətirini qiymətləndirir . Boş deyilsə, funksiya özünü çağırır. Sonuncu simvol dəyişdirilən kimi iterasiya prosesi başa çatır, düstur mətn onu indiki formasını qaytarır və çıxır.
Qeyd. Əsas düsturlarımızda istifadə edilən ƏVƏZİNƏ funksiyası hərf-həssas olduğundan, hər iki Lambda ( MultiReplace və ReplaceChars ) böyük və kiçik hərfləri fərqli simvol kimi qəbul edir.
Kütləvi tapın və UDF ilə əvəz edin
LAMBDA funksiyası Excel-də mövcud olmadıqda, VBA-dan istifadə edərək ənənəvi şəkildə çoxlu əvəzləmə üçün istifadəçi tərəfindən müəyyən edilmiş funksiya yaza bilərsiniz.
UDF-ni LAMBDA tərəfindən təyin olunan MultiReplace funksiyasından fərqləndirmək üçün biz onu fərqli adlandıracağıq, deyin ki, MassReplace . Funksiya kodu aşağıdakı kimidir:
Funksiya MassReplace(InputRng As Range, FindRng As Range, ReplaceRng As Range, ReplaceRng As Range) As Variant () DimarRes() Nəticələri saxlamaq üçün Variant 'massivi olaraq Dim arSearchReplace(), sTmp As String 'tap/dəyişdirmə cütlərinin saxlanacağı massiv, müvəqqəti sətir Dim iFindCurRow, cntFindRows As Long 'SearchReplace massivinin cari sırasının indeksi, sayın sətirlərin Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long 'mənbə diapazonunda cari cərgənin indeksi, mənbə diapazonunda cari sütunun indeksi, satırların sayı, sütunların sayı cntInputRows = InputRng.Rows.Count = InputRng.Rows.Count cntInputRng .Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes(1-dən cntInputRows, 1-dən cntInputCols) ReDim arSearchReplace(1-dən cntFindRows, 1-dən 2) 'tap/dəyişdirmə cütləri massivinin hazırlanması iFindarCurR üçün =Sea1CurR iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Value arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Next 'Mənbə diapazonunda axtarış və dəyişdirmə iInputRC =iInputC TowR üçün =InputC TowR üçün 1 cntInputCols sTm p = InputRng.Cells(iInputCurRow, iInputCurCol).Value 'Hər bir xanada bütün tapmaq/dəyişdirmə cütlərinin dəyişdirilməsi iFindCurRow üçün = 1 cntFindRows-a sTmp = Replace(sTmp, arSearchReplace(iFindCurRow, iFindCurRow, iInputCurCol),(iFindCurRow, iInputCurCol)Replace)Replace (iInputCurRow, iInputCurCol) = sTmp Next Next MassReplace = arRes End FunctionLAMBDA ilə müəyyən edilmiş funksiyalar kimi, UDF-lər də iş kitabı miqyasında olur. Bu o deməkdir ki