تعيد =SEARCH("apple",A2) الموضع الذي تبدأ فيه apple في A2، بالعد من 1، وتتجاهل الأحرف الكبيرة والصغيرة. وتفعل =FIND("apple",A2) الشيء نفسه لكنها لا تطابق إلا بحالة الأحرف نفسها. وعندما لا يكون النص موجودًا، تعيد الدالتان #VALUE!.
| A | B | C | |
|---|---|---|---|
| 1 | Text | FIND("apple") | SEARCH("apple") |
| 2 | Apple pie | #VALUE! | 1 |
| 3 | Green apple | 7 | 7 |
| 4 | Banana bread | #VALUE! | #VALUE! |
#VALUE! أحد الوسائط من نوع خاطئ، مثل نص في مكان رقم.تبدأ Apple pie بحرف A كبير، لذا لا تطابق FIND وتعيد #VALUE!، بينما تعيد SEARCH القيمة 1. وفي Green apple تعيد الدالتان 7: المسافة تُعدّ حرفًا. أما Banana bread فلا تحتوي على apple أصلًا.
الصيغة
=FIND(find_text, within_text, [start_num])
=SEARCH(find_text, within_text, [start_num])
find_text: ما تبحث عنه. حرف واحد أو كلمة.within_text: الخلية التي تبحث فيها.start_num: الموضع الذي يبدأ منه البحث، 1 إذا حُذف. وتبقى النتيجة معدودة من الحرف الأول في الخلية.
إذا كانت الخلية تحتوي على نص
نادرًا ما يكون الموضع نفسه هو ما تريده. فالسؤال عادة هو "هل تحتوي هذه الخلية على الكلمة؟". الموضع رقم وعدم العثور خطأ، لذا تحوّل ISNUMBER النتيجة إلى TRUE أو FALSE:
| A | B | C | |
|---|---|---|---|
| 1 | Note | Contains "late" | Status |
| 2 | Arrived late | TRUE | Check |
| 3 | On time | FALSE | OK |
| 4 | LATE by 2 days | TRUE | Check |
| 5 | Delivered | FALSE | OK |
تطابق SEARCH الكلمة LATE في A4 لأنها تتجاهل حالة الأحرف. لاحظ أنها ستطابق أيضًا latest أو chocolate: تبحث SEARCH عن أحرف، لا عن كلمات كاملة. والبحث عن " late" مع مسافة في البداية يضيّق النتائج قليلًا. ولعدّ الخلايا التي تحتوي على كلمة، =COUNTIF(A2:A5,"*late*") أقصر؛ راجع عدّ الخلايا التي تحتوي على نص.
| A | B | |
|---|---|---|
| 1 | Subject | Urgent? |
| 2 | URGENT: server down | |
| 3 | Monthly report | |
| 4 | Refund request, urgent |
دورك: في B2، أعد TRUE إذا كان الموضوع في A2 يحتوي على الكلمة urgent بأي حالة أحرف، وFALSE إن لم يكن. تُنسخ الصيغة إلى الأسفل حتى B4.
إيجاد التكرار الثاني
يتيح لك start_num بدء البحث بعد التطابق الأول. ضع FIND داخل أخرى: تجد الداخلية الشرطة الأولى، وتبدأ الخارجية بعدها بحرف واحد.
| A | B | C | |
|---|---|---|---|
| 1 | Code | First dash | Second dash |
| 2 | NYC-2041-B | 4 | 9 |
| 3 | BOSTON-15-AA | 7 | 10 |
مع الموضعين، تستطيع MID أخذ ما بين الشرطتين: تعيد =MID(A2,B2+1,C2-B2-1) القيمة 2041.
| A | B | |
|---|---|---|
| 1 | Position | |
| 2 | ana@coddy.tech |
دورك: في B2، أعد موضع @ في عنوان البريد الإلكتروني.
FIND وSEARCH تعيدان #VALUE!
يعني #VALUE! هنا "غير موجود" فقط. استبدله بشيء مفيد:
| A | B | |
|---|---|---|
| 1 | Position of @ | |
| 2 | ana@coddy.tech | 4 |
| 3 | not an email | 0 |
لا تقارن النتيجة الخام برقم، كما في =FIND("@",A2)>0: عدم العثور خطأ، فتعيد المقارنة #VALUE! بدلًا من FALSE. اختبرها بالدالة ISNUMBER، كما في القسم السابق.
أحرف البدل: في SEARCH فقط
تقبل SEARCH أحرف البدل ? (أي حرف واحد) و* (أي سلسلة من الأحرف). أما FIND فتعاملها كأحرف حرفية. في الاكسل:
=SEARCH("b?d","a bad day") returns 3
=SEARCH("2*B","NYC-2041-B") returns 5
=SEARCH("~?","Why?") returns 4, the tilde means a real question mark
=FIND("?","Why?") returns 4, FIND has no wildcards
المزيد عن * و? و~ في دوال الاكسل تجده في صفحة أحرف البدل.
FIND مقابل SEARCH مقابل Ctrl+F
| FIND | SEARCH | Ctrl+F | |
|---|---|---|---|
| حالة الأحرف | يجب أن تطابق | تُتجاهل | تُتجاهل، إلا إذا حُدد خيار مطابقة حالة الأحرف |
| أحرف البدل | لا | ? و* و~ | ? و* و~ |
| عند عدم العثور | #VALUE! | #VALUE! | رسالة |
| النتيجة | موضع يُعاد حسابه | موضع يُعاد حسابه | تحديد الخلية |
لإيجاد قيمة مرة واحدة، الصفحة الرئيسية > بحث وتحديد > بحث (Ctrl+F، أو Cmd+F على Mac) أسرع من صيغة. وللتمييز أو الاستخراج في كل صف مع بقاء النتيجة محدّثة، استخدم FIND أو SEARCH. اختر FIND عندما تحمل حالة الأحرف معنى (رموز منتجات مثل ab وAB)، وSEARCH لكل ما يكتبه الناس.
الأسئلة الشائعة
ما الفرق بين FIND وSEARCH في الاكسل؟
تميّز FIND حالة الأحرف ولا تقبل أحرف البدل. وتتجاهل SEARCH حالة الأحرف وتقبل ? و*. فالصيغة =FIND("a","Apple") تعطي #VALUE!، بينما تعطي =SEARCH("a","Apple") القيمة 1.
كيف أستخرج النص الواقع بين شرطتين في الاكسل؟
أوجد الشرطتين وخذ ما بينهما بالدالة MID: تعيد =MID(A2,FIND("-",A2)+1,FIND("-",A2,FIND("-",A2)+1)-FIND("-",A2)-1) القيمة 2041 من NYC-2041-B. وفي Microsoft 365 تكون =TEXTBEFORE(TEXTAFTER(A2,"-"),"-") أقصر.
لماذا تعيد FIND الخطأ #VALUE!؟
لأن النص غير موجود في الخلية، أو موجود بحالة أحرف مختلفة (FIND تميّز حالة الأحرف). ضعها داخل دالة تعيد شيئًا آخر: =IFERROR(FIND("-",A2),0).
كيف أجد التكرار الثاني لحرف؟
ابدأ البحث بعد التطابق الأول بحرف واحد: =FIND("-",A2,FIND("-",A2)+1). والوسيط الثالث هو الموضع الذي يبدأ منه البحث.