معرفی تابع FIND
تابع FIND در اکسل برای پیدا کردن موقعیت یک متن یا کاراکتر داخل یک متن دیگر استفاده میشود. خروجی این تابع یک عدد است که نشان میدهد متن مورد جستجو از چندمین کاراکتر متن اصلی شروع شده است.
تابع FIND برای کار با متنها بسیار کاربردی است؛ مخصوصاً زمانی که میخواهید بخشی از یک متن را جدا کنید، وجود یک عبارت را بررسی کنید، محل یک علامت خاص مثل @ یا – را پیدا کنید، یا فرمولهای متنی پیشرفته بسازید.
نکته مهم این است که تابع FIND به حروف بزرگ و کوچک حساس است. یعنی بین A و a تفاوت قائل میشود. همچنین از کاراکترهای جایگزین مثل * و ? پشتیبانی نمیکند.
مثال ساده: فرض کنید در سلول A2 عبارت زیر قرار دارد: info@example.com. اگر بخواهیم موقعیت علامت @ را پیدا کنیم، از فرمول زیر استفاده میکنیم:
=FIND("@";A2)اگر مقدار A2 برابر info@example.com باشد، نتیجه فرمول عدد 5 خواهد بود؛ چون علامت @ پنجمین کاراکتر متن است.
کاربردهای اصلی تابع FIND
- پیدا کردن موقعیت یک حرف، کلمه یا علامت در متن
- جدا کردن بخشهایی از متن با کمک توابع LEFT، RIGHT و MID
- استخراج نام کاربری از ایمیل قبل از علامت @
- استخراج دامنه ایمیل بعد از علامت @
- بررسی وجود یک عبارت خاص در متن با ترکیب ISNUMBER
- ساخت فرمولهای شرطی با IF، AND و OR
- پیدا کردن موقعیت دومین یا چندمین تکرار یک کاراکتر
- پاکسازی و استانداردسازی دادههای متنی
- تحلیل کد کالا، شماره سفارش، نام فایل یا شناسههای ترکیبی
ساختار (Syntax)
ساختار انگلیسی تابع FIND به شکل زیر است:
=FIND(find_text, within_text, [start_num])
ساختار فارسیسازیشده برای درک بهتر آرگومانها به شکل زیر است:
=FIND(متن_مورد_جستجو; متن_اصلی; [شماره_شروع])
این تابع معمولاً سه آرگومان دارد که آرگومان سوم اختیاری است.
آرگومانها
find_text / متن مورد جستجو
این آرگومان مشخص میکند که دنبال چه متن، حرف یا علامتی هستید. این مقدار میتواند مستقیماً داخل فرمول نوشته شود یا از یک سلول گرفته شود.
=FIND("تهران";A2)در این مثال، اکسل در سلول A2 به دنبال کلمه تهران میگردد.
within_text / متن اصلی
این آرگومان متنی است که جستجو داخل آن انجام میشود. معمولاً این مقدار یک سلول است، اما میتواند یک متن مستقیم هم باشد.
=FIND("Excel";"Learning Excel is useful")در این فرمول، اکسل موقعیت کلمه Excel را در متن اصلی پیدا میکند.
start_num / شماره شروع
این آرگومان اختیاری است و مشخص میکند جستجو از کدام کاراکتر شروع شود. اگر این آرگومان را وارد نکنید، جستجو از کاراکتر اول شروع میشود.
=FIND("-";A2;5)در این مثال، اکسل از کاراکتر پنجم به بعد به دنبال علامت – میگردد.
مثالهای ساده و پایه
مثال 1: پیدا کردن موقعیت یک حرف
فرض کنید در سلول A2 عبارت Excel Training نوشته شده است. برای پیدا کردن موقعیت حرف T از فرمول زیر استفاده میکنیم:
=FIND("T";A2)اگر حرف T در کاراکتر هفتم باشد، خروجی فرمول عدد 7 خواهد بود.
مثال 2: پیدا کردن موقعیت علامت @ در ایمیل
اگر در سلول A2 یک ایمیل قرار داشته باشد، برای پیدا کردن محل علامت @ از این فرمول استفاده میکنیم:
=FIND("@";A2)این فرمول برای استخراج نام کاربری و دامنه ایمیل بسیار مفید است.
مثال 3: استخراج نام کاربری از ایمیل
اگر مقدار سلول A2 برابر ali@example.com باشد و بخواهیم بخش قبل از @ یعنی ali را استخراج کنیم، از ترکیب FIND و LEFT استفاده میکنیم:
=LEFT(A2;FIND("@";A2)-1)تابع FIND موقعیت @ را پیدا میکند و تابع LEFT تمام کاراکترهای قبل از آن را برمیگرداند.
مثال 4: استخراج دامنه ایمیل
برای استخراج بخش بعد از @ در ایمیل، میتوانیم از ترکیب RIGHT، LEN و FIND استفاده کنیم:
=RIGHT(A2;LEN(A2)-FIND("@";A2))اگر A2 برابر ali@example.com باشد، نتیجه example.com خواهد بود.
مثال 5: پیدا کردن دومین خط تیره
فرض کنید کد سفارش در سلول A2 به شکل IR-2024-158 قرار دارد. برای پیدا کردن موقعیت دومین خط تیره، میتوانیم از FIND تو در تو استفاده کنیم:
=FIND("-";A2;FIND("-";A2)+1)ابتدا موقعیت خط تیره اول پیدا میشود، سپس جستجو از بعد از آن ادامه پیدا میکند تا خط تیره دوم پیدا شود.
مثالهای کاربردی و واقعی
مثال 1: بررسی وجود یک کلمه خاص در توضیحات کالا
فرض کنید در سلول A2 توضیحات کالا نوشته شده و میخواهید بررسی کنید آیا عبارت VIP داخل آن وجود دارد یا نه. چون FIND در صورت پیدا نکردن متن خطا میدهد، بهتر است آن را با ISNUMBER ترکیب کنیم.
=ISNUMBER(FIND("VIP";A2))اگر عبارت VIP در متن وجود داشته باشد، نتیجه TRUE و اگر وجود نداشته باشد، نتیجه FALSE خواهد بود.
مثال 2: دستهبندی مشتری با IF
اگر در سلول B2 نوع مشتری یا توضیحات مشتری قرار دارد و میخواهید مشتریان دارای عبارت VIP را جدا کنید، از فرمول زیر استفاده کنید:
=IF(ISNUMBER(FIND("VIP";B2));"مشتری ویژه";"مشتری عادی")این فرمول اگر عبارت VIP را پیدا کند، نتیجه مشتری ویژه را نمایش میدهد؛ در غیر این صورت مشتری عادی را برمیگرداند.
مثال 3: ترکیب FIND با AND
فرض کنید در سلول B2 توضیحات مشتری و در سلول C2 مبلغ خرید قرار دارد. میخواهید اگر مشتری VIP بود و مبلغ خرید او بیشتر از 1000000 بود، عبارت ارسال فوری نمایش داده شود.
=IF(AND(ISNUMBER(FIND("VIP";B2));C2>1000000);"ارسال فوری";"بررسی عادی")در این فرمول، هم وجود عبارت VIP بررسی میشود و هم مبلغ خرید. فقط اگر هر دو شرط برقرار باشند، نتیجه ارسال فوری خواهد بود.
مثال 4: ترکیب FIND با OR
فرض کنید میخواهید ایمیلهای عمومی مثل Gmail و Yahoo را تشخیص دهید. اگر آدرس ایمیل در سلول A2 باشد، میتوانید از فرمول زیر استفاده کنید:
=IF(OR(ISNUMBER(FIND("gmail";A2));ISNUMBER(FIND("yahoo";A2)));"ایمیل عمومی";"سایر")اگر در ایمیل یکی از عبارتهای gmail یا yahoo وجود داشته باشد، نتیجه ایمیل عمومی خواهد بود.
مثال 5: شمارش سلولهای شامل یک متن با SUMPRODUCT و FIND
اگر بخواهید تعداد سلولهایی را بشمارید که دقیقاً شامل عبارت VIP با همین حروف بزرگ هستند، میتوانید از ترکیب SUMPRODUCT و FIND استفاده کنید:
=SUMPRODUCT(--ISNUMBER(FIND("VIP";A2:A100)))این فرمول تعداد سلولهایی را میشمارد که در آنها عبارت VIP وجود دارد. چون FIND به بزرگی و کوچکی حروف حساس است، vip با VIP یکسان در نظر گرفته نمیشود.
مثال 6: مقایسه با COUNTIF برای جستجوی ساده
اگر حساس بودن به حروف بزرگ و کوچک برایتان مهم نیست، میتوانید از COUNTIF هم استفاده کنید:
=COUNTIF(A2:A100;"*VIP*")
این فرمول تعداد سلولهایی را میشمارد که شامل VIP هستند، اما برخلاف FIND معمولاً به بزرگی و کوچکی حروف حساس نیست.
مثال 7: ترکیب FIND با XLOOKUP
فرض کنید در سلول A2 ایمیل مشتری قرار دارد، در محدوده E2:E10 لیست دامنهها و در محدوده F2:F10 نام شرکتها یا دستهبندی دامنهها قرار دارد. ابتدا دامنه ایمیل استخراج میشود و سپس با XLOOKUP جستجو انجام میشود.
=XLOOKUP(RIGHT(A2;LEN(A2)-FIND("@";A2));E2:E10;F2:F10;"نامشخص")این فرمول دامنه ایمیل را بعد از @ جدا میکند و سپس آن را در جدول دامنهها جستجو میکند.
ترکیب تابع FIND با فرمولهای دیگر
- ترکیب با LEFT برای استخراج متن قبل از یک کاراکتر خاص
=LEFT(A2;FIND("-";A2)-1)- ترکیب با RIGHT برای استخراج متن بعد از یک کاراکتر خاص
=RIGHT(A2;LEN(A2)-FIND("-";A2))- ترکیب با MID برای استخراج متن بین دو موقعیت
=MID(A2;FIND("-";A2)+1;5)- ترکیب با IF برای نمایش نتیجه شرطی
=IF(ISNUMBER(FIND("Paid";A2));"پرداخت شده";"نامشخص")- ترکیب با IFERROR برای جلوگیری از نمایش خطا
=IFERROR(FIND("VIP";A2);"یافت نشد")- ترکیب با LEN برای محاسبه تعداد کاراکترهای بعد از یک علامت
=LEN(A2)-FIND("@";A2)- ترکیب با SUBSTITUTE برای پیدا کردن موقعیت چندمین تکرار یک کاراکتر
=FIND("#";SUBSTITUTE(A2;"-";"#";2))- ترکیب با TEXTAFTER در نسخههای جدید اکسل برای سادهتر کردن استخراج متن
=TEXTAFTER(A2;"@")
- ترکیب با TEXTBEFORE در نسخههای جدید اکسل برای استخراج متن قبل از جداکننده
=TEXTBEFORE(A2;"@")
خطاهای رایج و روش رفع آنها
1) خطای #VALUE! به دلیل پیدا نشدن متن
اگر متن مورد جستجو داخل متن اصلی وجود نداشته باشد، تابع FIND خطای #VALUE! برمیگرداند.
روش رفع: از IFERROR استفاده کنید تا به جای خطا، پیام مناسب نمایش داده شود.
=IFERROR(FIND("VIP";A2);"یافت نشد")2) خطای #VALUE! به دلیل حساس بودن به حروف بزرگ و کوچک
تابع FIND به حروف بزرگ و کوچک حساس است. مثلاً اگر دنبال VIP بگردید اما در سلول vip نوشته شده باشد، تابع آن را پیدا نمیکند.
روش رفع: اگر حساسیت به بزرگی و کوچکی حروف برایتان مهم نیست، از SEARCH استفاده کنید.
=SEARCH("VIP";A2)3) خطا به دلیل مقدار نامعتبر در start_num
اگر آرگومان start_num صفر، منفی یا بزرگتر از طول متن باشد، تابع FIND خطا میدهد.
روش رفع: مطمئن شوید شماره شروع جستجو عددی معتبر و داخل محدوده طول متن باشد.
=IF(AND(B2>0;B2<=LEN(A2));FIND("a";A2;B2);"شماره شروع نامعتبر")4) اشتباه گرفتن FIND با SEARCH
بسیاری از کاربران فکر میکنند FIND و SEARCH دقیقاً یکسان هستند؛ اما FIND به حروف بزرگ و کوچک حساس است و از wildcard پشتیبانی نمیکند.
روش رفع: اگر جستجوی غیرحساس به حروف و منعطفتر میخواهید، SEARCH گزینه بهتری است.
5) فراموش کردن کم کردن 1 هنگام استخراج متن قبل از جداکننده
وقتی با LEFT میخواهید متن قبل از یک علامت را استخراج کنید، باید از موقعیت جداکننده یک واحد کم کنید؛ وگرنه خود جداکننده هم در نتیجه میآید.
فرمول درست:
=LEFT(A2;FIND("@";A2)-1)6) استفاده از جداکننده اشتباه بین آرگومانها
در بعضی تنظیمات اکسل، جداکننده آرگومانها ویرگول است و در بعضی تنظیمات، نقطهویرگول. اگر فرمول خطا داد، ممکن است مشکل از جداکننده باشد.
نمونه با نقطهویرگول:
=FIND("@";A2)نمونه با ویرگول:
=FIND("@",A2)نکات حرفهای و ترفندهای مهم
- اگر میخواهید جستجو به حروف بزرگ و کوچک حساس باشد، FIND انتخاب مناسبی است.
- اگر میخواهید جستجو به حروف بزرگ و کوچک حساس نباشد، از SEARCH استفاده کنید.
- برای جلوگیری از نمایش خطاهای آزاردهنده، FIND را با IFERROR ترکیب کنید.
- برای بررسی وجود یک متن، بهتر است FIND را با ISNUMBER ترکیب کنید.
- برای استخراج متن قبل یا بعد از یک جداکننده، FIND را همراه با LEFT، RIGHT و MID استفاده کنید.
- در نسخههای جدید اکسل، توابع TEXTBEFORE و TEXTAFTER میتوانند بسیاری از کارهای متنی را سادهتر کنند.
- اگر با دادههای بزرگ کار میکنید، فرمولها را تا حد امکان ساده نگه دارید تا فایل کند نشود.
- برای خوانایی بهتر، از سلولهای کمکی استفاده کنید؛ مثلاً ابتدا موقعیت @ را محاسبه کنید و بعد استخراج متن را انجام دهید.
- اگر جداکننده در همه سلولها وجود ندارد، حتماً از IFERROR استفاده کنید.
- برای پیدا کردن تکرار دوم یا سوم یک کاراکتر، میتوانید از آرگومان start_num یا ترکیب SUBSTITUTE استفاده کنید.
تفاوت تابع FIND با توابع مشابه
تفاوت FIND با SEARCH
تابع FIND و SEARCH هر دو موقعیت یک متن را داخل متن دیگر پیدا میکنند، اما تفاوتهای مهمی دارند.
- FIND به حروف بزرگ و کوچک حساس است.
- SEARCH به حروف بزرگ و کوچک حساس نیست.
- FIND از wildcard پشتیبانی نمیکند.
- SEARCH از wildcard مثل * و ? پشتیبانی میکند.
مثال با FIND:
=FIND("A";"excel academy")این فرمول خطا میدهد، چون A بزرگ در متن وجود ندارد.
مثال با SEARCH:
=SEARCH("A";"excel academy")این فرمول میتواند موقعیت a را پیدا کند، چون SEARCH به بزرگی و کوچکی حروف حساس نیست.
تفاوت FIND با LEFT، RIGHT و MID
توابع LEFT، RIGHT و MID برای استخراج بخشی از متن استفاده میشوند، اما FIND بهتنهایی چیزی را استخراج نمیکند؛ فقط موقعیت متن را برمیگرداند.
معمولاً FIND را همراه با این توابع استفاده میکنیم تا محل شروع یا پایان استخراج مشخص شود.
تفاوت FIND با COUNTIF
تابع COUNTIF برای شمارش سلولها بر اساس شرط استفاده میشود. اگر فقط بخواهید تعداد سلولهایی که شامل یک متن هستند را بشمارید، COUNTIF سادهتر است. اما اگر به موقعیت متن یا حساسیت به حروف بزرگ و کوچک نیاز دارید، FIND مناسبتر است.
تفاوت FIND با TEXTBEFORE و TEXTAFTER
در اکسلهای جدید، توابع TEXTBEFORE و TEXTAFTER برای استخراج متن قبل یا بعد از یک جداکننده بسیار سادهتر هستند. با این حال، FIND هنوز برای فرمولهای سفارشی، نسخههای قدیمی اکسل و کنترل دقیق موقعیت متن بسیار کاربردی است.
سازگاری با نسخههای مختلف اکسل
تابع FIND یکی از توابع قدیمی و پایهای اکسل است و در بیشتر نسخههای اکسل پشتیبانی میشود.
- Excel 2007
- Excel 2010
- Excel 2013
- Excel 2016
- Excel 2019
- Excel 2021
- Microsoft 365
- Excel Online
نکته مهم این است که خود تابع FIND تقریباً در همه نسخهها در دسترس است؛ اما برخی توابع جدیدتر مثل TEXTBEFORE، TEXTAFTER و XLOOKUP فقط در نسخههای جدیدتر مثل Microsoft 365 و Excel 2021 به بعد در دسترس هستند.
سؤالات پرتکرار درباره تابع FIND
تابع FIND چه کاری انجام میدهد؟
این تابع موقعیت یک متن، حرف یا علامت را داخل یک متن دیگر پیدا میکند و شماره کاراکتر شروع آن را برمیگرداند.
آیا FIND به حروف بزرگ و کوچک حساس است؟
بله. تابع FIND بین حروف بزرگ و کوچک تفاوت قائل میشود.
اگر متن پیدا نشود چه اتفاقی میافتد؟
تابع FIND خطای #VALUE! برمیگرداند. برای مدیریت این خطا میتوانید از IFERROR استفاده کنید.
=IFERROR(FIND("VIP";A2);"وجود ندارد")برای جستجوی غیرحساس به حروف بزرگ و کوچک از چه تابعی استفاده کنیم؟
در این حالت بهتر است از SEARCH استفاده کنید.
=SEARCH("vip";A2)آیا FIND میتواند چندمین تکرار یک کاراکتر را پیدا کند؟
بله. با استفاده از آرگومان start_num یا ترکیب FIND تو در تو میتوانید تکرارهای بعدی را پیدا کنید.
=FIND("-";A2;FIND("-";A2)+1)آیا FIND برای استخراج متن کافی است؟
خیر. FIND فقط موقعیت را برمیگرداند. برای استخراج متن باید آن را با توابعی مثل LEFT، RIGHT یا MID ترکیب کنید.
آیا FIND از wildcard پشتیبانی میکند؟
خیر. اگر به wildcard نیاز دارید، از SEARCH استفاده کنید.
جمعبندی و پیشنهاد یادگیری بعدی
تابع FIND یکی از مهمترین توابع متنی اکسل است که برای پیدا کردن موقعیت یک متن در متن دیگر استفاده میشود. این تابع بهخصوص زمانی کاربرد دارد که بخواهید دادههای متنی مثل ایمیل، کد کالا، شماره سفارش، نام فایل یا توضیحات مشتری را تحلیل و بخشبندی کنید.
مهمترین نکته درباره FIND این است که به حروف بزرگ و کوچک حساس است و اگر متن مورد نظر پیدا نشود، خطای #VALUE! برمیگرداند. بنابراین در فرمولهای کاربردی بهتر است آن را با توابعی مثل IFERROR و ISNUMBER ترکیب کنید.
برای یادگیری بعدی، پیشنهاد میشود توابع SEARCH، LEFT، RIGHT، MID، LEN، TEXTBEFORE، TEXTAFTER و XLOOKUP را یاد بگیرید؛ چون ترکیب این توابع با FIND میتواند بسیاری از مسائل متنی در اکسل را بهسادگی حل کند.
