Բովանդակություն
Մենք շարունակում ենք օգտատերերի կողմից սահմանված գործառույթների վերաբերյալ ձեռնարկների շարքը: Մեր նախորդ հոդվածներում մենք ծանոթացանք մաքսային գործառույթներին և սովորեցինք դրանք ստեղծել և օգտագործել։ Այս ձեռնարկում մենք կդիտարկենք այս գործառույթների օգտագործման առանձնահատկությունները և կտեսնենք UDF-ների և VBA մակրոների միջև եղած տարբերությունները:
Այս ձեռնարկում մենք կսովորենք հետևյալը.
Հուսով ենք, որ այս հոդվածը կխթանի ձեր գիտելիքները UDF-ի մասին և կօգնի ձեզ ավելի արդյունավետ օգտագործել դրանք ձեր Excel-ի աշխատանքային գրքույկներում:
UDF-ն և Macro-ն նույնն են:
Եվ օգտագործողի կողմից սահմանված գործառույթները, և VBA-ն: մակրոները ստեղծվում են VBA խմբագրիչի միջոցով: Ո՞րն է դրանց տարբերությունը և ինչի՞ն տալ նախապատվությունը:
Ամենակարևոր տարբերությունն այն է, որ ֆունկցիան կատարում է հաշվարկը, իսկ մակրոն՝ որոշակի գործողություն: Օգտագործողի կողմից սահմանված գործառույթը, ինչպես սովորական Excel ֆունկցիան, պետք է գրված լինի բջիջում: Իր կատարման արդյունքում բջիջը վերադարձնում է որոշակի արժեք։ Միևնույն ժամանակ, անհնար է փոխել այլ բջիջների արժեքները, ինչպես նաև ընթացիկ բջիջի որոշ հատկություններ (մասնավորապես, ձևաչափում): Այնուամենայնիվ, դուք կարող եք օգտագործել հատուկ գործառույթ պայմանական ձևաչափման բանաձևերում:
UDF և VBA մակրոները աշխատում են տարբեր ձևերով: Օրինակ, երբ դուք ստեղծում եք UDF Visual Basic Editor-ում, դուք սկսում եք Function հայտարարությամբ և ավարտում End Function : Երբ դուք մակրո ձայնագրում եք, սկսում եք aհայտարարություն Sub և ավարտվում է End Sub-ով:
Ոչ բոլոր Visual Basic օպերատորները կարող են օգտագործվել UDF-ներ ստեղծելու համար: Այդ իսկ պատճառով մակրոն ավելի բազմակողմանի լուծում է:
Մակրոն չի պահանջում օգտվողից որևէ արգումենտ փոխանցել (այն չի կարող ընդունել որևէ արգումենտ), ի տարբերություն օգտագործողի կողմից սահմանված ֆունկցիայի:
Բանն այն է, որ մակրոների որոշ հրամաններ կարող են օգտագործել բջջային հասցեներ կամ ֆորմատավորման տարրեր (օրինակ՝ գույն): Եթե տեղափոխում եք բջիջներ, ավելացնում կամ հեռացնում եք տողեր և սյունակներ, փոխում եք բջիջների ձևաչափը, ապա հեշտությամբ կարող եք «կոտրել» ձեր մակրոները։ Սա հատկապես հնարավոր է, եթե դուք կիսում եք ձեր ֆայլը գործընկերների հետ, ովքեր չգիտեն, թե ինչպես են աշխատում ձեր մակրոները:
Օրինակ, դուք ունեք հիանալի աշխատող մակրո ֆայլ: Այս բանաձևը հաշվարկում է A1-ից A4 բջիջների տոկոսը: Մակրոն փոխում է այս բջիջների գույնը դեղին: Ակտիվ բջիջում դրված է տոկոսային ձևաչափ:
Եթե դուք կամ մեկ ուրիշը որոշեք տեղադրել նոր տող, մակրոն կշարունակի որոնել արժեքը A4 բջիջում ( ձեր UDF-ի 4,1 պարամետրը), ձախողեք և վերադարձրեք սխալ.
Այս դեպքում սխալը տեղի է ունեցել զրոյի բաժանման պատճառով (նոր ավելացվածի մեջ արժեք չկա: շարք): Եթե մակրոն կատարի, ասենք, գումարում, ապա դուք պարզապես սխալ արդյունք կստանաք։ Բայց դուք դրա մասին չեք իմանա:
Ի տարբերություն մակրոների, օգտատիրոջ կողմից սահմանված գործառույթները չեն կարող նման տհաճ իրավիճակ առաջացնել:
Ստորև տեսնում եք կատարողականը.նույն հաշվարկները՝ օգտագործելով UDF: Այստեղ դուք կարող եք նշել մուտքային բջիջները աշխատաթերթի ցանկացած կետում, և այն փոխելու ժամանակ չեք հանդիպի որևէ անսպասելի խնդրի:
Ես գրել եմ հետևյալ բանաձևը C3-ում.
=UDF_vs_Macro(A1,A4)
Այնուհետև ես տեղադրեցի դատարկ տող, և բանաձևը փոխվեց, ինչպես տեսնում եք վերևի սքրինշոթում:
Այժմ մենք կարող ենք ցանկացած տեղ տեղափոխել մուտքային բջիջ կամ ֆունկցիա ունեցող բջիջ: Արդյունքը միշտ ճիշտ կլինի:
UDF-ների օգտագործման լրացուցիչ առավելությունն այն է, որ դրանք ավտոմատ կերպով թարմացվում են, երբ մուտքային բջիջի արժեքը փոխվում է: Մակրոներ օգտագործելիս դուք միշտ պետք է համոզվեք, որ բոլոր տվյալները թարմացված են:
Հիշելով այս օրինակը, ես կնախընտրեի օգտագործել UDF-ները, որտեղ հնարավոր է, և օգտագործել մակրոները միայն այլ ոչ հաշվարկային գործողությունների համար:
UDF-ի օգտագործման սահմանափակումներն ու թերությունները
Վերևում արդեն նշել եմ UDF-ի առավելությունները: Կարճ ասած, այն կարող է կատարել այնպիսի հաշվարկներ, որոնք հնարավոր չեն ստանդարտ Excel գործառույթներով: Բացի այդ, այն կարող է պահպանել և օգտագործել երկար ու բարդ բանաձևեր՝ դրանք վերածելով մեկ ֆունկցիայի: Եվ դուք ստիպված չեք լինի նորից ու նորից գրել բարդ բանաձևեր:
Այժմ եկեք ավելի մանրամասն խոսենք UDF-ի թերությունների մասին.
- UDF-ների ստեղծումը պահանջում է VBA-ի օգտագործում: Շրջապատելու ճանապարհ չկա: Սա նշանակում է, որ օգտվողը չի կարող գրանցել UDF-ն այնպես, ինչպես Excel մակրո: Դուք ինքներդ պետք է ստեղծեք UDF-ն: Այնուամենայնիվ, դուք կարող եք պատճենել ևտեղադրեք նախկինում գրանցված մակրո կոդի մասերը ձեր ֆունկցիայի մեջ: Պարզապես պետք է տեղյակ լինեք հատուկ գործառույթների սահմանափակումներին:
- UDF-ի մեկ այլ թերություն այն է, որ ինչպես ցանկացած այլ Excel ֆունկցիա, այն կարող է բջիջ վերադարձնել միայն մեկ արժեք կամ արժեքների զանգված: Այն պարզապես կատարում է հաշվարկներ, ոչ ավելին:
- Եթե ցանկանում եք ձեր աշխատանքային գրքույկը կիսել ձեր գործընկերների հետ, անպայման պահեք ձեր UDF-ները նույն ֆայլում: Հակառակ դեպքում, ձեր հատուկ գործառույթները չեն աշխատի նրանց համար:
- VBA խմբագրիչով ստեղծված հատուկ գործառույթներն ավելի դանդաղ են, քան սովորական գործառույթները: Սա հատկապես նկատելի է մեծ սեղաններում։ Ցավոք, VBA-ն առայժմ շատ դանդաղ ծրագրավորման լեզու է: Հետևաբար, եթե շատ տվյալներ ունեք, հնարավորության դեպքում փորձեք օգտագործել ստանդարտ գործառույթներ կամ ստեղծել UDF-ներ՝ օգտագործելով LAMBDA ֆունկցիան:
Պատվիրված գործառույթների սահմանափակումները. նախատեսված է հաշվարկներ կատարելու և արժեք վերադարձնելու համար: Դրանք չեն կարող օգտագործվել մակրոների փոխարեն:
Բավականին դանդաղ գործողություն: , ինչպես նաև օգտագործման որոշ սահմանափակումները կարող են ձեզ ստիպել մտածել. «Ի՞նչ օգուտ ունեն այս հատուկ գործառույթները»:
Դրանք կարող են օգտակար լինել և անել, եթե մենք նկատի ունենանք դրանց վրա դրված սահմանափակումները: Եթե դուք սովորեք, թե ինչպես ճիշտ ստեղծել և օգտագործել UDF-ներ, կարող եք գրել ձեր գործառույթների գրադարանը: Սա մեծապես կընդլայնի Excel-ում տվյալների հետ աշխատելու ձեր ունակությունը:
Ինչ վերաբերում է ինձ, հատուկ գործառույթները հիանալի ժամանակ են խնայում: Եւ քո մասին ինչ կասես? Արդեն փորձե՞լ եք ստեղծել ձեր սեփական UDF-ը: Դու հավանեցիր դաավելի լավ, քան Excel-ի հիմնական գործառույթները: Եկեք քննարկենք մեկնաբանություններում :)