ສາລະບານ
ໃນບົດສອນນີ້, ພວກເຮົາຈະເບິ່ງຫຼາຍວິທີເພື່ອຊອກຫາ ແລະແທນທີ່ຫຼາຍຄໍາ, ສະຕຣິງ, ຫຼືຕົວອັກສອນແຕ່ລະຕົວ, ດັ່ງນັ້ນເຈົ້າສາມາດເລືອກອັນທີ່ເໝາະສົມກັບຄວາມຕ້ອງການຂອງເຈົ້າທີ່ສຸດ.
ຄົນເຮົາມັກຈະຊອກຫາໃນ Excel ແນວໃດ? ສ່ວນໃຫຍ່, ໂດຍໃຊ້ Find & ແທນທີ່ຄຸນສົມບັດ, ເຊິ່ງເຮັດວຽກໄດ້ດີສໍາລັບຄ່າດຽວ. ແຕ່ຈະເປັນແນວໃດຖ້າທ່ານມີສິບຫຼືຫຼາຍຮ້ອຍລາຍການທີ່ຈະທົດແທນ? ແນ່ນອນ, ບໍ່ມີໃຜຢາກເຮັດການທົດແທນເຫຼົ່ານັ້ນດ້ວຍຕົນເອງເທື່ອລະອັນ, ແລະຫຼັງຈາກນັ້ນເຮັດມັນອີກເທື່ອຫນຶ່ງເມື່ອຂໍ້ມູນມີການປ່ຽນແປງ. ໂຊກດີ, ມີບາງວິທີທີ່ມີປະສິດທິພາບກວ່າທີ່ຈະເຮັດການທົດແທນມະຫາຊົນໃນ Excel, ແລະພວກເຮົາຈະກວດສອບແຕ່ລະອັນຢ່າງລະອຽດ.
ຊອກຫາ ແລະປ່ຽນຄ່າຫຼາຍຄ່າດ້ວຍ SUBSTITUTE ຊ້ອນກັນ
ວິທີທີ່ງ່າຍທີ່ສຸດທີ່ຈະຊອກຫາ ແລະແທນທີ່ຫຼາຍອັນໃນ Excel ແມ່ນໂດຍໃຊ້ຟັງຊັນ SUBSTITUTE.
ເຫດຜົນຂອງສູດແມ່ນງ່າຍດາຍຫຼາຍ: ທ່ານຂຽນບາງຟັງຊັນແຕ່ລະອັນເພື່ອແທນຄ່າເກົ່າດ້ວຍຄ່າໃໝ່. . ແລະຫຼັງຈາກນັ້ນ, ທ່ານວາງຟັງຊັນເຫຼົ່ານັ້ນໃສ່ໃນອີກອັນຫນຶ່ງ, ເພື່ອໃຫ້ແຕ່ລະ SUBSTITUTE ຕໍ່ມາໃຊ້ຜົນຜະລິດຂອງ SUBSTITUTE ກ່ອນຫນ້າເພື່ອຊອກຫາຄ່າຕໍ່ໄປ.
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( text, )). old_text1, new_text1), old_text2, new_text2), old_text3, new_text3)ໃນບັນຊີລາຍຊື່ຂອງສະຖານທີ່ໃນ A2:A10, ສົມມຸດວ່າທ່ານຕ້ອງການປ່ຽນຊື່ປະເທດຫຍໍ້ (ເຊັ່ນ: FR , UK ແລະ USA ) ດ້ວຍເຕັມ.ຟັງຊັນ MassReplace ຈະເຮັດວຽກພຽງແຕ່ຢູ່ໃນປຶ້ມວຽກທີ່ທ່ານໄດ້ໃສ່ລະຫັດ. ຖ້າຫາກທ່ານບໍ່ແນ່ໃຈວ່າຈະເຮັດແນວນີ້ຢ່າງຖືກຕ້ອງ, ກະລຸນາປະຕິບັດຕາມຂັ້ນຕອນທີ່ອະທິບາຍໃນວິທີການໃສ່ລະຫັດ VBA ໃນ Excel. ຊື່ຂອງຟັງຊັນ, ບໍ່ແມ່ນການໂຕ້ຖຽງ! ແນວໃດກໍ່ຕາມ, ຂ້ອຍເຊື່ອວ່າມັນບໍ່ເປັນເລື່ອງໃຫຍ່ທີ່ຈະຈື່ syntax:
MassReplace(input_range, find_range, replace_range)Where:
- Input_range - the source range where ທ່ານຕ້ອງການແທນທີ່ຄ່າ.
- ຊອກຫາຂອບເຂດ - ຕົວອັກສອນ, ສະຕຣິງ ຫຼືຄຳສັບທີ່ຕ້ອງການຄົ້ນຫາ. ຫຼືຄຳສັບເພື່ອແທນທີ່ດ້ວຍ.
ໃນ Excel 365, ເນື່ອງຈາກການຮອງຮັບອາເຣແບບໄດນາມິກ, ອັນນີ້ເຮັດວຽກເປັນສູດທຳມະດາ, ເຊິ່ງພຽງແຕ່ຕ້ອງໃສ່ໃນຕາລາງເທິງສຸດ (B2):
=MassReplace(A2:A10, D2:D4, E2:E4)
ໃນ Excel ລ່ວງໜ້າແບບໄດນາມິກ, ອັນນີ້ເຮັດວຽກເປັນສູດ CSE array ແບບເກົ່າ: ທ່ານເລືອກຂອບເຂດແຫຼ່ງທັງໝົດ (B2:B10), ພິມ ສູດ, ແລະກົດປຸ່ມ Ctrl + Shift + Enter ພ້ອມກັນເພື່ອເຮັດສໍາເລັດມັນ.
ຂໍ້ໄດ້ປຽບ : ທາງເລືອກທີ່ເຫມາະສົມກັບຟັງຊັນ LAMBDA ແບບກຳນົດເອງໃນ Excel 2019 , Excel 2016 ແລະຮຸ່ນກ່ອນໜ້າ
ຂໍ້ເສຍ : ປື້ມບັນທຶກວຽກຕ້ອງຖືກບັນທຶກເປັນໄຟລ໌ .xlsm ທີ່ໃຊ້ Macro
Bulk ແທນທີ່ໃນ Excel ດ້ວຍ VBA macro
<0> ຖ້າຫາກວ່າທ່ານຮັກລົດຍົນ ການຫາຄູ່ວຽກທົ່ວໄປກັບ macro, ຫຼັງຈາກນັ້ນທ່ານສາມາດໃຊ້ລະຫັດ VBA ຕໍ່ໄປນີ້ເພື່ອຊອກຫາ ແລະປ່ຽນຄ່າຫຼາຍຄ່າໃນໄລຍະໃດໜຶ່ງໄດ້.Sub BulkReplace() Dim Rng As Range, SourceRng As Range, ReplaceRng As Range ເມື່ອເກີດຄວາມຜິດພາດ ສືບຕໍ່ຊຸດຕໍ່ໄປ SourceRng = Application.InputBox( "ແຫຼ່ງຂໍ້ມູນ: " , "Bulk Replace", Application.Selection.Address, Type :=8) Err.Clear ຖ້າບໍ່ແມ່ນ SourceRng ບໍ່ມີຫຍັງແລ້ວຕັ້ງ ReplaceRng = Application.InputBox( "Replace range:" , "Bulk Replace" , Type :=8) Err.Clear ຖ້າບໍ່ ReplaceRng ບໍ່ມີຫຍັງຫຼັງຈາກນັ້ນ Application.ScreenUpdating = False ສໍາລັບແຕ່ລະ Rng ໃນ ReplaceRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value Next Application.ScreenUpdating = True End If End If End Subເພື່ອນຳໃຊ້ມະຫາພາກໃນທັນທີ, ທ່ານສາມາດດາວໂຫລດປຶ້ມຕົວຢ່າງຂອງພວກເຮົາທີ່ມີລະຫັດໄດ້. ຫຼືທ່ານສາມາດໃສ່ລະຫັດໃສ່ໃນປຶ້ມວຽກຂອງເຈົ້າເອງໄດ້.
ວິທີໃຊ້ macro
ກ່ອນທີ່ຈະແລ່ນມາໂຄຣ, ໃຫ້ພິມຄ່າເກົ່າ ແລະຄ່າໃໝ່ໃສ່ສອງຖັນຕິດກັນ ດັ່ງທີ່ສະແດງຢູ່ໃນຮູບຂ້າງລຸ່ມນີ້ ( C2:D4)
ໃນຖານະເປັນ source rage ຖືກເລືອກໄວ້ລ່ວງໜ້າ, ພຽງແຕ່ກວດສອບການອ້າງອີງ, ແລະຄລິກ OK:
ຫຼັງຈາກນັ້ນ, ເລືອກ ປ່ຽນໄລຍະ , ແລະຄລິກຕົກລົງ:
ແລ້ວໆ!
ຂໍ້ດີ : ຕັ້ງຄ່າຄັ້ງດຽວ, ໃຊ້ຄືນໄດ້ທຸກເວລາ
ຂໍ້ເສຍ : ມະຫາພາກຈະຕ້ອງຖືກແລ່ນກັບທຸກຂໍ້ມູນ.ການປ່ຽນແປງ
ຫຼາຍການຊອກຫາ ແລະແທນທີ່ໃນ Excel ດ້ວຍເຄື່ອງມືຍ່ອຍ
ໃນຕົວຢ່າງທໍາອິດ, ຂ້າພະເຈົ້າໄດ້ກ່າວເຖິງວ່າ SUBSTITUTE ທີ່ຖືກວາງໄວ້ເປັນວິທີທີ່ງ່າຍທີ່ສຸດທີ່ຈະປ່ຽນຄ່າຫຼາຍຄ່າໃນ Excel. ຂ້ອຍຍອມຮັບວ່າຂ້ອຍຜິດ. Ultimate Suite ຂອງພວກເຮົາເຮັດໃຫ້ສິ່ງຕ່າງໆງ່າຍຂຶ້ນ!
ເພື່ອເຮັດການທົດແທນຈໍານວນຫລາຍໃນແຜ່ນວຽກຂອງທ່ານ, ໃຫ້ໄປທີ່ແຖບ Ablebits Data ແລະຄລິກ Substring Tools > ແທນທີ່ສະຕຣິງຍ່ອຍ .
ກ່ອງໂຕ້ຕອບ ປ່ຽນສະຕຣິງຍ່ອຍ ຈະປາກົດຂຶ້ນເພື່ອຂໍໃຫ້ເຈົ້າກໍານົດຂອບເຂດ ແຫຼ່ງຂໍ້ມູນ ແລະ Substrings range.
ດ້ວຍສອງໄລຍະທີ່ເລືອກ, ຄລິກທີ່ປຸ່ມ Replace ແລະຊອກຫາຜົນໄດ້ຮັບໃນຖັນໃໝ່ທີ່ໃສ່ທາງຂວາ. ຂອງຂໍ້ມູນຕົ້ນສະບັບ. ແມ່ນແລ້ວ, ມັນງ່າຍຫຼາຍ!
ເຄັດລັບ. ກ່ອນທີ່ຈະຄລິກ ແທນທີ່ , ມີສິ່ງຫນຶ່ງທີ່ສໍາຄັນສໍາລັບທ່ານທີ່ຈະພິຈາລະນາ - ປ່ອງ Case-sensitive . ໃຫ້ແນ່ໃຈວ່າເລືອກມັນຖ້າທ່ານຕ້ອງການຈັດການກັບຕົວພິມໃຫຍ່ແລະຕົວພິມນ້ອຍເປັນຕົວອັກສອນທີ່ແຕກຕ່າງກັນ. ໃນຕົວຢ່າງນີ້, ພວກເຮົາຫມາຍຕິກທາງເລືອກນີ້ເພາະວ່າພວກເຮົາພຽງແຕ່ຕ້ອງການປ່ຽນຕົວພິມໃຫຍ່ແລະປ່ອຍໃຫ້ສາຍຍ່ອຍເຊັ່ນ "fr", "uk", ຫຼື "ak" ພາຍໃນຄໍາສັບອື່ນ intact.
ຫາກທ່ານຢາກຮູ້ຢາກຮູ້ສິ່ງທີ່ສາມາດປະຕິບັດເປັນຊຸດອື່ນໆໄດ້ໃນສະຕຣິງ, ໃຫ້ກວດເບິ່ງເຄື່ອງມືຍ່ອຍອື່ນໆທີ່ລວມຢູ່ໃນ Ultimate Suite ຂອງພວກເຮົາ. ຫຼືດີກວ່າ, ດາວໂຫລດເວີຊັນການປະເມີນຂ້າງລຸ່ມນີ້ ແລະລອງໃຊ້ເບິ່ງ!
ນັ້ນແມ່ນວິທີຊອກຫາ ແລະປ່ຽນແທນ.ຫຼາຍຄໍາແລະຕົວອັກສອນໃນເວລາດຽວກັນໃນ Excel. ຂ້ອຍຂໍຂອບໃຈສຳລັບການອ່ານ ແລະຫວັງວ່າຈະໄດ້ພົບເຈົ້າໃນບລັອກຂອງພວກເຮົາໃນອາທິດໜ້າ!
ມີໃຫ້ດາວໂຫຼດ
ຫຼາຍອັນທີ່ຊອກຫາ ແລະປ່ຽນແທນໃນ Excel (ໄຟລ໌ .xlsm)
Ultimate Suite 14 -day ສະບັບທີ່ເຮັດວຽກເຕັມຮູບແບບ (ໄຟລ໌ .exe)
ຊື່.ເພື່ອເຮັດມັນໃຫ້ສຳເລັດ, ໃຫ້ໃສ່ຄ່າເກົ່າໃນ D2:D4 ແລະຄ່າໃໝ່ໃນ E2:E4 ດັ່ງທີ່ສະແດງຢູ່ໃນຮູບໜ້າຈໍຂ້າງລຸ່ມນີ້. ແລະຫຼັງຈາກນັ້ນ, ເອົາສູດຂ້າງລຸ່ມນີ້ໃສ່ໃນ B2 ແລະກົດ Enter:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)
... ແລະທ່ານຈະເຮັດການທົດແທນທັງຫມົດໃນເວລາດຽວກັນ:
ກະລຸນາຮັບຊາບວ່າ, ວິທີການຂ້າງເທິງນີ້ໃຊ້ໄດ້ໃນ Excel 365 ທີ່ຮອງຮັບ dynamic arrays ເທົ່ານັ້ນ.
ໃນຮຸ່ນກ່ອນໄດນາມິກຂອງ Excel 2019, Excel 2016 ແລະກ່ອນໜ້ານັ້ນ, ສູດຕ້ອງເປັນ. ຂຽນສໍາລັບຕາລາງເທິງສຸດ (B2), ແລະຫຼັງຈາກນັ້ນຄັດລອກໄປຫາຕາລາງຂ້າງລຸ່ມນີ້:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)
ກະລຸນາເອົາໃຈໃສ່ວ່າ, ໃນກໍລະນີນີ້, ພວກເຮົາລັອກຄ່າທົດແທນດ້ວຍການອ້າງອີງເຊນຢ່າງແທ້ຈິງ, ດັ່ງນັ້ນ. ພວກມັນຈະບໍ່ປ່ຽນແປງເມື່ອສຳເນົາສູດລົງ.
ໝາຍເຫດ. ຟັງຊັນ SUBSTITUTE ແມ່ນ ຕົວພິມນ້ອຍໃຫຍ່ , ຊຶ່ງຫມາຍຄວາມວ່າທ່ານຄວນພິມຄ່າເກົ່າ ( old_text ) ໃນຕົວພິມຕົວອັກສອນດຽວກັນກັບທີ່ພວກມັນປາກົດຢູ່ໃນຂໍ້ມູນຕົ້ນສະບັບ.
ງ່າຍເທົ່າທີ່ຈະເປັນໄປໄດ້, ວິທີການນີ້ມີຂໍ້ບົກຜ່ອງອັນໃຫຍ່ຫຼວງ - ເມື່ອທ່ານມີຫຼາຍສິບລາຍການທີ່ຈະປ່ຽນແທນ, ຟັງຊັນທີ່ຊ້ອນກັນຈະກາຍເປັນເລື່ອງຍາກທີ່ຈະຈັດການ.
ຂໍ້ໄດ້ປຽບ : ງ່າຍ - ການປະຕິບັດ; ຮອງຮັບໃນ Excel ທັງໝົດ
ຂໍ້ບົກພ່ອງ : ດີທີ່ສຸດເພື່ອໃຊ້ໃນຈຳນວນຈຳກັດຂອງການຊອກຫາ/ແທນທີ່ຄ່າ
ຄົ້ນຫາ ແລະແທນທີ່ຫຼາຍລາຍການດ້ວຍ XLOOKUP
ໃນສະຖານະການໃນເວລາທີ່ທ່ານກໍາລັງຊອກຫາເພື່ອປ່ຽນແທນ ເນື້ອໃນເຊລທັງໝົດ , ບໍ່ແມ່ນສ່ວນຂອງມັນ, ຟັງຊັນ XLOOKUP ມາພ້ອມໆກັນ.
ມາເບິ່ງນຳກັນເລີຍ.ບອກວ່າທ່ານມີລາຍຊື່ປະເທດຢູ່ໃນຖັນ A ແລະມີຈຸດປະສົງເພື່ອປ່ຽນຕົວຫຍໍ້ທັງຫມົດດ້ວຍຊື່ເຕັມທີ່ສອດຄ້ອງກັນ. ເຊັ່ນດຽວກັນກັບຕົວຢ່າງທີ່ຜ່ານມາ, ທ່ານເລີ່ມຕົ້ນດ້ວຍການໃສ່ລາຍການ "ຊອກຫາ" ແລະ "ແທນທີ່" ໃນຖັນແຍກຕ່າງຫາກ (D ແລະ E ຕາມລໍາດັບ), ແລະຫຼັງຈາກນັ້ນໃສ່ສູດນີ້ໃນ B2:
=XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)
ແປຈາກພາສາ Excel ເປັນພາສາຂອງມະນຸດ, ນີ້ແມ່ນສິ່ງທີ່ສູດເຮັດ:
ຄົ້ນຫາຄ່າ A2 (lookup_value) ໃນ D2:D4 (lookup_array) ແລະສົ່ງຜົນການຈັບຄູ່ຈາກ E2:E4 (return_array). ຖ້າບໍ່ພົບ, ດຶງຄ່າຕົ້ນສະບັບຈາກ A2.
ຄລິກສອງເທື່ອໃສ່ຕົວຈັບການຕື່ມຂໍ້ມູນເພື່ອເອົາສູດການຄັດລອກໄປໃສ່ຕາລາງຂ້າງລຸ່ມ, ແລະຜົນໄດ້ຮັບຈະບໍ່ເຮັດໃຫ້ທ່ານລໍຖ້າ:
ເນື່ອງຈາກຟັງຊັນ XLOOKUP ມີພຽງແຕ່ຢູ່ໃນ Excel 365, ສູດຂ້າງເທິງຈະບໍ່ເຮັດວຽກໃນຮຸ່ນກ່ອນຫນ້າ. ແນວໃດກໍ່ຕາມ, ທ່ານສາມາດລອກແບບພຶດຕິກໍານີ້ໄດ້ຢ່າງງ່າຍດາຍດ້ວຍການລວມກັນຂອງ IFERROR ຫຼື IFNA ແລະ VLOOKUP:
=IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)
ໝາຍເຫດ. ບໍ່ເຫມືອນກັບ SUBSTITUTE, ຟັງຊັນ XLOOKUP ແລະ VLOOKUP ແມ່ນ ບໍ່ແມ່ນຕົວພິມນ້ອຍໃຫຍ່ , ຊຶ່ງຫມາຍຄວາມວ່າພວກເຂົາຊອກຫາຄ່າການຊອກຫາໂດຍບໍ່ສົນໃຈຕົວພິມໃຫຍ່. ຕົວຢ່າງ, ສູດຂອງພວກເຮົາຈະແທນທີ່ທັງສອງ FR ແລະ fr ດ້ວຍ ຝຣັ່ງ .
ຂໍ້ໄດ້ປຽບ : ການໃຊ້ງານຜິດປົກກະຕິຂອງຟັງຊັນປົກກະຕິ; ເຮັດວຽກຢູ່ໃນທຸກລຸ້ນ Excel
ຂໍ້ບົກພ່ອງ : ເຮັດວຽກໃນລະດັບເຊລ, ບໍ່ສາມາດແທນທີ່ບາງສ່ວນຂອງເນື້ອໃນເຊລໄດ້
ການທົດແທນຫຼາຍອັນໂດຍໃຊ້ຟັງຊັນ LAMBDA recursive
ສໍາລັບ Microsoft365 ຜູ້ຈອງ, Excel ສະຫນອງຫນ້າທີ່ພິເສດທີ່ອະນຸຍາດໃຫ້ສ້າງຫນ້າທີ່ກໍາຫນົດເອງໂດຍໃຊ້ພາສາສູດພື້ນເມືອງ. ແມ່ນແລ້ວ, ຂ້ອຍເວົ້າກ່ຽວກັບ LAMBDA. ຄວາມງາມຂອງວິທີການນີ້ແມ່ນວ່າມັນສາມາດປ່ຽນສູດທີ່ມີຄວາມຍາວແລະສະລັບສັບຊ້ອນຫຼາຍເປັນແບບຫນາແຫນ້ນແລະງ່າຍດາຍ. ຍິ່ງໄປກວ່ານັ້ນ, ມັນຊ່ວຍໃຫ້ທ່ານສ້າງຫນ້າທີ່ຂອງຕົນເອງທີ່ບໍ່ມີຢູ່ໃນ Excel, ບາງສິ່ງບາງຢ່າງທີ່ເຄີຍເປັນໄປໄດ້ພຽງແຕ່ກັບ VBA.
ສໍາລັບຂໍ້ມູນລາຍລະອຽດກ່ຽວກັບການສ້າງແລະນໍາໃຊ້ຟັງຊັນ LAMBDA ແບບກໍານົດເອງ, ກະລຸນາກວດເບິ່ງບົດແນະນໍານີ້: ວິທີການ ເພື່ອຂຽນຟັງຊັນ LAMBDA ໃນ Excel. ທີ່ນີ້, ພວກເຮົາຈະປຶກສາຫາລືສອງສາມຕົວຢ່າງການປະຕິບັດ.
ຂໍ້ໄດ້ປຽບ : ຜົນໄດ້ຮັບແມ່ນເປັນ elegant ແລະເຮັດໃຫ້ປະລາດຟັງຊັນການນໍາໃຊ້ງ່າຍດາຍ, ບໍ່ວ່າຈໍານວນຂອງຄູ່ທົດແທນ
ຂໍ້ເສຍ : ມີຢູ່ໃນ Excel 365 ເທົ່ານັ້ນ; workbook-specific ແລະບໍ່ສາມາດນໍາໃຊ້ຄືນໃຫມ່ໃນ workbooks ທີ່ແຕກຕ່າງກັນ
ຕົວຢ່າງ 1. ຄົ້ນຫາແລະທົດແທນຫຼາຍຄໍາສັບຕ່າງໆ / ສະຕຣິງໃນເວລາດຽວ
ເພື່ອທົດແທນການຫຼາຍຄໍາສັບຕ່າງໆຫຼືຂໍ້ຄວາມໃນດຽວ, ພວກເຮົາໄດ້ສ້າງແບບກໍານົດເອງ ຟັງຊັນ LAMBDA, ຊື່ວ່າ MultiReplace , ເຊິ່ງສາມາດເອົາໜຶ່ງໃນແບບຟອມເຫຼົ່ານີ້:
=LAMBDA(text, old, new, IF(old"", MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0)), text))
ຫຼື
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))))
ທັງສອງແມ່ນ recursive ຫນ້າທີ່ເອີ້ນຕົວເອງ. ຄວາມແຕກຕ່າງແມ່ນພຽງແຕ່ໃນວິທີການສ້າງຈຸດອອກ. ຖ້າຖືກຕ້ອງ, ຟັງຊັນ MultiReplace ຖືກເອີ້ນ. ຖ້າ FALSE, ຟັງຊັນສົ່ງກັບ text ມັນເປັນຮູບແບບປັດຈຸບັນຂອງມັນ ແລະອອກ.
ສູດທີສອງໃຊ້ເຫດຜົນແບບປີ້ນກັບກັນ: ຖ້າ old ຫວ່າງເປົ່າ (old=""), ຫຼັງຈາກນັ້ນກັບຄືນ text ແລະອອກ; ຖ້າບໍ່ດັ່ງນັ້ນໃຫ້ໂທຫາ MultiReplace .
ສ່ວນທີ່ຍາກທີ່ສຸດແມ່ນສຳເລັດແລ້ວ! ສິ່ງທີ່ເຫຼືອໄວ້ໃຫ້ທ່ານເຮັດຄືການຕັ້ງຊື່ຟັງຊັນ MultiReplace ໃນຕົວຈັດການຊື່ ດັ່ງທີ່ສະແດງຢູ່ໃນຮູບໜ້າຈໍຂ້າງລຸ່ມນີ້. ສຳລັບຂໍ້ແນະນຳລະອຽດ, ກະລຸນາເບິ່ງວິທີຕັ້ງຊື່ຟັງຊັນ LAMBDA.
ເມື່ອຟັງຊັນໄດ້ຮັບຊື່ແລ້ວ, ທ່ານສາມາດໃຊ້ມັນໄດ້ຄືກັບຟັງຊັນອື່ນໆທີ່ສ້າງມາ.
ອັນໃດກໍໄດ້ຂອງສອງສູດການແປທີ່ທ່ານເລືອກ, ຈາກທັດສະນະຂອງຜູ້ໃຊ້ສຸດທ້າຍ, syntax ແມ່ນງ່າຍດາຍເຊັ່ນນີ້:
MultiReplace(ຂໍ້ຄວາມ, ເກົ່າ, ໃຫມ່)ຢູ່ໃສ:
- ຂໍ້ຄວາມ - ແຫຼ່ງຂໍ້ມູນ
- ເກົ່າ - ຄ່າທີ່ຈະຊອກຫາ
- ໃໝ່ - ຄ່າທີ່ຈະແທນທີ່ດ້ວຍ
ຍົກຕົວຢ່າງກ່ອນໜ້ານີ້ອີກໜ້ອຍໜຶ່ງ, ໃຫ້ແທນທີ່ບໍ່ພຽງແຕ່ຕົວຫຍໍ້ຂອງປະເທດເທົ່ານັ້ນ ແຕ່ຕົວຫຍໍ້ຂອງລັດນຳ. ສໍາລັບການນີ້, ພິມຕົວຫຍໍ້ ( old ຄ່າ) ໃນຖັນ D ເລີ່ມຕົ້ນໃນ D2 ແລະຊື່ເຕັມ ( ໃຫມ່ ຄ່າ) ໃນຖັນ E ເລີ່ມຕົ້ນໃນ E2.
ໃນ B2, ໃສ່ຟັງຊັນ MultiReplace:
=MultiReplace(A2:A10, D2, E2)
ກົດ Enter ແລະເພີດເພີນກັບຜົນໄດ້ຮັບ :)
ສູດນີ້ເຮັດວຽກແນວໃດ
ຂໍ້ຄຶດໃນການເຂົ້າໃຈສູດແມ່ນເຂົ້າໃຈການເອີ້ນຄືນ. ນີ້ອາດຈະສຽງສັບສົນ, ແຕ່ຫຼັກການແມ່ນຂ້ອນຂ້າງງ່າຍດາຍ. ກັບແຕ່ລະຄົນiteration, ຫນ້າທີ່ recursive ແກ້ໄຂບັນຫາຫນຶ່ງຕົວຢ່າງຂະຫນາດນ້ອຍຂອງບັນຫາໃຫຍ່ກວ່າ. ໃນກໍລະນີຂອງພວກເຮົາ, ຟັງຊັນ MultiReplace loops ຜ່ານຄ່າເກົ່າ ແລະໃຫມ່ ແລະ, ດ້ວຍແຕ່ລະ loop, ດໍາເນີນການຫນຶ່ງທົດແທນ:
MultiReplace (SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))
ເຊັ່ນດຽວກັນກັບຟັງຊັນ SUBSTITUTE ຊ້ອນກັນ, ຜົນຂອງການ SUBSTITUTE ກ່ອນໜ້າຈະກາຍເປັນພາຣາມິເຕີ ຂໍ້ຄວາມ ສຳລັບການປ່ຽນຕົວຕໍ່ໄປ. ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ໃນແຕ່ລະການໂທຕໍ່ໄປຂອງ MultiReplace , ຟັງຊັນ SUBSTITUTE ດໍາເນີນການບໍ່ແມ່ນຂໍ້ຄວາມຕົ້ນສະບັບ, ແຕ່ຜົນຂອງການໂທທີ່ຜ່ານມາ.
ເພື່ອຈັດການລາຍການທັງຫມົດຢູ່ໃນ <1. ລາຍຊື່>old , ພວກເຮົາເລີ່ມຕົ້ນດ້ວຍຕາລາງເທິງສຸດ, ແລະໃຊ້ຟັງຊັນ OFFSET ເພື່ອຍ້າຍ 1 ແຖວລົງລຸ່ມດ້ວຍແຕ່ລະການໂຕ້ຕອບ:
OFFSET(old, 1, 0)
ອັນດຽວກັນແມ່ນເຮັດສໍາລັບ new list:
OFFSET(new, 1, 0)
ສິ່ງສຳຄັນແມ່ນການໃຫ້ ຈຸດອອກ ເພື່ອປ້ອງກັນການເອີ້ນຄືນຈາກການໂທໄປຕະຫຼອດ. ມັນເຮັດໄດ້ດ້ວຍການຊ່ວຍເຫຼືອຂອງຟັງຊັນ IF - ຖ້າເຊລ old ຫວ່າງເປົ່າ, ຟັງຊັນຈະສົ່ງກັບ ຂໍ້ຄວາມ ໃນຮູບແບບປະຈຸບັນຂອງມັນ ແລະອອກຈາກ:
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(…)))
ຫຼື
=LAMBDA(text, old, new, IF(old"", MultiReplace(…), text))
ຕົວຢ່າງ 2. ແທນທີ່ຫຼາຍຕົວອັກສອນໃນ Excel
ໂດຍຫຼັກການ, ຟັງຊັນ MultiReplace ທີ່ສົນທະນາໃນຕົວຢ່າງທີ່ຜ່ານມາສາມາດ ຈັດການຕົວອັກສອນແຕ່ລະຕົວເຊັ່ນດຽວກັນ, ສະໜອງໃຫ້ແຕ່ລະຕົວອັກສອນເກົ່າ ແລະ ໃໝ່ຖືກໃສ່ໃນຕາລາງແຍກຕ່າງຫາກ, ຄືກັບຕົວຫຍໍ້ ແລະຊື່ເຕັມໃນຮູບໜ້າຈໍຂ້າງເທິງ.
ຖ້າທ່ານຕ້ອງການໃສ່ຕົວເກົ່າແທນ.ຕົວອັກສອນໃນຕາລາງໜຶ່ງ ແລະຕົວອັກສອນໃໝ່ໃນເຊລອື່ນ ຫຼືພິມພວກມັນໂດຍກົງໃນສູດຄຳນວນ, ຈາກນັ້ນເຈົ້າສາມາດສ້າງຟັງຊັນແບບກຳນົດເອງອື່ນ, ຊື່ວ່າ ReplaceChars , ໂດຍໃຊ້ໜຶ່ງໃນສູດຄຳນວນເຫຼົ່ານີ້:
=LAMBDA(text, old_chars, new_chars, IF(old_chars"", ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1)), text))
ຫຼື
=LAMBDA(text, old_chars, new_chars, IF(old_chars="", text, ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))))
ຢ່າລືມຕັ້ງຊື່ຟັງຊັນ Lambda ໃໝ່ຂອງເຈົ້າຢູ່ໃນ Name Manager ຕາມປົກກະຕິ:
ແລະຟັງຊັນແບບກຳນົດເອງໃໝ່ຂອງເຈົ້າພ້ອມໃຫ້ໃຊ້ແລ້ວ:
ReplaceChars(ຂໍ້ຄວາມ, old_chars, new_chars)ຢູ່ໃສ:
- ຂໍ້ຄວາມ - ສະຕຣິງຕົ້ນສະບັບ
- ເກົ່າ - ຕົວອັກສອນທີ່ຕ້ອງຄົ້ນຫາ
- ໃໝ່ - ຕົວອັກສອນທີ່ຈະແທນທີ່ດ້ວຍ
ເພື່ອໃຫ້ມັນທົດສອບພາກສະໜາມ, ໃຫ້ເຮັດບາງສິ່ງບາງຢ່າງທີ່ມັກຈະປະຕິບັດຢູ່ໃນຂໍ້ມູນທີ່ນໍາເຂົ້າ - ແທນທີ່ຄໍາເວົ້າອັດສະລິຍະແລະ apostrophes ອັດສະລິຍະດ້ວຍວົງຢືມຊື່ແລະ apostrophes ກົງ.
ທໍາອິດ, ພວກເຮົາໃສ່ຄໍາເວົ້າອັດສະລິຍະແລະ apostrophe ອັດສະລິຍະໃນ D2, ວົງຢືມຊື່ແລະ apostrophe ກົງໃນ E2 , ແຍກຕົວອັກສອນທີ່ມີຍະຫວ່າງເພື່ອໃຫ້ສາມາດອ່ານໄດ້ດີຂຶ້ນ. (ດັ່ງທີ່ພວກເຮົາໃຊ້ຕົວຂັ້ນດຽວກັນໃນທັງສອງຕາລາງ, ມັນຈະບໍ່ມີຜົນກະທົບໃດໆຕໍ່ຜົນໄດ້ຮັບ - Excel ພຽງແຕ່ຈະປ່ຽນພື້ນທີ່ທີ່ມີຊ່ອງຫວ່າງ.)
ຫຼັງຈາກນັ້ນ, ພວກເຮົາໃສ່ສູດນີ້ໃນ B2:
=ReplaceChars(A2:A4, D2, E2)
ແລະໄດ້ຜົນແນ່ນອນທີ່ພວກເຮົາກໍາລັງຊອກຫາ:
ມັນຍັງສາມາດພິມຕົວອັກສອນໂດຍກົງໃນສູດໄດ້. ໃນກໍລະນີຂອງພວກເຮົາ, ພຽງແຕ່ຈື່ໄວ້ວ່າ "ເຮັດຊ້ໍາ" ວົງຢືມກົງເຊັ່ນນີ້:
=ReplaceChars(A2:A4, "“ ” ’", """ "" '")
ສູດນີ້ເຮັດວຽກແນວໃດ
The ReplaceChars ຟັງຊັນຮອບວຽນຜ່ານສະຕຣິງ old_chars ແລະ new_chars ແລະເຮັດການປ່ຽນແທນເທື່ອລະອັນ ເລີ່ມຕົ້ນຈາກຕົວອັກສອນທຳອິດຢູ່ເບື້ອງຊ້າຍ. ພາກສ່ວນນີ້ແມ່ນເຮັດໄດ້ໂດຍຟັງຊັນ SUBSTITUTE:
SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars))
ດ້ວຍການເຮັດຊ້ຳແຕ່ລະອັນ, ຟັງຊັນ RIGHT ຈະຖອດຕົວອັກສອນໜຶ່ງຕົວອອກຈາກຊ້າຍຂອງທັງສອງ old_chars ແລະ new_chars ສະຕຣິງ, ເພື່ອໃຫ້ LEFT ສາມາດດຶງເອົາຕົວອັກສອນຄູ່ຕໍ່ໄປເພື່ອປ່ຽນແທນ:
ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))
ກ່ອນແຕ່ລະການໂທ recursive, ຟັງຊັນ IF ຈະປະເມີນຄ່າ old_chars . . ຖ້າມັນບໍ່ຫວ່າງ, ຟັງຊັນເອີ້ນຕົວມັນເອງ. ທັນທີທີ່ຕົວລະຄອນສຸດທ້າຍຖືກແທນທີ່, ຂະບວນການເຮັດຊ້ຳຈະສິ້ນສຸດ, ສູດຄຳນວນຈະສົ່ງກັບ ຂໍ້ຄວາມ ໃນຮູບແບບປະຈຸບັນ ແລະອອກມາ.
ໝາຍເຫດ. ເນື່ອງຈາກວ່າຟັງຊັນ SUBSTITUTE ທີ່ໃຊ້ໃນສູດຫຼັກຂອງພວກເຮົາແມ່ນ ຕົວພິມນ້ອຍໃຫຍ່ , ທັງ Lambdas ( MultiReplace ແລະ ReplaceChars ) ປະຕິບັດຕົວພິມໃຫຍ່ ແລະຕົວພິມນ້ອຍເປັນຕົວອັກສອນທີ່ແຕກຕ່າງກັນ.
Mass ຊອກຫາ ແລະແທນທີ່ດ້ວຍ UDF
ໃນກໍລະນີທີ່ຟັງຊັນ LAMBDA ບໍ່ມີຢູ່ໃນ Excel ຂອງທ່ານ, ທ່ານສາມາດຂຽນຟັງຊັນທີ່ຜູ້ໃຊ້ກຳນົດເອງເພື່ອທົດແທນຫຼາຍອັນໃນແບບດັ້ງເດີມໂດຍໃຊ້ VBA.
ເພື່ອຈໍາແນກ UDF ຈາກຟັງຊັນ MultiReplace ທີ່ກໍານົດໂດຍ LAMBDA, ພວກເຮົາຈະຕັ້ງຊື່ມັນແຕກຕ່າງກັນ, ເວົ້າວ່າ MassReplace . ລະຫັດຂອງຟັງຊັນມີດັ່ງນີ້:
Function MassReplace(InputRng As Range, FindRng As Range, ReplaceRng As Range) As Variant () DimarRes() As Variant 'array ເພື່ອເກັບຜົນໄດ້ຮັບ Dim arSearchReplace(), sTmp As String 'array ບ່ອນທີ່ຈະເກັບຮັກສາຄູ່ຊອກຫາ/ແທນທີ່, string ຊົ່ວຄາວ Dim iFindCurRow, cntFindRows As Long 'index ຂອງແຖວປັດຈຸບັນຂອງ SearchReplace array, ນັບ of rows Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long 'index of the current row in the source range, index of the current column in the source range, count of row, count of columns cntInputRows = InputRng.Rows.Count cntInputCols = InputRng .Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes(1 To cntInputRows, 1 To cntInputCols) ReDim arSearchReplace(1 To cntFindRows, 1 ເຖິງ 2) 'ການກະກຽມອາເຣຂອງການຊອກຫາ / ແທນທີ່ຄູ່ສໍາລັບ iFind1Replace Curnt(cntInputCols). iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Value arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Next 'ການຊອກຫາ ແລະປ່ຽນແທນໃນຂອບເຂດແຫຼ່ງຂອງ iInputCurRow =InputCurRow. 1 ເພື່ອ cntInputCols sTm p = InputRng.Cells(iInputCurRow, iInputCurCol).Value 'ການປ່ຽນຄູ່ຊອກຫາ/ແທນທີ່ທັງໝົດໃນແຕ່ລະເຊລ ສຳລັບ iFindCurRow = 1 ເພື່ອ cntFindRows sTmp = Replace(sTmp, arSearchReplace(iFindCurRow, 1), arsearch2(Search) Next) (iInputCurRow, iInputCurCol) = sTmp Next Next MassReplace = arRes End Functionເຊັ່ນດຽວກັນກັບຟັງຊັນທີ່ກຳນົດໄວ້ LAMBDA, UDFs ແມ່ນ workbook-wide . ນັ້ນ ໝາຍ ຄວາມວ່າ