មាតិកា
នៅពេលនេះ Microsoft Excel មានមុខងារសន្លឹកកិច្ចការជិតប្រាំរយដែលអាចរកបានតាមរយៈបង្អួចមុខងារអ្នកជំនួយការ – ប៊ូតុង fx នៅក្នុងរបាររូបមន្ត។ នេះគឺជាសំណុំដ៏សមរម្យមួយ ប៉ុន្តែទោះជាយ៉ាងណាក៏ដោយ ស្ទើរតែគ្រប់អ្នកប្រើប្រាស់ទាំងអស់ឆាប់ឬក្រោយមកជួបប្រទះស្ថានភាពដែលបញ្ជីនេះមិនមានមុខងារដែលគាត់ត្រូវការ – ដោយគ្រាន់តែវាមិនមាននៅក្នុង Excel ។
រហូតមកដល់ពេលនេះ មធ្យោបាយតែមួយគត់ដើម្បីដោះស្រាយបញ្ហានេះគឺម៉ាក្រូ ពោលគឺការសរសេរមុខងារកំណត់ដោយអ្នកប្រើប្រាស់ផ្ទាល់របស់អ្នក (UDF = User Defined Function) នៅក្នុង Visual Basic ដែលទាមទារជំនាញសរសេរកម្មវិធីសមស្រប ហើយជួនកាលមិនងាយស្រួលទាល់តែសោះ។ ទោះជាយ៉ាងណាក៏ដោយ ជាមួយនឹងការអាប់ដេត Office 365 ចុងក្រោយ ស្ថានភាពបានផ្លាស់ប្តូរកាន់តែប្រសើរឡើង មុខងារ "រុំ" ពិសេសត្រូវបានបន្ថែមទៅ Excel ឡាម៉ាប៊ីឌី។. ជាមួយនឹងជំនួយរបស់វា ភារកិច្ចបង្កើតមុខងារផ្ទាល់ខ្លួនរបស់អ្នកឥឡូវនេះត្រូវបានដោះស្រាយយ៉ាងងាយស្រួល និងស្រស់ស្អាត។
សូមក្រឡេកមើលគោលការណ៍នៃការប្រើប្រាស់របស់វានៅក្នុងឧទាហរណ៍ខាងក្រោម។
ដូចដែលអ្នកបានដឹងហើយថា Excel មានមុខងារញែកកាលបរិច្ឆេទជាច្រើនដែលអនុញ្ញាតឱ្យអ្នកកំណត់ចំនួនថ្ងៃ ខែ សប្តាហ៍ និងឆ្នាំសម្រាប់កាលបរិច្ឆេទដែលបានផ្តល់ឱ្យ។ ប៉ុន្តែសម្រាប់ហេតុផលមួយចំនួនមិនមានមុខងារដែលកំណត់ចំនួននៃត្រីមាសដែលជាញឹកញាប់ត្រូវការផងដែរមែនទេ? តោះជួសជុលចំណុចខ្វះខាតនេះហើយបង្កើតជាមួយ ឡាម៉ាប៊ីឌី។ មុខងារថ្មីផ្ទាល់ខ្លួនដើម្បីដោះស្រាយបញ្ហានេះ។
ជំហានទី 1. សរសេររូបមន្ត
ចូរចាប់ផ្តើមជាមួយនឹងការពិតដែលថាដោយដៃតាមរបៀបធម្មតាយើងនឹងសរសេររូបមន្តនៅក្នុងក្រឡាសន្លឹកដែលគណនាអ្វីដែលយើងត្រូវការ។ ក្នុងករណីលេខត្រីមាស នេះអាចត្រូវបានធ្វើឧទាហរណ៍ដូចនេះ៖
ជំហាន 2. រុំឡើងនៅក្នុង LAMBDA និងការធ្វើតេស្ត
ឥឡូវនេះវាដល់ពេលហើយដើម្បីអនុវត្តមុខងារ LAMBDA ថ្មី ហើយរុំរូបមន្តរបស់យើងនៅក្នុងវា។ វាក្យសម្ព័ន្ធមុខងារមានដូចខាងក្រោម៖
=LAMBDA(អថេរ ១; អថេរ ១; … អថេរN ; ការបញ្ចេញមតិ)
ដែលឈ្មោះនៃអថេរមួយ ឬច្រើនត្រូវបានរាយបញ្ជីមុន ហើយអាគុយម៉ង់ចុងក្រោយគឺតែងតែជារូបមន្ត ឬកន្សោមគណនាដែលប្រើពួកវា។ ឈ្មោះអថេរមិនគួរមើលទៅដូចអាសយដ្ឋានក្រឡា ហើយមិនគួរមានចំណុច។
ក្នុងករណីរបស់យើង វានឹងមានអថេរតែមួយ - កាលបរិច្ឆេទដែលយើងគណនាចំនួនត្រីមាស។ ចូរហៅអថេរសម្រាប់វា និយាយថា ឃ។ បន្ទាប់មករុំរូបមន្តរបស់យើងនៅក្នុងមុខងារមួយ។ ឡាម៉ាប៊ីឌី។ ហើយការជំនួសអាសយដ្ឋាននៃក្រឡាដើម A2 ជាមួយនឹងឈ្មោះអថេរប្រឌិត យើងទទួលបាន៖
សូមចំណាំថាបន្ទាប់ពីការបំប្លែងបែបនេះ រូបមន្តរបស់យើង (ជាការពិត ត្រឹមត្រូវ!) បានចាប់ផ្តើមបង្កើតកំហុស ព្រោះឥឡូវនេះកាលបរិច្ឆេទដើមពីក្រឡា A2 មិនត្រូវបានផ្ទេរទៅវាទេ។ សម្រាប់ការធ្វើតេស្ត និងទំនុកចិត្ត អ្នកអាចឆ្លងកាត់អាគុយម៉ង់ទៅវាដោយបន្ថែមពួកវាបន្ទាប់ពីមុខងារ ឡាម៉ាប៊ីឌី។ ក្នុងវង់ក្រចក៖
ជំហានទី 3. បង្កើតឈ្មោះ
ឥឡូវនេះសម្រាប់ផ្នែកងាយស្រួលនិងរីករាយ។ យើងបើក អ្នកគ្រប់គ្រងឈ្មោះ ផ្ទាំង រូបមន្ត (រូបមន្ត - អ្នកគ្រប់គ្រងឈ្មោះ) ហើយបង្កើតឈ្មោះថ្មីដោយប្រើប៊ូតុង បង្កើត (បង្កើត). មកជាមួយ ហើយបញ្ចូលឈ្មោះសម្រាប់មុខងារនាពេលអនាគតរបស់យើង (ឧទាហរណ៍ Nomkvartala) និងនៅក្នុងវាល តំណភ្ជាប់ (ឯកសារយោង) ចម្លងដោយប្រុងប្រយ័ត្នពីរបាររូបមន្ត ហើយបិទភ្ជាប់មុខងាររបស់យើង។ ឡាម៉ាប៊ីឌី។ដោយគ្មានអាគុយម៉ង់ចុងក្រោយ (A2)៖
អ្វីគ្រប់យ៉ាង។ បន្ទាប់ពីចុចលើ OK មុខងារដែលបានបង្កើតអាចត្រូវបានប្រើនៅក្នុងក្រឡាណាមួយនៅលើសន្លឹកណាមួយនៃសៀវភៅការងារនេះ៖
ប្រើក្នុងសៀវភៅផ្សេងៗ
LAMBDA និងអារេថាមវន្ត
មុខងារផ្ទាល់ខ្លួនបានបង្កើតឡើងជាមួយនឹងមុខងារមួយ។ ឡាម៉ាប៊ីឌី។ គាំទ្រការងារដោយជោគជ័យជាមួយអារេថាមវន្តថ្មី និងមុខងាររបស់ពួកគេ (FILTER, យូនីក, ថ្នាក់ទី) បានបន្ថែមទៅ Microsoft Excel ក្នុងឆ្នាំ 2020។
ឧបមាថាយើងចង់បង្កើតមុខងារថ្មីដែលកំណត់ដោយអ្នកប្រើប្រាស់ដែលនឹងប្រៀបធៀបបញ្ជីពីរហើយត្រឡប់ភាពខុសគ្នារវាងពួកវា - ធាតុទាំងនោះពីបញ្ជីទីមួយដែលមិនមាននៅក្នុងទីពីរ។ ការងារជីវិត មែនទេ? ពីមុនសម្រាប់នេះពួកគេបានប្រើមុខងារទាំងពីរ a la VPR (VLOOKUP)ឬ PivotTables ឬសំណួរសំណួរថាមពល។ ឥឡូវនេះអ្នកអាចធ្វើបានជាមួយនឹងរូបមន្តមួយ:
នៅក្នុងកំណែភាសាអង់គ្លេសវានឹងមានៈ
=LAMBDA(a;b;ФИЛЬТР(a;СЧЁТЕСЛИ(b;a)=0))(A1:A6;C1:C10)
នៅទីនេះមុខងារ COUNTIF រាប់ចំនួននៃការកើតឡើងនៃធាតុនីមួយៗនៃបញ្ជីទីមួយនៅក្នុងទីពីរ ហើយបន្ទាប់មកមុខងារ FILTER ជ្រើសរើសតែអ្នកដែលមិនមានការកើតឡើងទាំងនេះ។ ដោយការរុំរចនាសម្ព័ន្ធនេះនៅក្នុង ឡាម៉ាប៊ីឌី។ និងបង្កើតជួរដែលមានឈ្មោះដោយផ្អែកលើវាជាមួយឈ្មោះឧទាហរណ៍ ស្វែងរកការចែកចាយ - យើងនឹងទទួលបានមុខងារងាយស្រួលដែលត្រឡប់លទ្ធផលនៃការប្រៀបធៀបបញ្ជីពីរក្នុងទម្រង់នៃអារេថាមវន្ត៖
ប្រសិនបើទិន្នន័យប្រភពមិនសាមញ្ញ ប៉ុន្តែតារាង "ឆ្លាតវៃ" មុខងាររបស់យើងក៏នឹងដោះស្រាយដោយគ្មានបញ្ហា៖
ឧទាហរណ៍មួយទៀតគឺការបំបែកអត្ថបទដោយថាមវន្តដោយបំប្លែងវាទៅជា XML ហើយបន្ទាប់មកញែកវាតាមក្រឡាដោយប្រើមុខងារ FILTER.XML ដែលយើងទើបញែកថ្មីៗនេះ។ ដើម្បីកុំបង្កើតរូបមន្តស្មុគស្មាញនេះឡើងវិញដោយដៃរាល់ពេល វានឹងកាន់តែងាយស្រួលក្នុងការរុំវានៅក្នុង LAMBDA ហើយបង្កើតជួរថាមវន្តដោយផ្អែកលើវា ពោលគឺមុខងារបង្រួម និងងាយស្រួលថ្មី ដោយដាក់ឈ្មោះវាឧទាហរណ៍ RAZDTEXT៖
អាគុយម៉ង់ទីមួយនៃមុខងារនេះនឹងជាក្រឡាដែលមានអត្ថបទប្រភព ហើយទីពីរ - តួអក្សរបំបែក ហើយវានឹងត្រឡប់លទ្ធផលក្នុងទម្រង់ជាអារេថាមវន្តផ្ដេក។ កូដមុខងារនឹងមានដូចខាងក្រោម៖
=LAMBDA(t;d; ប្តូរ(FILTER.XML("
បញ្ជីនៃឧទាហរណ៍គឺគ្មានទីបញ្ចប់ - ក្នុងស្ថានភាពណាមួយដែលអ្នកជារឿយៗត្រូវបញ្ចូលរូបមន្តវែង និងស្មុគស្មាញដូចគ្នា មុខងារ LAMBDA នឹងធ្វើឱ្យជីវិតកាន់តែងាយស្រួលគួរឱ្យកត់សម្គាល់។
ការរាប់តួអក្សរដដែលៗ
ឧទាហរណ៍មុនៗទាំងអស់បានបង្ហាញតែមួយផ្នែក ជាក់ស្តែងបំផុតនៃមុខងារ LAMBDA - ការប្រើប្រាស់របស់វាជា "រុំ" សម្រាប់រុំរូបមន្តវែងនៅក្នុងវា និងធ្វើឱ្យការបញ្ចូលរបស់វាងាយស្រួល។ តាមពិត LAMBDA មានផ្នែកមួយទៀតដែលកាន់តែស៊ីជម្រៅ ដែលប្រែក្លាយវាទៅជាភាសាសរសេរកម្មវិធីពេញលេញ។
ការពិតគឺថាមុខងារសំខាន់ជាមូលដ្ឋាននៃមុខងារ LAMBDA គឺសមត្ថភាពក្នុងការអនុវត្តពួកវានៅក្នុង ការហៅឡើងវិញ - តក្កវិជ្ជានៃការគណនា នៅពេលដែលនៅក្នុងដំណើរការនៃការគណនា មុខងារហៅខ្លួនឯង។ តាមទម្លាប់ វាអាចស្តាប់ទៅគួរឱ្យខ្លាច ប៉ុន្តែក្នុងការសរសេរកម្មវិធី ការហៅឡើងវិញគឺជារឿងធម្មតា។ សូម្បីតែនៅក្នុងម៉ាក្រូនៅក្នុង Visual Basic អ្នកអាចអនុវត្តវាបាន ហើយឥឡូវនេះ ដូចដែលអ្នកបានឃើញ វាបានមកដល់ Excel ។ ចូរយើងព្យាយាមយល់ពីបច្ចេកទេសនេះជាមួយនឹងឧទាហរណ៍ជាក់ស្តែង។
ឧបមាថាយើងចង់បង្កើតមុខងារកំណត់ដោយអ្នកប្រើប្រាស់ដែលនឹងលុបតួអក្សរដែលបានផ្តល់ឱ្យទាំងអស់ចេញពីអត្ថបទប្រភព។ អត្ថប្រយោជន៍នៃមុខងារបែបនេះ ខ្ញុំគិតថា អ្នកមិនចាំបាច់បញ្ជាក់ទេ - វានឹងងាយស្រួលណាស់ក្នុងការសម្អាតទិន្នន័យបញ្ចូលដែលមានសំរាមដោយប្រើជំនួយរបស់វាមែនទេ?
ទោះយ៉ាងណាក៏ដោយ បើប្រៀបធៀបទៅនឹងឧទាហរណ៍ពីមុន ដែលមិនកើតឡើងវិញ ការលំបាកពីរកំពុងរង់ចាំយើង។
- យើងនឹងត្រូវបង្កើតឈ្មោះសម្រាប់មុខងាររបស់យើង មុនពេលយើងចាប់ផ្តើមសរសេរកូដរបស់វា ព្រោះនៅក្នុងនោះ ឈ្មោះនេះនឹងត្រូវបានប្រើប្រាស់សម្រាប់ហៅមុខងារនេះរួចហើយ។
- ការបញ្ចូលមុខងារ recursive បែបនេះទៅក្នុងក្រឡា ហើយបំបាត់កំហុសវាដោយបញ្ជាក់អាគុយម៉ង់ក្នុងតង្កៀបបន្ទាប់ពី LAMBDA (ដូចដែលយើងបានធ្វើពីមុន) នឹងមិនដំណើរការទេ។ អ្នកនឹងត្រូវបង្កើតមុខងារភ្លាមៗ "ពីទទេ" នៅក្នុង អ្នកគ្រប់គ្រងឈ្មោះ (អ្នកគ្រប់គ្រងឈ្មោះ).
ចូរហៅមុខងាររបស់យើងថា សម្អាត ហើយយើងចង់ឱ្យវាមានអាគុយម៉ង់ពីរ – អត្ថបទត្រូវសម្អាត និងបញ្ជីតួអក្សរដែលមិនបានរាប់បញ្ចូលជាខ្សែអក្សរអត្ថបទ៖
ចូរយើងបង្កើតដូចដែលយើងបានធ្វើពីមុននៅលើផ្ទាំង រូបមន្ត в ឈ្មោះអ្នកគ្រប់គ្រង ដាក់ឈ្មោះជួរ ដាក់ឈ្មោះវា CLEAR ហើយបញ្ចូលក្នុងវាល ជួរ សំណង់ខាងក្រោម៖
=LAMBDA(t;d;IF(d=””;t;CLEAR(SUBSTITUTE(t;LEFT(d);””);MID(d;2;255))))
នៅទីនេះអថេរ t គឺជាអត្ថបទដើមដែលត្រូវសម្អាត ហើយ d គឺជាបញ្ជីតួអក្សរដែលត្រូវលុប។
វាទាំងអស់ដំណើរការដូចនេះ៖
ការបែងចែក ១
បំណែក SUBSTITUTE(t;LEFT(d);"") ដូចដែលអ្នកអាចទាយបាន ជំនួសតួអក្សរដំបូងពីតួអក្សរខាងឆ្វេងពីសំណុំ d ដែលត្រូវលុបនៅក្នុងអត្ថបទប្រភព t ជាមួយនឹងខ្សែអក្សរទទេ ពោលគឺលុប " ក”។ ជាលទ្ធផលកម្រិតមធ្យម យើងទទួលបាន៖
Vsh zkz n 125 rubles ។
ការបែងចែក ១
បន្ទាប់មកមុខងារហៅខ្លួនឯង ហើយជាការបញ្ចូល (អាគុយម៉ង់ទីមួយ) ទទួលបានអ្វីដែលនៅសេសសល់បន្ទាប់ពីការសម្អាតក្នុងជំហានមុន ហើយអាគុយម៉ង់ទីពីរគឺជាខ្សែអក្សរនៃតួអក្សរដែលបានដកចេញដែលចាប់ផ្តើមមិនមែនពីតួអក្សរទីមួយ ប៉ុន្តែមកពីតួអក្សរទីពីរ ពោលគឺ “BVGDEEGZIKLMNOPRSTUFHTSCHSHSHCHYYYYYA ។ "ដោយគ្មាន "A" ដំបូង - នេះត្រូវបានធ្វើដោយមុខងារ MID ។ ដូចពីមុនមុខងារយកតួអក្សរដំបូងពីខាងឆ្វេងនៃតួអក្សរដែលនៅសល់ (B) ហើយជំនួសវានៅក្នុងអត្ថបទដែលបានផ្តល់ឱ្យវា (Zkz n 125 rubles) ដោយខ្សែទទេ - យើងទទួលបានជាលទ្ធផលមធ្យម:
125 រូ។
ការបែងចែក ១
មុខងារហៅខ្លួនវាម្តងទៀត ដោយទទួលបានជាអាគុយម៉ង់ទីមួយ អ្វីដែលនៅសល់នៃអត្ថបទដែលត្រូវជម្រះនៅពេលធ្វើឡើងវិញមុន (Bsh zkz n 125 ru ។ ខាងឆ្វេង ពោលគឺ “VGDEEGZIKLMNOPRSTUFHTSCHSHSHCHYYYYUYA.” ដោយគ្មានអក្សរ “B” ដំបូង។ បន្ទាប់មកវាម្តងទៀតយកតួអក្សរដំបូងពីខាងឆ្វេង (B) ពីសំណុំនេះហើយយកវាចេញពីអត្ថបទ - យើងទទួលបាន:
sh zkz n 125 ru ។
ហើយដូច្នេះនៅលើ - ខ្ញុំសង្ឃឹមថាអ្នកទទួលបានគំនិត។ ជាមួយនឹងការធ្វើម្តងទៀតនីមួយៗ បញ្ជីតួអក្សរដែលត្រូវដកចេញនឹងត្រូវកាត់ឱ្យខ្លីនៅខាងឆ្វេង ហើយយើងនឹងស្វែងរក និងជំនួសតួអក្សរបន្ទាប់ពីសំណុំដោយទុកជាមោឃៈ។
នៅពេលដែលតួអង្គទាំងអស់អស់ យើងនឹងត្រូវចាកចេញពីរង្វិលជុំ – តួនាទីនេះគ្រាន់តែអនុវត្តដោយមុខងារប៉ុណ្ណោះ។ IF (IF)ដែលក្នុងនោះការរចនារបស់យើងត្រូវបានរុំ។ ប្រសិនបើមិនមានតួអក្សរដែលនៅសល់ដើម្បីលុប (d=””) នោះមុខងារមិនគួរហៅខ្លួនឯងទៀតទេ ប៉ុន្តែគួរតែត្រឡប់អត្ថបទដែលត្រូវជម្រះ (អថេរ t) ក្នុងទម្រង់ចុងក្រោយរបស់វា។
ការបង្កើតឡើងវិញនៃកោសិកា
ស្រដៀងគ្នានេះដែរ អ្នកអាចអនុវត្តការរាប់បញ្ចូលឡើងវិញនៃក្រឡានៅក្នុងជួរដែលបានផ្តល់ឱ្យ។ ឧបមាថាយើងចង់បង្កើតមុខងារ lambda ដែលមានឈ្មោះ បញ្ជីជំនួស សម្រាប់ការជំនួសលក់ដុំនៃបំណែកនៅក្នុងអត្ថបទប្រភព យោងតាមបញ្ជីឯកសារយោងដែលបានផ្តល់ឱ្យ។ លទ្ធផលគួរតែមើលទៅដូចនេះ៖
ទាំងនោះ។ នៅមុខងាររបស់យើង។ បញ្ជីជំនួស វានឹងមានអាគុយម៉ង់បី៖
- ក្រឡាជាមួយអត្ថបទដើម្បីដំណើរការ (អាសយដ្ឋានប្រភព)
- ក្រឡាទីមួយនៃជួរឈរដែលមានតម្លៃដើម្បីស្វែងរកពីការរកមើល
- ក្រឡាទីមួយនៃជួរឈរជាមួយនឹងតម្លៃជំនួសពីការរកមើល
មុខងារគួរតែចេញពីកំពូលទៅបាតក្នុងថត ហើយជំនួសជម្រើសទាំងអស់ជាបន្តបន្ទាប់ពីជួរឈរខាងឆ្វេង ដើម្បីស្វែងរក ទៅជម្រើសដែលត្រូវគ្នាពីជួរឈរខាងស្តាំ ជំនួស. អ្នកអាចអនុវត្តវាជាមួយនឹងមុខងារ lambda ដដែលៗខាងក្រោម៖
ការផ្លាស់ប្តូរចុះក្រោមនៅពេលធ្វើម្តងទៀតនីមួយៗត្រូវបានអនុវត្តដោយអនុគមន៍ Excel ស្តង់ដារ បែកខ្ញែក (OFFSET)ដែលក្នុងករណីនេះមានអាគុយម៉ង់បី - ជួរដើម ការផ្លាស់ប្តូរជួរដេក (1) និងការផ្លាស់ប្តូរជួរឈរ (0) ។
ជាការប្រសើរណាស់ នៅពេលដែលយើងឈានដល់ចុងបញ្ចប់នៃថត (n = “”) យើងត្រូវតែបញ្ចប់ការហៅឡើងវិញ – យើងឈប់ហៅខ្លួនយើង ហើយបង្ហាញអ្វីដែលបានប្រមូលផ្តុំបន្ទាប់ពីការជំនួសទាំងអស់នៅក្នុងអថេរអត្ថបទប្រភព t ។
អស់ហើយ។ គ្មានម៉ាក្រូពិបាក ឬសំណួរ Power Query - កិច្ចការទាំងមូលត្រូវបានដោះស្រាយដោយមុខងារមួយ។
- របៀបប្រើមុខងារអារេឌីណាមិកថ្មីរបស់ Excel៖ FILTER, SORT, UNIC
- ការជំនួស និងសម្អាតអត្ថបទដោយប្រើមុខងារ SUBSTITUTE
- ការបង្កើតម៉ាក្រូ និងមុខងារកំណត់ដោយអ្នកប្រើប្រាស់ (UDFs) នៅក្នុង VBA