Функсияи FIND дар VBA: Чӣ тавр онро истифода бурдан мумкин аст?

Мехоҳед, ки чӣ тавр истифода бурданро омӯзед Функсияи FIND дар VBA🇧🇷 Пас шумо дар ҷои дуруст ҳастед!

Кӣ имконоти Ҷустуҷӯро дар Excel намедонад? Агар шумо муддате бо Excel кор карда бошед, эҳтимол шумо функсияи Ҷустуҷӯ ё калиди миёнбури маъмули Ctrl + L-ро барои ҷойгир кардани калима ё порчаи мундариҷае, ки мехоҳед дар тамоми варақаи кории худ ҷустуҷӯ кунед, истифода кардаед. мисли тамоми дафтарчаи мехнатй.

Инчунин, дар VBA мо функсияе дорем, ки FIND ном дорад, ки метавонад ба мо дар ёфтани арзиши ҷустуҷӯи мо кӯмак кунад.

Барои гирифтани маълумоти бештар дар бораи ин хусусият тавассути мисолҳои амалӣ тафсилоти зеринро пайгирӣ кунед.

Функсияи FIND дар VBA чӣ гуна кор мекунад?

Функсияи Excel VBA FIND арзиши мушаххасро дар доираи муайян ҷустуҷӯ мекунад. Аввалин пайдоиши ин арзишро меҷӯяд ва агар пайдо шавад, функсия чашмакеро, ки онро дар бар мегирад, бармегардонад. Аммо, агар ягон мувофиқат пайдо нашавад, функсия чизе барнамегардонад. Функсияи VBA FIND метавонад мувофиқати дақиқ ё қисман баргардонад.

Масалан, рамзи зерин матнро ҷустуҷӯ мекунад "Сан Пабло» дар фосила А1: А10 дар "Варақаи корӣ 1🇧🇷

Бо варақҳо("Варақ1").Дипазон("A1:A10")
Танзими Rng = .Find(Чӣ: = "Сан-Паулу")

Мақсади истифодаи функсияи FIND дар VBA дарёфти арзиши дилхоҳ дар маҷмӯи додаҳо мебошад. Бо рамзи VBA, шумо метавонед вазифаи дарёфти арзишҳоро дар Excel автоматӣ кунед.

Синтаксиси функсияи VBA FIND

Синтаксиси функсияи VBA FIND чунин эълон карда мешавад:

