Talaan ng nilalaman
Ipinagpapatuloy namin ang serye ng mga tutorial tungkol sa mga function na tinukoy ng user. Sa aming mga nakaraang artikulo, nakilala namin ang mga custom na function at natutunan namin kung paano lumikha at gamitin ang mga ito. Sa manual na ito, titingnan natin ang mga detalye ng paggamit ng mga function na ito at makikita ang mga pagkakaiba sa pagitan ng mga UDF at VBA macro.
Sa tutorial na ito, malalaman natin ang sumusunod:
Umaasa kaming mapapalakas ng artikulong ito ang iyong kaalaman sa UDF at tulungan kang gamitin ang mga ito nang mas epektibo sa iyong mga workbook sa Excel.
Iisa ba ang UDF at Macro?
Parehong mga function na tinukoy ng user at VBA Ang mga macro ay nilikha gamit ang VBA editor. Ano ang pagkakaiba sa pagitan ng mga ito at kung ano ang dapat bigyan ng kagustuhan?
Ang pinakamahalagang pagkakaiba ay ang function ay gumaganap ng pagkalkula, at ang macro ay gumaganap ng ilang aksyon. Ang isang function na tinukoy ng gumagamit, tulad ng isang regular na function ng Excel, ay dapat na nakasulat sa isang cell. Bilang resulta ng pagpapatupad nito, ang cell ay nagbabalik ng ilang halaga. Kasabay nito, imposibleng baguhin ang mga halaga ng iba pang mga cell, pati na rin ang ilang mga katangian ng kasalukuyang cell (sa partikular, pag-format). Gayunpaman, maaari kang gumamit ng custom na function sa mga conditional formatting formula.
Gumagana ang UDF at VBA macro sa iba't ibang paraan. Halimbawa, kapag gumawa ka ng UDF sa Visual Basic Editor, magsisimula ka sa isang statement na Function at magtatapos sa End Function . Kapag nag-record ka ng macro, magsisimula ka sa astatement Sub at nagtatapos sa isang End Sub.
Hindi lahat ng Visual Basic operator ay maaaring gamitin upang lumikha ng mga UDF. Para sa kadahilanang ito, ang isang macro ay isang mas maraming nalalaman na solusyon.
Ang isang macro ay hindi nangangailangan ng user na magpasa ng anumang mga argumento (at hindi rin ito maaaring tumanggap ng anumang mga argumento), hindi tulad ng isang function na tinukoy ng user.
Ang punto ay ang ilang mga command ng macro ay maaaring gumamit ng mga cell address o mga elemento ng pag-format (halimbawa, kulay). Kung ililipat mo ang mga cell, magdagdag o mag-alis ng mga row at column, baguhin ang format ng mga cell, pagkatapos ay madali mong "masira" ang iyong mga macro. Posible ito lalo na kung ibabahagi mo ang iyong file sa mga kasamahan na hindi alam kung paano gumagana ang iyong mga macro.
Halimbawa, mayroon kang file na may perpektong gumaganang macro. Kinakalkula ng formula na ito ang porsyento ng cell A1 hanggang A4. Binabago ng macro ang kulay ng mga cell na ito sa dilaw. Nakatakda ang isang porsyentong format sa aktibong cell.
Kung ikaw o ang ibang tao ay nagpasya na magpasok ng bagong row, ang macro ay patuloy na naghahanap ng halaga sa A4 cell ( ang 4,1 na parameter sa iyong UDF), nabigo at nagbalik ng error:
Sa kasong ito, naganap ang error dahil sa paghahati sa zero (walang halaga sa isang bagong idinagdag hilera). Kung sakaling gumanap ang macro, sabihin nating, summation, pagkatapos ay makakakuha ka lamang ng isang maling resulta. Ngunit hindi mo malalaman ang tungkol dito.
Kabaligtaran sa mga macro, ang mga function na tinukoy ng user ay hindi maaaring magdulot ng ganitong hindi kasiya-siyang sitwasyon.
Sa ibaba mo makikita ang pagganap ngang parehong mga kalkulasyon gamit ang isang UDF. Dito maaari mong tukuyin ang mga input cell saanman sa worksheet at hindi ka makakaharap ng anumang hindi inaasahang isyu kapag binago ito.
Isinulat ko ang sumusunod na formula sa C3:
=UDF_vs_Macro(A1,A4)
Pagkatapos ay naglagay ako ng blangkong row, at nagbago ang formula gaya ng nakikita mo sa screenshot sa itaas.
Ngayon ay maaari na nating ilipat ang isang input cell o isang cell na may function kahit saan. Ang resulta ay palaging tama.
Ang isang karagdagang benepisyo ng paggamit ng mga UDF ay ang mga ito ay awtomatikong nag-a-update kapag ang halaga sa input cell ay nagbago. Kapag gumagamit ng mga macro, dapat mong palaging tiyakin na ang lahat ng data ay napapanahon.
Isinasaisip ang halimbawang ito, mas gugustuhin kong gumamit ng mga UDF hangga't maaari at gumamit lamang ng mga macro para sa iba pang aktibidad na hindi kalkulasyon.
Mga limitasyon at disadvantages ng paggamit ng UDF
Nabanggit ko na ang mga pakinabang ng UDF sa itaas. Sa maikling kuwento, maaari itong magsagawa ng mga kalkulasyon na hindi posible sa mga karaniwang function ng Excel. Bilang karagdagan, maaari itong mag-save at gumamit ng mahaba at kumplikadong mga formula, na ginagawang isang solong function. At hindi mo na kailangang magsulat ng mga kumplikadong formula nang paulit-ulit.
Ngayon pag-usapan natin nang mas detalyado ang tungkol sa mga pagkukulang ng UDF:
- Ang paggawa ng mga UDF ay nangangailangan ng paggamit ng VBA. Walang paraan sa paligid nito. Nangangahulugan ito na hindi maitala ng user ang UDF sa parehong paraan tulad ng isang Excel macro. Kailangan mong gumawa ng UDF sa iyong sarili. Gayunpaman, maaari mong kopyahin ati-paste ang mga bahagi ng dating naitala na macro code sa iyong function. Kailangan mo lang malaman ang mga limitasyon ng mga custom na function.
- Ang isa pang disbentaha ng UDF ay tulad ng ibang Excel function na maaari lamang itong magbalik ng isang value o array ng mga value sa isang cell. Nagsasagawa lamang ito ng mga kalkulasyon, wala nang iba pa.
- Kung gusto mong ibahagi ang iyong workbook sa iyong mga kasamahan, tiyaking i-save ang iyong mga UDF sa parehong file. Kung hindi, hindi gagana ang iyong mga custom na function para sa kanila.
- Ang mga custom na function na ginawa gamit ang VBA editor ay mas mabagal kaysa sa mga regular na function. Ito ay lalong kapansin-pansin sa malalaking mesa. Sa kasamaang palad, ang VBA ay isang napakabagal na programming language sa ngayon. Samakatuwid, kung marami kang data, subukang gumamit ng mga karaniwang function hangga't maaari, o lumikha ng mga UDF gamit ang LAMBDA function.
Mga Limitasyon sa Custom na Function:
- Ang mga UDF ay idinisenyo upang magsagawa ng mga kalkulasyon at magbalik ng isang halaga. Hindi maaaring gamitin ang mga ito bilang kapalit ng mga macro.
- Hindi nila mababago ang mga nilalaman ng anumang iba pang mga cell (ang aktibong cell lamang).
- Dapat sumunod ang mga pangalan ng function sa ilang partikular na panuntunan. Halimbawa, hindi ka maaaring gumamit ng pangalan na tumutugma sa isang native na Excel function name o isang cell address, gaya ng AB123.
- Ang iyong custom na function ay hindi maaaring maglaman ng mga puwang sa pangalan, ngunit maaari itong isama ang underscore na character. Gayunpaman, ang gustong paraan ay ang paggamit ng malalaking titik sa simula ng bawat bagosalita (halimbawa, GetMaxBetween).
- Hindi maaaring kopyahin at i-paste ng isang UDF ang mga cell sa iba pang bahagi ng worksheet.
- Hindi nila maaaring baguhin ang aktibong worksheet.
- Maaaring ang mga UDF' t baguhin ang pag-format sa aktibong cell. Kung gusto mong baguhin ang pag-format ng isang cell kapag nagpapakita ng iba't ibang mga halaga, dapat kang gumamit ng kondisyong pag-format.
- Hindi sila makakapagbukas ng mga karagdagang aklat.
- Hindi sila magagamit upang magpatakbo ng mga macro gamit ang Application.OnTime .
- Ang isang function na tinukoy ng user ay hindi maaaring gawin gamit ang macro recorder.
- Hindi lumalabas ang mga function sa Developer > Macros dialog.
- Lalabas ang iyong mga function sa dialog box ( Ipasok > Function ) at sa listahan ng mga function lamang kung idineklara ang mga ito bilang Pampubliko (ito ang default, maliban kung iba ang nabanggit).
- Anumang mga function na idineklara bilang Pribado ay hindi lalabas sa listahan ng tampok.
Medyo mabagal na operasyon , pati na rin ang ilang mga paghihigpit na ginagamit, ay maaaring mag-isip sa iyo na: "Ano ang gamit ng mga custom na function na ito?"
Maaari silang magamit, at gawin kung iniisip natin ang mga hadlang na ipinataw sa kanila. Kung matutunan mo kung paano gumawa at gumamit ng mga UDF nang maayos, maaari mong isulat ang iyong library ng mga function. Lubos nitong mapapalawak ang iyong kakayahang magtrabaho kasama ang data sa Excel.
Para sa akin, ang mga custom na function ay mahusay na nakakatipid sa oras. At ikaw naman? Nasubukan mo na bang gumawa ng sarili mong UDF? Nagustuhan mo bamas mahusay kaysa sa mga pangunahing pag-andar ng Excel? Pag-usapan natin ito sa Comments :)