نحوه یافتن رشته با VBA در اکسل (8 مثال)

  • این را به اشتراک بگذارید
Hugh West

پیاده سازی VBA موثرترین، سریع ترین و ایمن ترین روش برای اجرای هر عملیاتی در اکسل است. در این مقاله، ما به شما نشان خواهیم داد که چگونه با استفاده از VBA در اکسل، رشته های خاصی را در یک رشته داده شده دیگر پیدا کنید.

دانلود الگوی تمرین

شما می توانید الگوی تمرین رایگان Excel را از اینجا دانلود کنید.

VBA برای یافتن در String.xlsm

InStr Function

Microsoft Excel یک تابع داخلی به نام عملکرد InStr برای یافتن موقعیت رشته های خاص در یک رشته داده شده دارد.

InStr([start], string1, string2, [compare])

اینجا،

Arguments لازم/ اختیاری تعریف
شروع اختیاری موقعیت شروع جستجو.
  • به طور پیش فرض، تابع InStr موقعیت کاراکتر را با شمارش از 1 محاسبه می کند، نه از موقعیت شروع. بنابراین، در صورت تمایل می توانید این را خالی بگذارید.
string1 مورد نیاز رشته برای جستجو، رشته اصلی.
string2 مورد نیاز رشته جستجو در رشته اصلی .
مقایسه اختیاری تابع InStr به طور پیش فرض به حروف بزرگ و کوچک حساس است. اما اگر می‌خواهید یک InStr غیرحساس به حروف بزرگ و کوچک اجرا کنید، می‌توانید آرگومان را در اینجا برای انجام یک مقایسه خاص ارسال کنید. این استدلال می تواند به شرح زیر باشدمقادیر،
  • vbBinaryCompare -> مقایسه باینری را انجام می دهد، مقدار بازگشتی 0
  • vbTextCompare -> مقایسه متن را انجام می دهد، مقدار 1 را برمی گرداند
  • vbDatabaseCompare -> مقایسه پایگاه داده را انجام می دهد، مقدار 2 را برمی گرداند

به طور پیش فرض، InStr vbBinaryCompare را به عنوان آرگومان مقایسه می گیرد.

8 مثال ساده برای یافتن موقعیت رشته خاص در رشته داده شده با استفاده از VBA

بیایید چند مثال ساده برای بدست آوردن موقعیت رشته های خاص در یک رشته داده شده با استفاده از VBA .

1. VBA برای یافتن موقعیت متن در رشته

در زیر نمونه ای از InStr برای یافتن آمده است موقعیت یک متن در یک رشته.

  • Alt + F11 را روی صفحه کلید خود فشار دهید یا به برگه Developer -> Visual Basic برای باز کردن Visual Basic Editor .

  • در پنجره کد پاپ آپ، از نوار منو ، روی درج -> Module .

  • اکنون در پنجره کد، یک برنامه ساده InStr را در داخل VBA Sub بنویسید. رویه (به زیر مراجعه کنید).
8091

کد شما اکنون آماده اجرا است.

  • فشار دهید F5 در صفحه کلید خود یا از نوار منو Run -> Sub/UserForm را اجرا کنید. همچنین می‌توانید روی نماد کوچک Play در نوار منوی فرعی کلیک کنید تا ماکرو اجرا شود.

می‌بینید که جعبه پیام پاپ آپ به شما یک شماره می دهداعلام موقعیت متنی که می خواهید بررسی کنید.

توضیح:

رشته اصلی ما، " خوشبختی is a option ” یک جمله 21 حرفی (با فاصله) است و ما می خواستیم موقعیت متن “ choice ” را در آن رشته پیدا کنیم. متن " choice " از موقعیت شانزدهم رشته اصلی شروع شد، بنابراین شماره 16 را به عنوان خروجی در جعبه پیام دریافت کردیم.

2. VBA برای یافتن متن از یک موقعیت خاص در رشته