ифода.Наёфт(Чӣ, Баъд аз, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

Дар куҷо:

ифода: объекти диапазон аст, ки пеш аз функсияи FIND дар рамзи VBA ҷойгир аст. Диапазони ҷустуҷӯ метавонад як ё якчанд сатрҳо, сутунҳо ё тамоми ҷадвали электронӣ бошад. Функсияи VBA FIND далелҳои зеринро қабул мекунад:

  • Кадом: Ин арзишест, ки бояд ҷустуҷӯ кунад. Он метавонад рақамӣ, матнӣ ё ҳама гуна намуди дигари Excel бошад. Ин далел бо варианти Ҷустуҷӯи "ёфтан ва иваз кардан” аз Excel.
  • Баъд аз: Ячейкаеро, ки ҷустуҷӯ аз он сар мешавад, нишон медиҳад. Он ҳамчун як истинод ба ячейка ворид карда мешавад. Агар ин далел партофта шавад, ҷустуҷӯ пас аз чашмаки кунҷи чапи болоии диапазони ҷустуҷӯ оғоз мешавад.
  • Назар андохтан: Ин макон (ё маълумот) аст, ки дар он арзиш бояд ҷустуҷӯ карда шавад. Он метавонад шарҳ (xlComments), формула (xlFormulas) ё арзиш (xlValues) бошад. Арзиши пешфарз барои ин аргумент xlFormulas аст. Инчунин, ин далел бо варианти Ҷустуҷӯи "ёфтан ва иваз кардан” аз Excel.
  • Нигоҳ кунед: Ин далел қарор медиҳад, ки оё бо тамоми мундариҷаи ячейка (мувофиқи дақиқ) ё як қисми мундариҷаи чашмак (қисман мувофиқат) мувофиқат мекунад. Константаҳо мутаносибан xlWhole ва xlPart барои мувофиқати дақиқ ва қисман мебошанд. Арзиши пешфарз барои ин аргумент xlPart аст.
  • Тартиби ҷустуҷӯ: Ин далел тартиби ҷустуҷӯро пешниҳод мекунад. Шумо метавонед муайян кунед, ки ҷустуҷӯ дар сатрҳо (xlByRows) ё сутунҳо (xlByColumns) хоҳад буд. Арзиши пешфарз барои ин аргумент xlByRows аст. Инчунин, ин далел бо варианти Ҷустуҷӯи "ёфтан ва иваз кардан” аз Excel.
  • Суроғаи ҷустуҷӯ: Суроғаеро, ки дар он ҷустуҷӯ анҷом дода мешавад, нишон медиҳад. Шумо метавонед бо доимии xlNext поён ё ба чашмаки оянда ҷустуҷӯ кунед. Интихобан, шумо метавонед ба ақиб (боло) ё дар чашмаки қаблӣ бо доимии xlPrevious ҷустуҷӯ кунед. Арзиши пешфарз барои ин аргумент xlNext аст.
  • Ҳолати мувофиқат: Ин далел муайян мекунад, ки ҷустуҷӯ бояд ҳассос ба ҳарфҳо бошад ё не. Агар ҷустуҷӯ ҳассос ба ҳарфи хурд бошад, ин аргумент ҳамчун ҳақиқӣ (TRUE) муайян карда мешавад, дар акси ҳол он нодуруст аст (FALSE). Арзиши пешфарз барои ин аргумент False аст.
  • MatchByte: Ин далел бояд истифода шавад, агар касе дастгирии забони дубайтиро насб ё интихоб карда бошад. Агар аломатҳои дубайтӣ ба аломатҳои дубайтӣ мувофиқ бошанд, бояд ҳамчун ҳақиқӣ муайян карда шаванд. Агар аломатҳои дубайтӣ бо эквивалентҳои якбайтии онҳо мувофиқат карда шаванд, бояд нодуруст нишон дода шавад.
  • формати ҷустуҷӯ: Нишон медиҳад, ки арзиши ҷустуҷӯ бояд дар формати мушаххас бошад (ба монанди ғафс ё курсив) ё не. Агар арзиши ҷустуҷӯ бояд техникаи форматкуниро риоя кунад, ин аргумент ҳамчун ҳақиқӣ муайян карда мешавад, дар акси ҳол дурӯғ. Қимати пешфарзии ин аргумент бардурӯғ аст (FALSE).

танҳо далел чӣ? зарур аст. Далелҳои дигар ихтиёрӣ мебошанд.

Функсияи FIND яке аз натиҷаҳои зеринро бармегардонад:

  • Агар мувофиқат пайдо шавад, функсия чашмаки аввалеро, ки арзиш ёфт мешавад, бармегардонад.
  • Агар ягон мувофиқат пайдо нашавад, функсия чизе барнамегардонад. Сабаб дар он аст, ки объекти функсия ба ҳеҷ чиз муқаррар карда нашудааст.

Интихобан, агар ягон мувофиқат пайдо нашавад, паёми фармоишӣ тавассути Функсияи қуттии паём метавонад баргардонида шавад (ба мисолҳои код нигаред).

Эзоҳ: 1: Ҷустуҷӯ пас аз чашмаки дар аргумент нишондодашуда оғоз мешавад. Баъд аз он ва то чашмаки охирини диапазони ҷустуҷӯ идома дорад. Агар арзиш то ин чашмаки охирин ёфт нашавад, ҷустуҷӯ аз нав аз чашмаки аввали диапазони ҷустуҷӯ то чашмаки дар аргумент нишондодашуда оғоз мешавад. Баъд аз он🇧🇷

Аз ин рӯ, ячейка дар аргумент нишон дода шудааст Баъд аз он он дар охири раванди ҷустуҷӯ ҷустуҷӯ карда мешавад. Барои тафсилоти бештар дар бораи истифодаи далел Баъд аз онба мисоли дуюми ин мақола нигаред.

Эзоҳ: 2: Ҳар дафъае, ки функсияи VBA FIND истифода мешавад, назар андохтан🇧🇷 Инак🇧🇷 тартиби ҷустуҷӯ y MatchByte Аз ин рӯ, агар ин арзишҳо ҳангоми истифодаи минбаъдаи функсия партофта шаванд, Excel арзишҳои қаблан захирашударо истифода мебарад. Аз ин рӯ, тавсия дода мешавад, ки далелҳои пешниҳодшуда ҳангоми ҷустуҷӯ бо истифода аз функсияи VBA FIND анҷом дода шаванд.

Функсияи FIND -ро дар Excel VBA чӣ гуна истифода бурдан мумкин аст?

Барои фаҳмидани истифодаи функсияи FIND дар VBA, мо дар зер якчанд мисолҳои амалиро ҷудо кардем.

Мисоли 1: Интихоби чашмак бо пайдоиши аввалини арзиши ҷустуҷӯ

Дар ин мисоли аввал, фарз мекунем, ки шумо рӯйхате доред, ки дорои баъзе номҳое мебошад, ки дар тасвири зер нишон дода шудааст ва шумо мехоҳед чашмакеро, ки ном дорад, паймоиш кунед ва интихоб кунед. pedro🇧🇷

Аз он ҷо, ин қадамҳоро иҷро кунед:

1. Дастрасӣ ба дастур Таҳиягар 🇧🇷 асосии визуалӣ🇧🇷 (Агар шумо дар Excel-и худ ҷадвали таҳиякунанда фаъол набошед, ин ҷо тафтиш кунед кадам ба кадам).

дастури таҳиягар

ду. Дар экрани VBA варақаи кории дилхоҳро аз менюи чап интихоб кунед. Дар ин мисол, мо интихоб мекунем Варақаи корӣ 1 ки варақаи корӣ аст, ки рӯйхати номҳоро дар бар мегирад.

3. Пас аз интихоби варақаи кории дилхоҳ, дар майдони тарафи рост, рамзи зеринро ворид кунед:

Чашмакро бо пайдоиши аввалини арзиши ҷустуҷӯшуда интихоб кунед

Sub LocateName()
Диапазон("A1:A10").Наёфт(Чӣ:="Питер").Интихоб кунед
End Sub
  • Аҳамият диҳед, ки дар коди дар боло зикршуда мо диапазонеро, ки мо ҷустуҷӯ дорем, зикр кардем (A1: A10🇧🇷
  • Пас аз зикри диапазон, нуқта (.) гузоред ва нависед ЁФТАН🇧🇷
  • Аввалин далели мо он чизест, ки мо меҷӯем. Барои таъкид кардани далел, мо метавонем далелро гузаронем чӣ:=ин барои муайян кардани кадом параметре, ки мо ба он ишора мекунем, муфид хоҳад буд.
  • Қисми ниҳоӣ пас аз ёфтани калимаест, ки мо чӣ кор кардан мехоҳем. Мо бояд калимаро интихоб кунем, бинобар ин далелро ҳамчун .Интихоб кунед🇧🇷
  • Сипас ин кодро бо истифода аз калид иҷро кунед F5 ё ба таври дастӣ тавре ки дар тасвири зер нишон дода шудааст, барои интихоби чашмаки аввалини дорои ном pedro🇧🇷

дар VBA ҷойгир кунед

Мисоли 2: Чашмакро бо пайдоиши дуюми арзиши ҷустуҷӯ интихоб кунед

Дар ин мисоли дуюм қайд кунед, ки тасвири зерин дорои баъзе номҳо дар диапазони A1:A10 мебошад. Аҳамият диҳед, ки номи "pedro” дар сутуни А ду маротиба пайдо мешавад.

Чашмакро бо пайдоиши дуюм интихоб кунед

Дар ин ҳолат, мо мехоҳем ҷустуҷӯ ва интихоб кунем ҳодисаи дуюм номи «Петр» дар сутуни А (яъне ячейкаи А7). Барои ин мо рамзи зеринро истифода мебарем:

Пайдоиши дуюми VBA-ро ёбед

Sub LocateName()
Диапазон("A1:A10").Наёфт(Чӣ:="Питер", Баъд аз:=Дипазон("A2")).-ро интихоб кунед
End Sub

Дар коди боло аҳамият диҳед, ки ҷустуҷӯ пас аз чашмаки A2 оғоз мешавад ва то чашмаки охирини сутуни A идома меёбад. Ин аз он сабаб аст, ки диапазони ҷустуҷӯ ҳамчун сутуни A (A1:A10) муайян шудааст.

Ҳамин тавр, азбаски ҷустуҷӯ дар чашмаки A3 оғоз мешавад, арзиши "pedro” дар ҳуҷайра аст A7 медиҳад"Ҷадвали электронӣ 2🇧🇷 Аз ин рӯ, ячейкаи A7 ҳангоми иҷрои код бо функсияи FIND интихоб карда мешавад.

Агар номи «pedro” дар ячейкаи A3 то чашмаки охирини сутуни А ёфт нашуд, ҷустуҷӯ боз аз чашмаки A1 оғоз мешавад ва ин дафъа дар чашмаки A2 ба охир мерасад. Аз ин рӯ, ҳуҷайрае, ки дар аргумент нишон дода шудааст "Баъд аз он” рост дар охири раванди ҷустуҷӯ ҷустуҷӯ карда мешавад.

Мисоли 3: Матнро тавассути муайян кардани баъзе аломатҳои он пайдо кунед

Барои ҷустуҷӯи матн бо нишон додани танҳо як қисми он, аргументро ворид кунед Инак ба монанди xlPart ё ин далелро сарфи назар кунед. Бо нобаёнӣ, функсияи FIND бо аломатҳои арзиши ҷустуҷӯ бо тамоми сатр мувофиқат мекунад. Он гоҳ он чашмакеро, ки тамоми ин сатрро дар бар мегирад, бармегардонад.

Ба мисоли зер нигаред:

Sub LocateName()
Диапазон("A1:A10"). Ҷустуҷӯ (Чӣ:="Ped", LookAt:=xlPart). Интихоб кунед
End Sub

Ин код аломатҳоро ҷустуҷӯ мекунад "Ped” дар диапазони A1:A25 аз “Shet3”. Чашмаки дорои арзиш баргардонида мешавад, ки ном дорад мукотибаи кисман🇧🇷 Ҳамин тавр, новобаста аз он ки аломатҳои арзиши ҷустуҷӯ дар аввал, миёна ё охири сатр ҷойгир шудаанд, Excel VBA мувофиқатро бармегардонад.

Шарҳ: доимӣ xlPart он метавонад аз рамз хориҷ карда шавад, зеро он арзиши пешфарзии функсияи FIND мебошад. Аммо агар ин далел муайян карда шуда бошад, боварӣ ҳосил кунед, ки он дар нохунакҳои дукарата дохил карда нашудааст.

Мисоли 4: Ҷустуҷӯи матн дар дохили шарҳ

Шумо инчунин метавонед функсияи VBA FIND-ро барои пайдо кардани матн дар дохили шарҳи ячейка дар Excel истифода баред.

Барои фаҳмиши беҳтар, ба мисоли зер нигаред, ки дар он мо варақаи корӣ дорем, ки дорои се ҳуҷайра бо шарҳҳо (бо секунҷаҳои сурх нишон дода шудааст). Аз ин мо мехоҳем матни "комиссия пардохта мешавад” дар дохили яке аз шарҳҳо ҷойгир шудааст. Дар ин ҳолат, мо рамзи зеринро истифода мебарем:

Зер Ҷойгир Шарҳ()
Диапазон("A1:B10"). Ҷустуҷӯ кунед(Чӣ:="Комиссия пардохт мекунад", LookIn:=xlComments).Интихоб кунед
End Sub

Матнро дар шарҳ пайдо кунед

Дар натиҷа, Excel танҳо чашмакеро интихоб мекунад, ки дар он шарҳе, ки матни он дар коди мо нишон дода шудааст, иборат аст.

Мисоли 5: Коркарди хато дар функсияи FIND дар VBA

Агар матне, ки мо ҷустуҷӯ мекунем, дар доираи додашуда набошад, VBA хатогиеро, ки дар зер нишон дода шудааст, бармегардонад:

хато 91

Барои пешгирӣ кардани ин хато, мо метавонем кодеро истифода барем, ки дар зер нишон дода шудааст:

Sub LocateName()
Натиҷа ҳамчун вариант

Дар бораи хатогии хатогӣ Next
Диапазон("A1:A10").Наёфт(Чӣ:="Cristina").Интихоб кунед
Дар хатогии GoTo 0

Натиҷа = ActiveCell.Value

Агар натиҷа = "" Пас
MsgBox "Арзише, ки шумо ҷустуҷӯ мекунед, дар доираи додашуда мавҷуд нест!"
Баромади зер
Агар End

End Sub

Дар коди дар боло зикршуда аҳамият диҳед, ки агар VBA арзишро пайдо кунад, он арзиши ёфтшударо намоиш медиҳад ё дар акси ҳол он паёмро ҳамчун " нишон медиҳад.Арзише, ки шумо ҷустуҷӯ мекунед, дар доираи додашуда мавҷуд нест🇧🇷

Барои маслиҳатҳои бештар дар бораи чӣ гуна ислоҳ кардани хатогиҳои VBA, мақоларо санҷед: Хатогиҳои Excel VBA: ҳама чизеро, ки шумо бояд донед!

Тафсилот барои ёдоварӣ

  • Функсияи FIND қисми моликияти RANGE аст ва шумо бояд пас аз интихоби танҳо диапазон FIND-ро истифода баред.
  • Дар функсияи FIND, аргументи аввал (чӣ?), плюс ҳама чизи дигар ихтиёрӣ аст.
  • Агар шумо арзиши пас аз ячейкаи мушаххасро пайдо кунед, шумо метавонед чашмакро дар параметр зикр кунед Баъд аз он аз синтаксиси ҷустуҷӯ.

Ҷадвали электрониро дар ин ҷо зеркашӣ кунед дорои мисолҳое, ки дар ин дарс пешниҳод шудаанд.

Инчунин маслиҳатҳои зерини Excel-ро санҷед:

Пас, шумо дар бораи функсияи FIND дар VBA чӣ фикр доред? Агар шумо ягон савол дошта бошед, шарҳи худро дар зер гузоред. Инчунин дар вебсайти мо маслиҳатҳои бештари Excel ва VBA-ро санҷед!

Томи Бэнкс
Мо аз шунидани фикри шумо хурсанд хоҳем шуд

ҷавоб гузоред

TechnoBreak | Пешниҳодҳо ва баррасиҳо
Logo
Фаъолсозии сабти ном дар танзимот - умумӣ
Сабади харид