តារាងមាតិកា
យើងកំពុងបន្តការបង្រៀនជាបន្តបន្ទាប់អំពីមុខងារដែលបានកំណត់ដោយអ្នកប្រើប្រាស់។ នៅក្នុងអត្ថបទមុនរបស់យើង យើងបានស្គាល់មុខងារផ្ទាល់ខ្លួន និងរៀនពីរបៀបបង្កើត និងប្រើប្រាស់ពួកវា។ នៅក្នុងសៀវភៅណែនាំនេះ យើងនឹងពិនិត្យមើលលក្ខណៈជាក់លាក់នៃការប្រើប្រាស់មុខងារទាំងនេះ និងមើលភាពខុសគ្នារវាងម៉ាក្រូ UDF និង VBA។
នៅក្នុងមេរៀននេះ យើងនឹងសិក្សាដូចខាងក្រោម៖
យើងសង្ឃឹមថាអត្ថបទនេះនឹងបង្កើនចំនេះដឹងរបស់អ្នកអំពី UDF និងជួយអ្នកឱ្យប្រើពួកវាឱ្យកាន់តែមានប្រសិទ្ធភាពនៅក្នុងសៀវភៅការងារ Excel របស់អ្នក។
តើ UDF និងម៉ាក្រូដូចគ្នាដែរឬទេ?
មុខងារទាំងពីរដែលកំណត់ដោយអ្នកប្រើប្រាស់ និង VBA ម៉ាក្រូត្រូវបានបង្កើតដោយប្រើកម្មវិធីនិពន្ធ VBA ។ តើអ្វីជាភាពខុសគ្នារវាងពួកវា និងអ្វីដែលត្រូវផ្តល់ចំណូលចិត្ត?
ភាពខុសគ្នាដ៏សំខាន់បំផុតនោះគឺថាមុខងារអនុវត្តការគណនា ហើយម៉ាក្រូអនុវត្តសកម្មភាពមួយចំនួន។ មុខងារកំណត់ដោយអ្នកប្រើប្រាស់ ដូចជាមុខងារ Excel ធម្មតា ត្រូវតែសរសេរក្នុងក្រឡា។ ជាលទ្ធផលនៃការប្រតិបត្តិរបស់វា ក្រឡាត្រឡប់តម្លៃមួយចំនួន។ ក្នុងពេលជាមួយគ្នានេះ វាមិនអាចទៅរួចទេក្នុងការផ្លាស់ប្តូរតម្លៃនៃកោសិកាផ្សេងទៀត ក៏ដូចជាលក្ខណៈសម្បត្តិមួយចំនួននៃក្រឡាបច្ចុប្បន្ន (ជាពិសេសការធ្វើទ្រង់ទ្រាយ)។ ទោះយ៉ាងណាក៏ដោយ អ្នកអាចប្រើមុខងារផ្ទាល់ខ្លួននៅក្នុងរូបមន្តធ្វើទ្រង់ទ្រាយតាមលក្ខខណ្ឌ។
ម៉ាក្រូ UDF និង VBA ដំណើរការតាមរបៀបផ្សេងៗគ្នា។ ឧទាហរណ៍ នៅពេលអ្នកបង្កើត UDF នៅក្នុង Visual Basic Editor អ្នកចាប់ផ្តើមដោយពាក្យ Function ហើយបញ្ចប់ដោយ End Function ។ នៅពេលអ្នកកត់ត្រាម៉ាក្រូ អ្នកចាប់ផ្តើមជាមួយ astatement Sub និងបញ្ចប់ដោយ End Sub។
មិនមែនប្រតិបត្តិករ Visual Basic ទាំងអស់អាចប្រើដើម្បីបង្កើត UDFs បានទេ។ សម្រាប់ហេតុផលនេះ ម៉ាក្រូគឺជាដំណោះស្រាយដែលមានលក្ខណៈចម្រុះជាង។
ម៉ាក្រូមិនតម្រូវឱ្យអ្នកប្រើប្រាស់ឆ្លងកាត់អាគុយម៉ង់ណាមួយទេ (ក៏មិនអាចទទួលយកអាគុយម៉ង់ណាមួយបានដែរ) មិនដូចមុខងារកំណត់ដោយអ្នកប្រើប្រាស់នោះទេ។
ចំណុចគឺថាពាក្យបញ្ជាមួយចំនួននៃម៉ាក្រូអាចប្រើអាសយដ្ឋានក្រឡា ឬធាតុធ្វើទ្រង់ទ្រាយ (ឧទាហរណ៍ពណ៌)។ ប្រសិនបើអ្នកផ្លាស់ទីក្រឡា បន្ថែម ឬលុបជួរដេក និងជួរឈរ ផ្លាស់ប្តូរទ្រង់ទ្រាយក្រឡា នោះអ្នកអាច "បំបែក" ម៉ាក្រូរបស់អ្នកយ៉ាងងាយស្រួល។ វាអាចទៅរួចជាពិសេសប្រសិនបើអ្នកចែករំលែកឯកសាររបស់អ្នកជាមួយសហសេវិកដែលមិនដឹងថាម៉ាក្រូរបស់អ្នកដំណើរការយ៉ាងដូចម្តេច។
ឧទាហរណ៍ អ្នកមានឯកសារដែលមានម៉ាក្រូដំណើរការល្អឥតខ្ចោះ។ រូបមន្តនេះគណនាភាគរយនៃក្រឡា A1 ដល់ A4 ។ ម៉ាក្រូផ្លាស់ប្តូរពណ៌នៃកោសិកាទាំងនេះទៅជាពណ៌លឿង។ ទម្រង់ភាគរយត្រូវបានកំណត់នៅក្នុងក្រឡាសកម្ម។
ប្រសិនបើអ្នក ឬនរណាម្នាក់ផ្សេងទៀតសម្រេចចិត្តបញ្ចូលជួរថ្មី ម៉ាក្រូនឹងបន្តស្វែងរកតម្លៃក្នុងក្រឡា A4 ( ប៉ារ៉ាម៉ែត្រ 4.1 នៅក្នុង UDF របស់អ្នក) បរាជ័យ ហើយត្រឡប់កំហុសមួយ៖
ក្នុងករណីនេះ កំហុសបានកើតឡើងដោយសារការបែងចែកដោយសូន្យ (គ្មានតម្លៃនៅក្នុងធាតុដែលបានបន្ថែមថ្មី ជួរ) ។ ក្នុងករណីម៉ាក្រូដំណើរការ ចូរនិយាយថា ការបូកសរុប នោះអ្នកនឹងទទួលបានលទ្ធផលខុស។ ប៉ុន្តែអ្នកនឹងមិនដឹងអំពីវាទេ។
ផ្ទុយទៅនឹងម៉ាក្រូ មុខងារដែលបានកំណត់ដោយអ្នកប្រើប្រាស់មិនអាចបង្កឱ្យមានស្ថានភាពមិនល្អបែបនេះទេ។
ខាងក្រោមអ្នកឃើញដំណើរការរបស់ការគណនាដូចគ្នាដោយប្រើ UDF ។ នៅទីនេះអ្នកអាចបញ្ជាក់ក្រឡាបញ្ចូលនៅកន្លែងណាមួយក្នុងសន្លឹកកិច្ចការ ហើយអ្នកនឹងមិនប្រឈមមុខនឹងបញ្ហាដែលមិននឹកស្មានដល់នៅពេលផ្លាស់ប្តូរវា។
ខ្ញុំបានសរសេររូបមន្តខាងក្រោមនៅក្នុង C3៖
=UDF_vs_Macro(A1,A4)
បន្ទាប់មកខ្ញុំបានបញ្ចូលជួរដេកទទេ ហើយរូបមន្តបានផ្លាស់ប្ដូរដូចដែលអ្នកអាចមើលឃើញក្នុងរូបថតអេក្រង់ខាងលើ។
ឥឡូវនេះ យើងអាចផ្លាស់ទីក្រឡាបញ្ចូល ឬក្រឡាដែលមានមុខងារទៅគ្រប់ទីកន្លែង។ លទ្ធផលនឹងត្រឹមត្រូវជានិច្ច។
អត្ថប្រយោជន៍បន្ថែមនៃការប្រើប្រាស់ UDF គឺថាពួកវាធ្វើបច្ចុប្បន្នភាពដោយស្វ័យប្រវត្តិនៅពេលដែលតម្លៃនៅក្នុងក្រឡាបញ្ចូលផ្លាស់ប្តូរ។ នៅពេលប្រើម៉ាក្រូ អ្នកត្រូវតែធានាថាទិន្នន័យទាំងអស់គឺទាន់សម័យ។
ដោយចងចាំឧទាហរណ៍នេះ ខ្ញុំចង់ប្រើ UDFs នៅគ្រប់ទីកន្លែងដែលអាចធ្វើទៅបាន ហើយប្រើម៉ាក្រូសម្រាប់តែសកម្មភាពដែលមិនមែនជាការគណនាផ្សេងទៀត។
ដែនកំណត់ និងគុណវិបត្តិនៃការប្រើប្រាស់ UDF
ខ្ញុំបានរៀបរាប់អំពីគុណសម្បត្តិរបស់ UDF ខាងលើរួចហើយ។ រឿងខ្លី វាអាចអនុវត្តការគណនាដែលមិនអាចធ្វើទៅបានជាមួយនឹងមុខងារ Excel ស្តង់ដារ។ លើសពីនេះទៀត វាអាចរក្សាទុក និងប្រើប្រាស់រូបមន្តដ៏វែង និងស្មុគស្មាញ ដោយបង្វែរពួកវាទៅជាមុខងារតែមួយ។ ហើយអ្នកនឹងមិនចាំបាច់សរសេររូបមន្តស្មុគស្មាញម្តងហើយម្តងទៀតទេ។
ឥឡូវនេះសូមនិយាយលម្អិតបន្ថែមទៀតអំពីចំណុចខ្វះខាតរបស់ UDF៖
- ការបង្កើត UDFs ទាមទារការប្រើ VBA។ មិនមានផ្លូវជុំវិញវាទេ។ នេះមានន័យថាអ្នកប្រើប្រាស់មិនអាចកត់ត្រា UDF តាមរបៀបដូចគ្នានឹងម៉ាក្រូ Excel បានទេ។ អ្នកត្រូវតែបង្កើត UDF ដោយខ្លួនឯង។ ទោះយ៉ាងណាក៏ដោយអ្នកអាចចម្លងនិងបិទភ្ជាប់ផ្នែកនៃកូដម៉ាក្រូដែលបានកត់ត្រាពីមុនទៅក្នុងមុខងាររបស់អ្នក។ អ្នកគ្រាន់តែត្រូវដឹងពីដែនកំណត់នៃមុខងារផ្ទាល់ខ្លួន។
- គុណវិបត្តិមួយទៀតនៃ UDF គឺដូចជាមុខងារ Excel ផ្សេងទៀតដែរ វាអាចត្រឡប់តម្លៃតែមួយ ឬតម្លៃអារេទៅក្នុងក្រឡាមួយ។ វាដំណើរការការគណនាដោយសាមញ្ញ គ្មានអ្វីទៀតទេ។
- ប្រសិនបើអ្នកចង់ចែករំលែកសៀវភៅការងាររបស់អ្នកជាមួយសហការីរបស់អ្នក ត្រូវប្រាកដថារក្សាទុក UDF របស់អ្នកនៅក្នុងឯកសារតែមួយ។ បើមិនដូច្នោះទេ មុខងារផ្ទាល់ខ្លួនរបស់អ្នកនឹងមិនដំណើរការសម្រាប់ពួកវាទេ។
- មុខងារផ្ទាល់ខ្លួនដែលបានបង្កើតជាមួយកម្មវិធីនិពន្ធ VBA គឺយឺតជាងមុខងារធម្មតា។ នេះគួរឱ្យកត់សម្គាល់ជាពិសេសនៅក្នុងតារាងធំ។ ជាអកុសល VBA គឺជាភាសាសរសេរកម្មវិធីយឺតណាស់រហូតមកដល់ពេលនេះ។ ដូច្នេះ ប្រសិនបើអ្នកមានទិន្នន័យច្រើន សូមព្យាយាមប្រើមុខងារស្តង់ដារនៅពេលណាដែលអាចធ្វើទៅបាន ឬបង្កើត UDFs ដោយប្រើមុខងារ LAMBDA។
ដែនកំណត់មុខងារផ្ទាល់ខ្លួន៖
- UDFs គឺ រចនាឡើងដើម្បីអនុវត្តការគណនា និងត្រឡប់តម្លៃមួយ។ ពួកវាមិនអាចប្រើជំនួសម៉ាក្រូបានទេ។
- ពួកវាមិនអាចផ្លាស់ប្តូរមាតិកានៃក្រឡាផ្សេងទៀតបានទេ (មានតែក្រឡាសកម្ម)។
- ឈ្មោះមុខងារត្រូវតែអនុវត្តតាមច្បាប់ជាក់លាក់។ ឧទាហរណ៍ អ្នកមិនអាចប្រើឈ្មោះដែលត្រូវគ្នានឹងឈ្មោះមុខងារ Excel ដើម ឬអាសយដ្ឋានក្រឡាដូចជា AB123។
- មុខងារផ្ទាល់ខ្លួនរបស់អ្នកមិនអាចមានដកឃ្លានៅក្នុងឈ្មោះនោះទេ ប៉ុន្តែវាអាចរួមបញ្ចូលតួអក្សរគូសក្រោម។ ទោះជាយ៉ាងណាក៏ដោយ វិធីសាស្ត្រដែលពេញចិត្តគឺត្រូវប្រើអក្សរធំនៅដើមនៃថ្មីនីមួយៗword (ឧទាហរណ៍ GetMaxBetween)។
- UDF មិនអាចចម្លង និងបិទភ្ជាប់ក្រឡាទៅផ្នែកផ្សេងទៀតនៃសន្លឹកកិច្ចការបានទេ។
- ពួកគេមិនអាចផ្លាស់ប្តូរសន្លឹកកិច្ចការសកម្មបានទេ។
- UDFs អាច' t ផ្លាស់ប្តូរទម្រង់នៅក្នុងក្រឡាសកម្ម។ ប្រសិនបើអ្នកចង់ផ្លាស់ប្ដូរការធ្វើទ្រង់ទ្រាយក្រឡាពេលបង្ហាញតម្លៃខុសគ្នា អ្នកគួរប្រើទម្រង់តាមលក្ខខណ្ឌ។
- ពួកគេមិនអាចបើកសៀវភៅបន្ថែមបានទេ។
- ពួកវាមិនអាចប្រើដើម្បីដំណើរការម៉ាក្រូដោយប្រើ Application.OnTime .
- មុខងារកំណត់ដោយអ្នកប្រើប្រាស់មិនអាចបង្កើតដោយប្រើម៉ាស៊ីនថតម៉ាក្រូទេ។
- មុខងារមិនបង្ហាញនៅក្នុង អ្នកអភិវឌ្ឍន៍ > Macros dialog។
- មុខងាររបស់អ្នកនឹងបង្ហាញនៅក្នុងប្រអប់ ( Insert > Function ) ហើយនៅក្នុងបញ្ជីមុខងារលុះត្រាតែពួកវាត្រូវបានប្រកាសថាជា សាធារណៈ (នេះជាលំនាំដើម លើកលែងតែមានការកត់សម្គាល់ផ្សេង)។
- មុខងារណាមួយដែលត្រូវបានប្រកាសថាជា ឯកជន នឹងមិនបង្ហាញក្នុងបញ្ជីលក្ខណៈពិសេសនោះទេ។
ប្រតិបត្តិការយឺតណាស់។ ក៏ដូចជាការរឹតបន្តឹងមួយចំនួនក្នុងការប្រើប្រាស់ អាចធ្វើឱ្យអ្នកគិតថា: "តើការប្រើប្រាស់មុខងារផ្ទាល់ខ្លួនទាំងនេះគឺជាអ្វី?"
ពួកវាអាចមានប្រយោជន៍ ហើយធ្វើបានប្រសិនបើយើងចងចាំពីឧបសគ្គដែលដាក់លើពួកគេ។ ប្រសិនបើអ្នករៀនពីរបៀបបង្កើត និងប្រើប្រាស់ UDFs ឱ្យបានត្រឹមត្រូវ អ្នកអាចសរសេរមុខងារបណ្ណាល័យរបស់អ្នក។ វានឹងពង្រីកសមត្ថភាពរបស់អ្នកក្នុងការធ្វើការជាមួយទិន្នន័យនៅក្នុង Excel។
សម្រាប់ខ្ញុំ មុខងារផ្ទាល់ខ្លួនគឺជាកម្មវិធីសន្សំសំចៃពេលវេលាដ៏អស្ចារ្យ។ ហើយចុះអ្នកវិញ? តើអ្នកបានសាកល្បងបង្កើត UDF ផ្ទាល់ខ្លួនរបស់អ្នកហើយឬនៅ? តើអ្នកចូលចិត្តវាឬទេប្រសើរជាងមុខងារ Excel មូលដ្ឋាន? តោះពិភាក្សាវានៅក្នុង Comments :)