حالا بیایید دریابیم که اگر بخواهیم موقعیت را از یک عدد خاص بدست آوریم چه اتفاقی می افتد.

  • همانطور که قبل از آن، Visual Basic Editor را از برگه Developer باز کنید و Insert a Module را در پنجره کد باز کنید.
  • در در پنجره کد، یک برنامه ساده InStr که در بالا نشان داده شده است بنویسید و مقدار را در آرگومان start با توجه به موقعیتی که می خواهید متن خود را از آن بشمارید، ارسال کنید.
9565

  • بعد، کد را اجرا کنید .

میبینید که کادر پیام بازشو به شما یک عدد می دهد که موقعیت متن را نشان می دهد از یک موقعیت خاص شروع می شود که می خواهید بررسی کنید.

توضیح:

همانطور که قبلاً (از بحث فاز 1) می دانستیم که متن " انتخاب " از موقعیت 16 شروع شده است، بنابراین ما دو " را درج کردیم. choice " در رشته اصلی و تنظیم 17 به عنوان مااولین پارامتر برای رد شدن از اولین " انتخاب ". بنابراین، ما ماکرو فوق را اجرا کردیم و شماره موقعیت 27 را به ما نشان داد که دقیقاً شماره موقعیت دوم " انتخاب " است. در رشته داده شده.

3. VBA برای یافتن متن با تابع InStr حساس به حروف کوچک و بزرگ در رشته

از معرفی تابع InStr شما قبلاً می دانید که به طور پیش فرض، تابع InStr به حروف کوچک و بزرگ حساس است بیایید آن را با یک مثال دریابیم.

به کد VBA زیر مراجعه کنید، جایی که می‌خواهیم جایگاه کلمه « Choice را پیدا کنیم. " با بزرگ "C" در رشته " Happiness is a option " که در آن انتخاب با کوچک "c" نوشته می شود .

  • کد را اجرا کنید و 0 را به عنوان خروجی ما پیدا کنید.

این به این دلیل است که تابع InStr C بزرگ و کوچک "c" متفاوت رفتار می کند. بنابراین کلمه " Choice " را در رشته جستجو کرد و مطابقت نداشت، بنابراین 0 را برگرداند.

  • برای اینکه تابع InStr حساس به حروف کوچک و بزرگ شود، آرگومان مقایسه را روی vbTextCompare تنظیم کنید (به زیر مراجعه کنید).
4257

  • اجرای کد.

شما موقعیت متن را دریافت خواهید کرد از رشته، چه متن با حروف بزرگ یا کوچک نوشته شود .

4. VBA برای یافتن متن از سمت راست رشته

تاکنون تابع InStr فقط موقعیت را از سمت چپ رشته به ما می داد. اما اگر بخواهید موقعیت متن را از سمت راست رشته پیدا کنید چه می شود.

عملکرد InStrRev از سمت راست جستجو می کند. تابع InStrRev بسیار شبیه به تابع InStr عمل می کند و موقعیت یک متن را از سمت راست رشته پیدا می کند.

برای درک تفاوت به مثال های زیر مراجعه کنید.

  • اگر کد زیر را با تابع InStr اجرا کنیم،

موقعیت ( 16 ) متن اول " انتخاب " را به ما می دهد.

  • اما اگر همان کد را با تابع InStrRev اجرا کنیم،

موقعیت را به ما می دهد. ( 27 ) از آخرین متن " انتخاب ".

خواندنهای مشابه:

  • FindNext با استفاده از VBA در اکسل (2 مثال)
  • نحوه یافتن و جایگزینی با استفاده از VBA (11 روش)
  • تطابق دقیق را با استفاده از VBA در Excel (5 روش) پیدا کنید

5. VBA برای یافتن موقعیت یک کاراکتر در رشته

همچنین می توانید موقعیت یک کاراکتر خاص را در یک رشته به همان روشی که متن را پیدا کردید پیدا کنید.

  • کپی کنید کد زیر را در پنجره کد VBA خود
1889

  • و اجرا کنید ماکرو را دنبال کنید.

اولین " e " در رشته داده شده ما درشماره 7 موقعیت.

6. VBA برای یافتن رشته فرعی در یک رشته

در اینجا ما یاد خواهیم گرفت که چگونه بفهمیم یک رشته دارای رشته فرعی است یا نه.

