ເນື້ອໃນ
ໃນປັດຈຸບັນ, Microsoft Excel ມີເກືອບຫ້າຮ້ອຍຫນ້າທີ່ເຮັດວຽກທີ່ມີຢູ່ໃນປ່ອງຢ້ຽມຂອງຄວາມຍາວປາ Function – ປຸ່ມ fx ໃນແຖບສູດ. ນີ້ແມ່ນຊຸດທີ່ ເໝາະ ສົມທີ່ສຸດ, ແຕ່ຢ່າງໃດກໍ່ຕາມ, ເກືອບທຸກຜູ້ໃຊ້ໄວຫຼືຕໍ່ມາພົບກັບສະຖານະການທີ່ບັນຊີລາຍຊື່ນີ້ບໍ່ມີຫນ້າທີ່ລາວຕ້ອງການ - ພຽງແຕ່ເນື່ອງຈາກວ່າມັນບໍ່ແມ່ນຢູ່ໃນ Excel.
ຈົນກ່ວາໃນປັດຈຸບັນ, ວິທີດຽວທີ່ຈະແກ້ໄຂບັນຫານີ້ແມ່ນ macros, ie ການຂຽນຫນ້າທີ່ກໍານົດໂດຍຜູ້ໃຊ້ຂອງທ່ານເອງ (UDF = User Defined Function) ໃນ Visual Basic, ເຊິ່ງຕ້ອງການທັກສະການຂຽນໂປລແກລມທີ່ເຫມາະສົມແລະບາງຄັ້ງກໍ່ບໍ່ງ່າຍເລີຍ. ຢ່າງໃດກໍຕາມ, ດ້ວຍການອັບເດດ Office 365 ຫຼ້າສຸດ, ສະຖານະການໄດ້ມີການປ່ຽນແປງທີ່ດີກວ່າ - ຟັງຊັນ "wrapper" ພິເສດໄດ້ຖືກເພີ່ມເຂົ້າໃນ Excel. LAMBDA. ດ້ວຍການຊ່ວຍເຫຼືອຂອງມັນ, ວຽກງານຂອງການສ້າງຫນ້າທີ່ຂອງຕົນເອງໄດ້ຖືກແກ້ໄຂໄດ້ງ່າຍແລະສວຍງາມ.
ໃຫ້ເບິ່ງຫຼັກການຂອງການນໍາໃຊ້ຂອງມັນໃນຕົວຢ່າງຕໍ່ໄປນີ້.
ດັ່ງທີ່ເຈົ້າອາດຈະຮູ້ຫຼາຍທີ່ສຸດ, Excel ມີຫຼາຍຫນ້າທີ່ວິເຄາະວັນທີທີ່ຊ່ວຍໃຫ້ທ່ານສາມາດກໍານົດຈໍານວນມື້, ເດືອນ, ອາທິດ, ແລະປີສໍາລັບວັນທີທີ່ກໍານົດໄວ້. ແຕ່ສໍາລັບບາງເຫດຜົນບໍ່ມີຫນ້າທີ່ກໍານົດຈໍານວນຂອງໄຕມາດ, ເຊິ່ງມັກຈະຕ້ອງການ, ແມ່ນບໍ? ໃຫ້ແກ້ໄຂຂໍ້ບົກຜ່ອງນີ້ແລະສ້າງດ້ວຍ LAMBDA ຫນ້າທີ່ໃຫມ່ຂອງຕົນເອງເພື່ອແກ້ໄຂບັນຫານີ້.
ຂັ້ນຕອນທີ 1. ຂຽນສູດ
ໃຫ້ເລີ່ມຕົ້ນດ້ວຍຄວາມຈິງທີ່ວ່າດ້ວຍຕົນເອງໃນແບບປົກກະຕິທີ່ພວກເຮົາຈະຂຽນສູດໃນຕາລາງແຜ່ນທີ່ຄິດໄລ່ສິ່ງທີ່ພວກເຮົາຕ້ອງການ. ໃນກໍລະນີຂອງຕົວເລກໄຕມາດ, ນີ້ສາມາດເຮັດໄດ້, ສໍາລັບການຍົກຕົວຢ່າງ, ເຊັ່ນນີ້:
ຂັ້ນຕອນທີ 2. ຫໍ່ຂຶ້ນໃນ LAMBDA ແລະການທົດສອບ
ໃນປັດຈຸບັນມັນເຖິງເວລາທີ່ຈະນໍາໃຊ້ຟັງຊັນ LAMBDA ໃຫມ່ແລະຫໍ່ສູດຂອງພວກເຮົາໃນມັນ. syntax ຂອງຟັງຊັນມີດັ່ງນີ້:
=LAMBDA(ຕົວແປ1; ຕົວແປ2; … ຕົວແປN ; ການສະແດງອອກ)
ບ່ອນທີ່ຊື່ຂອງຕົວແປຫນຶ່ງຫຼືຫຼາຍກວ່ານັ້ນຖືກລະບຸໄວ້ກ່ອນ, ແລະການໂຕ້ຖຽງສຸດທ້າຍແມ່ນສະເຫມີສູດຫຼືການຄິດໄລ່ທີ່ໃຊ້ພວກມັນ. ຊື່ຕົວແປບໍ່ຄວນຄ້າຍຄືກັບທີ່ຢູ່ເຊລ ແລະບໍ່ຄວນມີຈຸດ.
ໃນກໍລະນີຂອງພວກເຮົາ, ຈະມີຕົວແປອັນດຽວ - ວັນທີທີ່ພວກເຮົາຄິດໄລ່ຕົວເລກໄຕມາດ. ໃຫ້ໂທຫາຕົວແປສໍາລັບມັນ, ເວົ້າວ່າ, d. ຫຼັງຈາກນັ້ນ, ຫໍ່ສູດຂອງພວກເຮົາໃນຫນ້າທີ່ LAMBDA ແລະການທົດແທນທີ່ຢູ່ຂອງຈຸລັງຕົ້ນສະບັບ A2 ດ້ວຍຊື່ຕົວແປທີ່ສົມມຸດຕິຖານ, ພວກເຮົາໄດ້ຮັບ:
ກະລຸນາສັງເກດວ່າຫຼັງຈາກການຫັນປ່ຽນດັ່ງກ່າວ, ສູດຂອງພວກເຮົາ (ໃນຄວາມເປັນຈິງ, ຖືກຕ້ອງ!) ໄດ້ເລີ່ມຕົ້ນທີ່ຈະຜະລິດຄວາມຜິດພາດ, ເພາະວ່າໃນປັດຈຸບັນຕົ້ນສະບັບຈາກເຊນ A2 ບໍ່ໄດ້ຖືກໂອນໄປຫາມັນ. ສໍາລັບການທົດສອບແລະຄວາມຫມັ້ນໃຈ, ທ່ານສາມາດຜ່ານການໂຕ້ຖຽງກັບມັນໂດຍການເພີ່ມພວກມັນຫຼັງຈາກຟັງຊັນ LAMBDA ໃນວົງເລັບ:
ຂັ້ນຕອນທີ 3. ສ້າງຊື່
ໃນປັດຈຸບັນສໍາລັບພາກສ່ວນທີ່ງ່າຍແລະມ່ວນຊື່ນ. ພວກເຮົາເປີດ ຜູ້ຈັດການຊື່ ແຖບ ສູດ (ສູດ — ຜູ້ຈັດການຊື່) ແລະສ້າງຊື່ໃຫມ່ດ້ວຍປຸ່ມ ສ້າງ (ສ້າງ). ມາກັບແລະໃສ່ຊື່ສໍາລັບຫນ້າທີ່ຂອງພວກເຮົາໃນອະນາຄົດ (ຕົວຢ່າງ: ໂນມຄວາທາລາ), ແລະໃນພາກສະຫນາມ ການເຊື່ອມຕໍ່ (ກະສານອ້າງອີງ) ຄັດລອກຢ່າງລະມັດລະວັງຈາກແຖບສູດແລະວາງຫນ້າທີ່ຂອງພວກເຮົາ LAMBDA, ພຽງແຕ່ບໍ່ມີການໂຕ້ຖຽງສຸດທ້າຍ (A2):
ທຸກຢ່າງ. ຫຼັງຈາກທີ່ຄລິກໃສ່ OK ຟັງຊັນທີ່ສ້າງຂື້ນສາມາດຖືກນໍາໃຊ້ໃນຕາລາງໃດໆໃນເອກະສານໃດໆຂອງປື້ມຄູ່ມືນີ້:
ໃຊ້ໃນປຶ້ມອື່ນໆ
LAMBDA ແລະອາເຣແບບໄດນາມິກ
ຟັງຊັນແບບກຳນົດເອງທີ່ສ້າງຂຶ້ນດ້ວຍຟັງຊັນ LAMBDA ສະຫນັບສະຫນູນສົບຜົນສໍາເລັດການເຮັດວຽກກັບ array dynamic ໃຫມ່ແລະຫນ້າທີ່ຂອງເຂົາເຈົ້າ (FILTER, UNIQUE, ລະດັບຊັ້ນຮຽນ) ເພີ່ມໃສ່ Microsoft Excel ໃນປີ 2020.
ສົມມຸດວ່າພວກເຮົາຕ້ອງການສ້າງຫນ້າທີ່ກໍານົດໂດຍຜູ້ໃຊ້ໃຫມ່ທີ່ຈະປຽບທຽບສອງລາຍຊື່ແລະສົ່ງຄືນຄວາມແຕກຕ່າງລະຫວ່າງພວກມັນ - ອົງປະກອບເຫຼົ່ານັ້ນຈາກບັນຊີລາຍຊື່ທໍາອິດທີ່ບໍ່ໄດ້ຢູ່ໃນທີສອງ. ການເຮັດວຽກຂອງຊີວິດ, ບໍ່ແມ່ນບໍ? ກ່ອນຫນ້ານີ້, ສໍາລັບການນີ້, ພວກເຂົາເຈົ້າໄດ້ນໍາໃຊ້ທັງສອງຫນ້າທີ່ a la VPR (VLOOKUP), ຫຼື PivotTables, ຫຼືການສອບຖາມ Power Query. ໃນປັດຈຸບັນທ່ານສາມາດເຮັດໄດ້ດ້ວຍສູດຫນຶ່ງ:
ໃນສະບັບພາສາອັງກິດຈະເປັນ:
=LAMBDA(a;b;ФИЛЬТР(a;СЧЁТЕСЛИ(b;a)=0))(A1:A6;C1:C10)
ທີ່ນີ້ຫນ້າທີ່ COUNTIF ນັບຈໍານວນການປະກົດຕົວຂອງແຕ່ລະອົງປະກອບຂອງບັນຊີລາຍຊື່ທໍາອິດໃນທີສອງ, ແລະຫຼັງຈາກນັ້ນຟັງຊັນ FILTER ເລືອກພຽງແຕ່ຜູ້ທີ່ບໍ່ໄດ້ປະກົດຕົວເຫຼົ່ານີ້. ໂດຍການຫໍ່ໂຄງສ້າງນີ້ໃນ LAMBDA ແລະການສ້າງໄລຍະທີ່ມີຊື່ໂດຍອີງໃສ່ມັນດ້ວຍຊື່, ຕົວຢ່າງ, ຄົ້ນຫາການແຈກຢາຍ - ພວກເຮົາຈະໄດ້ຮັບການທໍາງານທີ່ສະດວກທີ່ຈະກັບຄືນຜົນໄດ້ຮັບຂອງການປຽບທຽບສອງລາຍການໃນຮູບແບບຂອງ array dynamic:
ຖ້າຂໍ້ມູນແຫຼ່ງບໍ່ແມ່ນເລື່ອງທໍາມະດາ, ແຕ່ຕາຕະລາງ "smart", ຫນ້າທີ່ຂອງພວກເຮົາຍັງຈະຮັບມືກັບບັນຫາທີ່ບໍ່ມີບັນຫາ:
ຕົວຢ່າງອື່ນແມ່ນການແຍກຂໍ້ຄວາມແບບໄດນາມິກໂດຍການປ່ຽນມັນເປັນ XML ແລະຫຼັງຈາກນັ້ນແຍກມັນແຕ່ລະເຊລໂດຍໃຊ້ຟັງຊັນ FILTER.XML ທີ່ພວກເຮົາໄດ້ວິເຄາະເມື່ອບໍ່ດົນມານີ້. ໃນຄໍາສັ່ງທີ່ຈະບໍ່ຜະລິດສູດສະລັບສັບຊ້ອນນີ້ດ້ວຍຕົນເອງທຸກຄັ້ງ, ມັນຈະງ່າຍຂຶ້ນທີ່ຈະຫໍ່ມັນຢູ່ໃນ LAMBDA ແລະສ້າງລະດັບການເຄື່ອນທີ່ໂດຍອີງໃສ່ມັນ, ie ຫນ້າທີ່ຫນາແຫນ້ນແລະສະດວກໃຫມ່, ຊື່ມັນ, ສໍາລັບການຍົກຕົວຢ່າງ, RAZDTEXT:
ອາກິວເມັນທໍາອິດຂອງຟັງຊັນນີ້ຈະເປັນຕາລາງທີ່ມີຂໍ້ຄວາມຕົ້ນສະບັບ, ແລະອັນທີສອງ - ຕົວອັກສອນຕົວແຍກ, ແລະມັນຈະສົ່ງຜົນໄດ້ຮັບໃນຮູບແບບຂອງອາເຣໄດນາມິກແນວນອນ. ລະຫັດການທໍາງານຈະເປັນດັ່ງຕໍ່ໄປນີ້:
=LAMBDA(t;d; TRANSPOSE(FILTER.XML(“
ບັນຊີລາຍຊື່ຂອງຕົວຢ່າງແມ່ນບໍ່ມີທີ່ສິ້ນສຸດ - ໃນສະຖານະການໃດກໍ່ຕາມທີ່ທ່ານມັກຈະຕ້ອງໃສ່ສູດທີ່ຍາວນານແລະຫຍຸ້ງຍາກດຽວກັນ, ຟັງຊັນ LAMBDA ຈະເຮັດໃຫ້ຊີວິດງ່າຍຂຶ້ນຢ່າງເຫັນໄດ້ຊັດ.
ການນັບຈຳນວນຕົວລະຄອນຊ້ຳໆ
ຕົວຢ່າງທີ່ຜ່ານມາທັງຫມົດໄດ້ສະແດງໃຫ້ເຫັນພຽງແຕ່ຫນຶ່ງ, ທີ່ຈະແຈ້ງທີ່ສຸດ, ຂ້າງຂອງຟັງຊັນ LAMBDA - ການໃຊ້ມັນເປັນ "wrapper" ສໍາລັບການຫໍ່ສູດຍາວໃນມັນແລະງ່າຍການປ້ອນຂໍ້ມູນຂອງເຂົາເຈົ້າ. ໃນຄວາມເປັນຈິງ, LAMBDA ມີອີກດ້ານຫນຶ່ງ, ເລິກຫຼາຍ, ດ້ານທີ່ປ່ຽນມັນເຂົ້າໄປໃນເກືອບເປັນພາສາການຂຽນໂປຼແກຼມເຕັມຮູບແບບ.
ຄວາມຈິງແລ້ວແມ່ນວ່າລັກສະນະທີ່ສໍາຄັນພື້ນຖານຂອງຫນ້າທີ່ LAMBDA ແມ່ນຄວາມສາມາດໃນການປະຕິບັດພວກມັນໃນ ການເອີ້ນຄືນ – ຕາມເຫດຜົນຂອງການຄິດໄລ່, ໃນເວລາທີ່ຢູ່ໃນຂະບວນການຂອງການຄິດໄລ່ຫນ້າທີ່ເອີ້ນຕົວມັນເອງ. ຈາກນິໄສ, ມັນອາດຈະເປັນເລື່ອງທີ່ຫນ້າຢ້ານກົວ, ແຕ່ໃນການຂຽນໂປຼແກຼມ, ການເອີ້ນຄືນເປັນເລື່ອງທໍາມະດາ. ເຖິງແມ່ນວ່າຢູ່ໃນ macro ໃນ Visual Basic, ທ່ານສາມາດປະຕິບັດມັນໄດ້, ແລະໃນປັດຈຸບັນ, ຕາມທີ່ເຈົ້າເຫັນ, ມັນໄດ້ມາຮອດ Excel. ໃຫ້ພະຍາຍາມເຂົ້າໃຈເຕັກນິກນີ້ດ້ວຍຕົວຢ່າງການປະຕິບັດ.
ສົມມຸດວ່າພວກເຮົາຕ້ອງການສ້າງຫນ້າທີ່ກໍານົດໂດຍຜູ້ໃຊ້ທີ່ຈະເອົາຕົວອັກສອນທີ່ໃຫ້ທັງຫມົດອອກຈາກຂໍ້ຄວາມຕົ້ນສະບັບ. ຜົນປະໂຫຍດຂອງຫນ້າທີ່ດັ່ງກ່າວ, ຂ້າພະເຈົ້າຄິດວ່າ, ທ່ານບໍ່ຈໍາເປັນຕ້ອງພິສູດ - ມັນຈະສະດວກຫຼາຍທີ່ຈະລຶບຂໍ້ມູນການປ້ອນຂໍ້ມູນຂີ້ເຫຍື້ອດ້ວຍການຊ່ວຍເຫຼືອຂອງມັນ, ແມ່ນບໍ?
ຢ່າງໃດກໍຕາມ, ເມື່ອປຽບທຽບກັບຕົວຢ່າງທີ່ຜ່ານມາ, ທີ່ບໍ່ແມ່ນ recursive, ສອງຄວາມຫຍຸ້ງຍາກລໍຖ້າພວກເຮົາ.
- ເຮົາຈະຕ້ອງມາຕັ້ງຊື່ໃຫ້ຟັງຊັນຂອງເຮົາກ່ອນຈະເລີ່ມຂຽນລະຫັດຂອງມັນ ເພາະໃນນັ້ນຊື່ນີ້ຈະຖືກໃຊ້ເພື່ອເອີ້ນຟັງຊັນນັ້ນເອງ.
- ການໃສ່ຟັງຊັນ recursive ດັ່ງກ່າວເຂົ້າໄປໃນເຊນແລະ debugging ມັນໂດຍການລະບຸ arguments ໃນວົງເລັບຫຼັງຈາກ LAMBDA (ດັ່ງທີ່ພວກເຮົາໄດ້ເຮັດກ່ອນຫນ້ານີ້) ຈະບໍ່ເຮັດວຽກ. ທ່ານຈະຕ້ອງສ້າງຫນ້າທີ່ທັນທີ "ຈາກ scratch" ໃນ ຜູ້ຈັດການຊື່ (ຜູ້ຈັດການຊື່).
ໃຫ້ໂທຫາຫນ້າທີ່ຂອງພວກເຮົາ, ເວົ້າວ່າ, CLEAN ແລະພວກເຮົາຕ້ອງການໃຫ້ມັນມີສອງ arguments - ຂໍ້ຄວາມທີ່ຈະເຮັດຄວາມສະອາດແລະບັນຊີລາຍຊື່ຂອງຕົວອັກສອນທີ່ຖືກຍົກເວັ້ນເປັນຂໍ້ຄວາມ:
ໃຫ້ພວກເຮົາສ້າງ, ດັ່ງທີ່ພວກເຮົາໄດ້ເຮັດກ່ອນຫນ້ານີ້, ໃນແຖບ ສູດ в ຜູ້ຈັດການຊື່ ຕັ້ງຊື່ໄລຍະ, ຕັ້ງຊື່ມັນ CLEAR ແລະໃສ່ໃນພາກສະຫນາມ ລະດັບ ການກໍ່ສ້າງດັ່ງຕໍ່ໄປນີ້:
=LAMBDA(t;d;IF(d=””;t;CLEAR(SUBSTITUTE(t;LEFT(d);””);MID(d;2;255))))
ທີ່ນີ້ຕົວແປ t ແມ່ນຂໍ້ຄວາມຕົ້ນສະບັບທີ່ຈະຖືກລຶບລ້າງ, ແລະ d ແມ່ນບັນຊີລາຍຊື່ຂອງຕົວອັກສອນທີ່ຈະລຶບ.
ມັນທັງຫມົດເຮັດວຽກແບບນີ້:
ການເຜົາຜານ 1
Fragment SUBSTITUTE(t;LEFT(d);”) ຕາມທີ່ເຈົ້າອາດຈະເດົາໄດ້, ແທນທີ່ຕົວອັກສອນທຳອິດຈາກຕົວອັກສອນຊ້າຍຈາກຊຸດ d ທີ່ຈະລຶບໃນຂໍ້ຄວາມຕົ້ນສະບັບ t ດ້ວຍສາຍຂໍ້ຄວາມຫວ່າງເປົ່າ, ເຊັ່ນວ່າ ເອົາ “ A”. ຜົນໄດ້ຮັບລະດັບປານກາງ, ພວກເຮົາໄດ້ຮັບ:
Vsh zkz n 125 ຮູເບີນ.
ການເຜົາຜານ 2
ຫຼັງຈາກນັ້ນ, ຟັງຊັນເອີ້ນຕົວມັນເອງແລະເປັນວັດສະດຸປ້ອນ (ການໂຕ້ຖຽງທໍາອິດ) ໄດ້ຮັບສິ່ງທີ່ເຫຼືອຫຼັງຈາກການທໍາຄວາມສະອາດໃນຂັ້ນຕອນທີ່ຜ່ານມາ, ແລະການໂຕ້ຖຽງທີສອງແມ່ນສາຍຂອງຕົວອັກສອນທີ່ຖືກຍົກເວັ້ນທີ່ເລີ່ມຕົ້ນຈາກຕົວທໍາອິດ, ແຕ່ຈາກຕົວອັກສອນທີສອງ, ເຊັ່ນ: "BVGDEEGZIKLMNOPRSTUFHTSCHSHSHCHYYYYA. ,” ໂດຍບໍ່ມີການເລີ່ມຕົ້ນ “A” – ນີ້ແມ່ນເຮັດໄດ້ໂດຍຟັງຊັນ MID. ດັ່ງທີ່ຜ່ານມາ, ຟັງຊັນຈະເອົາຕົວອັກສອນທໍາອິດຈາກຊ້າຍຂອງຕົວທີ່ຍັງເຫຼືອ (B) ແລະແທນທີ່ມັນຢູ່ໃນຂໍ້ຄວາມທີ່ໃຫ້ມັນ (Zkz n 125 rubles) ດ້ວຍສາຍທີ່ຫວ່າງເປົ່າ - ພວກເຮົາໄດ້ຮັບຜົນປານກາງ:
125 ru.
ການເຜົາຜານ 3
ຟັງຊັນເອີ້ນຕົວມັນເອງອີກເທື່ອຫນຶ່ງ, ໄດ້ຮັບເປັນການໂຕ້ຖຽງທໍາອິດສິ່ງທີ່ເຫຼືອຢູ່ໃນຂໍ້ຄວາມທີ່ຈະຖືກລຶບລ້າງໃນ iteration ທີ່ຜ່ານມາ (Bsh zkz n 125 ru.), ແລະເປັນການໂຕ້ຖຽງທີສອງ, ຊຸດຂອງຕົວອັກສອນທີ່ຖືກຍົກເວັ້ນຖືກຕັດອອກໂດຍຕົວອັກສອນເພີ່ມເຕີມຫນຶ່ງເພື່ອ ຊ້າຍ, ie “VGDEEGZIKLMNOPRSTUFHTSCHSHSHCHYYYYUYA.,” ໂດຍບໍ່ມີ “B” ເບື້ອງຕົ້ນ. ຫຼັງຈາກນັ້ນ, ມັນໃຊ້ເວລາຕົວອັກສອນທໍາອິດຈາກຊ້າຍ (B) ຈາກຊຸດນີ້ແລະເອົາມັນອອກຈາກຂໍ້ຄວາມ - ພວກເຮົາໄດ້ຮັບ:
sh zkz n 125 ru.
ແລະອື່ນໆ - ຂ້ອຍຫວັງວ່າເຈົ້າຈະໄດ້ຮັບຄວາມຄິດ. ດ້ວຍການເຮັດຊ້ຳແຕ່ລະຄັ້ງ, ລາຍຊື່ຂອງຕົວອັກສອນທີ່ຈະຖືກຖອດອອກຈະຖືກຕັດອອກທາງຊ້າຍ, ແລະພວກເຮົາຈະຊອກຫາ ແລະປ່ຽນຕົວອັກສອນຕໍ່ໄປຈາກຊຸດດັ່ງກ່າວດ້ວຍຊ່ອງຫວ່າງ.
ເມື່ອຕົວລະຄອນທັງໝົດໝົດ, ພວກເຮົາຈະຕ້ອງອອກຈາກວົງການ – ບົດບາດນີ້ພຽງແຕ່ປະຕິບັດໂດຍຟັງຊັນ IF (ຖ້າແມ່ນ), ໃນການອອກແບບຂອງພວກເຮົາແມ່ນຫໍ່. ຖ້າບໍ່ມີຕົວອັກສອນທີ່ປ່ອຍໃຫ້ລຶບ (d = ""), ຫຼັງຈາກນັ້ນ, ຟັງຊັນບໍ່ຄວນເອີ້ນຕົວມັນເອງ, ແຕ່ພຽງແຕ່ຄວນສົ່ງຄືນຂໍ້ຄວາມທີ່ຖືກລຶບລ້າງ (ຕົວແປ t) ໃນຮູບແບບສຸດທ້າຍຂອງມັນ.
ການຊໍ້າຄືນຂອງເຊລ
ເຊັ່ນດຽວກັນ, ທ່ານສາມາດປະຕິບັດການ enumeration recursive ຂອງເຊລໃນຂອບເຂດທີ່ກໍານົດໄວ້. ສົມມຸດວ່າພວກເຮົາຕ້ອງການສ້າງຟັງຊັນ lambda ຊື່ ລາຍຊື່ການທົດແທນ ສໍາລັບການທົດແທນການຂາຍຍົກຂອງ fragments ໃນຂໍ້ຄວາມແຫຼ່ງອີງຕາມບັນຊີລາຍຊື່ອ້າງອິງ. ຜົນໄດ້ຮັບຄວນຈະເປັນແບບນີ້:
ເຫຼົ່ານັ້ນ. ຢູ່ໃນຫນ້າທີ່ຂອງພວກເຮົາ ລາຍຊື່ການທົດແທນ ຈະມີສາມການໂຕ້ຖຽງ:
- ຕາລາງທີ່ມີຂໍ້ຄວາມເພື່ອປະມວນຜົນ (ທີ່ຢູ່ແຫຼ່ງ)
- ຕາລາງທໍາອິດຂອງຖັນທີ່ມີຄ່າເພື່ອຄົ້ນຫາຈາກການຊອກຫາ
- ຕາລາງທໍາອິດຂອງຖັນທີ່ມີຄ່າທົດແທນຈາກການຊອກຫາ
ຟັງຊັນຄວນໄປຈາກເທິງລົງລຸ່ມໃນໄດເລກະທໍລີແລະປ່ຽນແທນລໍາດັບທາງເລືອກທັງຫມົດຈາກຖັນຊ້າຍ ຊອກຫາ ໄປຫາຕົວເລືອກທີ່ສອດຄ້ອງກັນຈາກຖັນຂວາ ທົດແທນ. ທ່ານສາມາດປະຕິບັດສິ່ງນີ້ດ້ວຍຟັງຊັນ lambda recursive ຕໍ່ໄປນີ້:
Shift ລົງໃນແຕ່ລະ iteration ແມ່ນປະຕິບັດໂດຍຟັງຊັນ excel ມາດຕະຖານ ການແຈກຢາຍ (OFFSET), ເຊິ່ງໃນກໍລະນີນີ້ມີສາມ argument - ຊ່ວງຕົ້ນສະບັບ, row shift (1) ແລະຖັນ shift (0).
ດີ, ທັນທີທີ່ພວກເຮົາໄປເຖິງຈຸດສິ້ນສຸດຂອງໄດເລກະທໍລີ (n = ""), ພວກເຮົາຕ້ອງສິ້ນສຸດການເອີ້ນຄືນ - ພວກເຮົາຢຸດເຊົາການໂທຫາຕົວເອງແລະສະແດງສິ່ງທີ່ໄດ້ສະສົມຫຼັງຈາກການປ່ຽນແທນທັງຫມົດໃນຕົວແປແຫຼ່ງຂໍ້ຄວາມ t.
ຫມົດເທົ່ານີ້. ບໍ່ມີມະຫາພາກທີ່ຫຼອກລວງ ຫຼືການສອບຖາມ Power Query – ວຽກທັງໝົດຖືກແກ້ໄຂດ້ວຍຟັງຊັນດຽວ.
- ວິທີການນໍາໃຊ້ຟັງຊັນ array ແບບໄດນາມິກໃຫມ່ຂອງ Excel: FILTER, SORT, UNIC
- ການປ່ຽນແທນ ແລະທຳຄວາມສະອາດຂໍ້ຄວາມດ້ວຍຟັງຊັນ SUBSTITUTE
- ການສ້າງ macro ແລະຟັງຊັນທີ່ຜູ້ໃຊ້ກໍານົດ (UDFs) ໃນ VBA