برای دریافت آن، باید برای اجرای یک IF Statement در کد ما.

  • همان روش قبلی، Visual Basic Editor را از برگه Developer باز کنید و درج یک ماژول در پنجره کد.
  • در پنجره کد، کد زیر را کپی کرده و آن را جایگذاری کنید.
1943

شما کد اکنون آماده اجرا است.

  • ماکرو را اجرا کنید .

اگر رشته شما حاوی رشته فرعی باشد ، یک مطابق یافت شده دریافت خواهید کرد، در غیر این صورت، هیچ مطابقتی پیدا نشد. در مثال خود، می‌خواستیم بفهمیم که آیا رشته اصلی ما " Happiness is a option " حاوی کلمه " choice " است یا خیر نه همانطور که انجام می شود، یک نتیجه تطابق پیدا شد دریافت می کنیم.

7. VBA برای یافتن رشته در یک محدوده سلولی

شما می توانید متن خاصی را در یک محدوده سلولی از رشته جستجو کنید و رشته خاصی را برگردانید.

به مثال زیر نگاه کنید که در آن ما می خواهیم " Dr. " را پیدا کنید و هنگامی که مورد منطبق بود، " Doctor " را برمی‌گرداند.

  • در زیر کدی برای دریافت نتیجه مورد بحث در بالا آمده است،
3402

  • اجرای کد و نتیجه در زیر نشان داده شده است

  • شما می توانید ماکرو را بر اساس نیاز خود تغییر دهید. به عنوان مثال، اگر شما می خواهیدبرای پیدا کردن " Prof. " در هر سلول رشته، و دریافت " Professor " به عنوان بازگشت، سپس به سادگی "<1" را ارسال کنید> Prof. " به عنوان مقدار به جای " Dr ." در خط 4 ماکرو و " پروفسور " به جای " دکتر " در خط 5 ماکرو و تعریف کنید شماره محدوده سلول بر این اساس.

8. VBA برای یافتن رشته در یک سلول

همچنین می توانید متن خاصی را در یک سلول رشته جستجو کنید و رشته خاصی را برگردانید.

  • کد زیر را کپی کرده و در پنجره کد قرار دهید.
5465

" Dr. <2" را جستجو می کند>" در سلول B5 و اگر مطابقت را پیدا کرد، " دکتر " را در سلول C5 برمی‌گرداند.

  • شما می توانید ماکرو را بر اساس نیاز خود تغییر دهید. به عنوان مثال، اگر می خواهید " Prof. " را در هر سلول رشته پیدا کنید و " Professor " را به عنوان بازگشت دریافت کنید، سپس به جای « Dr » به سادگی « Prof. » را به عنوان مقدار ارسال کنید. در خط 2 ماکرو و " پروفسور " به جای " دکتر " در خط 3 ماکرو و تعریف کنید بر این اساس شماره مرجع سلول.

نتیجه‌گیری

این مقاله به شما نشان داد که چگونه می‌توانید متون خاصی را در رشته در اکسل با استفاده از ماکرو VBA پیدا کنید. امیدوارم این مقاله برای شما بسیار مفید بوده باشد. در صورت تمایل هر گونه سوالی در مورد آن بپرسیدموضوع.

هیو وست یک مربی و تحلیلگر اکسل بسیار با تجربه با بیش از 10 سال تجربه در این صنعت است. وی دارای مدرک لیسانس در رشته حسابداری و امور مالی و مدرک کارشناسی ارشد در رشته مدیریت بازرگانی است. هیو علاقه زیادی به تدریس دارد و یک رویکرد آموزشی منحصر به فرد ایجاد کرده است که به راحتی قابل پیگیری و درک است. دانش تخصصی او از اکسل به هزاران دانش آموز و متخصص در سراسر جهان کمک کرده تا مهارت های خود را بهبود بخشند و در حرفه خود برتری پیدا کنند. هیو از طریق وبلاگ خود دانش خود را با جهان به اشتراک می گذارد و آموزش های رایگان اکسل و آموزش آنلاین ارائه می دهد تا به افراد و مشاغل کمک کند تا به پتانسیل کامل خود دست یابند.