جدول المحتويات
إذا كانت لديك قائمة نصية وتريد البحث في الخلايا وإرجاع القيم بناءً على القائمة ، فستحتاج إلى إنشاء صيغة لأن Excel لا يوفر طريقة بسيطة للقيام بذلك. في هذه المقالة ، تناولت هذه المشكلة وقدمت خمس صيغ مختلفة لإجراء هذه العملية بحيث يمكنك اختيار الصيغة المثالية لموقفك ، وإرجاع القيمة إذا كانت الخلية تحتوي على نص معين من القائمة.
تنزيل Practice Workbook
يمكنك تنزيل المصنف الذي استخدمته في هذه المقالة من الزر التالي والتدرب عليه بنفسك.
إذا كانت الخلية تحتوي على نص من List.xlsx
مقدمة إلى الوظائف المستخدمة في هذه المقالة
تستخدم الصيغ التي استخدمتها هنا الوظائف التالية:
- وظيفة COUNTIFS:
تحسب هذه الوظيفة الخلايا التي تطابق معايير متعددة. صيغة الدالة COUNTIFS كما يلي.
= COUNTIFS (النطاق 1 ، المعايير 1 ، [النطاق 2] ، [المعايير 2] ، ...)
- range1 - النطاق الأول للتقييم.
- criteria1 - المعيار المطلوب استخدامه في النطاق الأول.
- range2 [اختياري]: النطاق الثاني ، يعمل تمامًا مثل النطاق 1.
- criteria2 [اختياري]: معيار الاستخدام في النطاق الثاني. تسمح هذه الوظيفة بحد أقصى 127 نطاقًا وأزواج معايير .
- وظيفة TEXTJOIN:
هذه الوظيفة ينضم إلى النصالقيم بمحدد. صيغة الدالة TEXTJOIN كما يلي.
= TEXTJOIN (محدد ، ignore_empty ، text1 ، [text2] ، ...)
- المحدد: الفاصل بين النصوص التي ستجمعها الوظيفة.
- ignore_empty: تحدد هذه الوسيطة ما إذا كانت الوظيفة تتجاهل الفراغ خلايا أم لا.
- text1: قيمة النص الأولى (أو النطاق).
- text2 [اختياري]: قيمة النص الثاني (أو النطاق) .
- وظيفة المطابقة:
تحصل هذه الوظيفة على موضع عنصر في مصفوفة. صيغة الدالة MATCH كما يلي.
= MATCH (lookup_value، lookup_array، [match_type])
- lookup_value: القيمة المطلوب مطابقتها في lookup_array .
- lookup_array: نطاق من الخلايا أو مرجع صفيف.
- match_type [اختياري]: 1 = تامة أو تالية الأصغر ، 0 = مطابقة تامة ، -1 = تامة أو تالية أكبر. بشكل افتراضي ، match_type = 1.
- وظيفة INDEX:
تحصل هذه الوظيفة على قيم في قائمة أو جدول بناءً على الموقع . صيغة الدالة INDEX كما يلي.
= INDEX (array، row_num، [col_num]، [area_num])
- المصفوفة: نطاق الخلايا ، أو ثابت المصفوفة.
- row_num: موضع الصف في المرجع.
- col_num [اختياري] : موضع العمود في المرجع.
- area_num [اختياري]: النطاقفي المرجع الذي يجب استخدامه.
- وظيفة IFERROR:
هذه الوظيفة تعوض الأخطاء وتعالج الأخطاء. صيغة الدالة IFERROR هي كما يلي.
= IFERROR (value، value_if_error)
- القيمة: القيمة أو المرجع أو الصيغة للتحقق من وجود خطأ.
- value_if_error: القيمة المراد إرجاعها إذا تم العثور على خطأ.
- وظيفة البحث:
تحصل هذه الوظيفة على موقع النص في سلسلة. صيغة الدالة SEARCH كما يلي.
= SEARCH (find_text، within_text، [start_num])
- find_text : تحدد هذه الوسيطة النص الذي سيتم البحث عنه.
- within_text: هذا يحدد مكان العثور على النص.
- start_num [اختياري]: بهذا ، ستحدد - من أي موضع في السلسلة النصية ستحسب موضع النص المحدد. اختيارية وافتراضية إلى 1 من اليسار.
5 صيغ لإرجاع القيمة في Excel إذا كانت الخلية تحتوي على نص معين من قائمة
سأحاول التقديم مثال واقعي في مجموعة البيانات هذه. يتم تقديم بعض المشروبات هنا. الرقائق ، المشروبات الباردة ، الحبوب هي الفئات الثلاث للمشروبات في مجموعة البيانات هذه. في عمود واحد يسمى كل المنتجات ، يتم ربط اسم وفئات المشروبات معًا. فئتان من هذه الفئات ، رقائق و باردةالمشروبات ، هي أيضًا في العمود قائمة . استنادًا إلى العمود قائمة ، سيتم عرض الإخراج المطلوب في العمود الثاني.
1. اجمع بين COUNTIF و IF & amp؛ أو دالات لإرجاع القيمة إذا كانت الخلية تحتوي على نص من قائمة
هذه هي الصيغة الأكثر فائدة إذا كنت تريد إرجاع قيمة الخلية بأكملها بعد التطابق.
هنا ، قمت بجلب قيم الخلايا الخاصة بـ المنتجات التي تطابق معايير العمود قائمة وعرضها على المنتج استنادًا إلى تلك القائمة العمود.
الصيغة كما يلي:
=IF(OR(COUNTIF(B5,"*"&$E$5:$E$6&"*")),B5,"")
تفصيل الصيغة:
-
=IF(OR(COUNTIF(B5,"*"&$E$5:$E$6&"*")),B5,"")
هنا ، علامة النجمة ( * ) هو حرف بدل. بحثت عن سلسلة فرعية " رقائق " و "مشروبات باردة" ضمن سلسلة فرعية خلية B5 وهي "
Ruffles - Chips
"
سلسلة.
-
=IF(OR(COUNTIF("Ruffles - Chips",*Chips*, *Cold Drinks*)), B5, "")
أعادت الدالة COUNTIF واحدة لكل تطابق سلسلة فرعية. نظرًا لأنه تم العثور على "
Chips
"
في الخلية B5 ، فإنها تعرض { 1: 0 }.
-
=IF(OR({1;0}), B5, "")
ترجع الدالة OR قيمة TRUE إذا كانت أي من الوسيطات TRUE . في هذه الحالة ، واحد (1) = صحيح .
-
=IF(TRUE, "Ruffles - Chips", "")
مثل IF قيمة الوظيفة هي TRUE ، فهي ترجع الوسيطة الأولى التي هي الإخراج المطلوب.
النهائي الإخراج : الكشكشة - الرقائق
ملاحظة:
هنا ، لقد أظهرتخلية مطابقة ولكن يمكنك إظهار أي إخراج كما تريد عن طريق تغيير إخراج الدالات IF بالإخراج الذي تريده.
=IF(OR(COUNTIF(B5,"*"&$E$5:$E$6&"*")),TRUE,FALSE)
اقرأ المزيد: إذا كانت الخلية تحتوي على كلمة ، فقم بتعيين القيمة في Excel (4 صيغ)
2. استخدم تركيبة IF-OR مع دالة SEARCH لإرجاع القيمة بشروط متعددة
هنا ، قمت بجلب قيم خلية المنتجات التي تطابق قائمة معايير العمود وأظهرت لهم المنتج بناءً على تلك القائمة العمود.
الصيغة هي كما يلي:
=IF(OR(ISNUMBER(SEARCH($E$5,B5)),ISNUMBER(SEARCH($E$6,B5))),B5,"")
انهيار الصيغة:
-
=IF(OR(ISNUMBER(SEARCH($E$5,B5)),ISNUMBER(SEARCH($E$6,B5))),B5,"")
بحثت الوظيفة بحث عن قيم العمود قائمة في الخلية B5 . بالنسبة إلى " Chips " ، تم إرجاع 11 وهو موضع البداية للسلسلة الفرعية. بالنسبة لـ المشروبات الباردة ، تم إرجاع خطأ.
-
=IF(OR(ISNUMBER(11),ISNUMBER(SEARCH(#VALUE))),B5,"")
تم تحويل الوظيفة ISNUMBER 11 إلى قيمة TRUE والخطأ في القيمة FALSE .
-
=IF(OR(TRUE,FALSE)),B5,"")
ترجع الدالة OR قيمة TRUE إذا كانت أي من الوسيطات TRUE . نظرًا لوجود وسيطة TRUE ، فإنها تُرجع أيضًا القيمة TRUE في هذه الحالة.
-
=IF(TRUE, "Ruffles - Chips","")
نظرًا لأن قيمة الدالة IF هي TRUE ، فإنها تُرجع الوسيطة الأولى التي تمثل الناتج المطلوب.
الإخراج النهائي: Ruffles -الرقائق
ملاحظة:
- هنا ، لقد أظهرت الخلية المطابقة ولكن يمكنك إظهار أي إخراج تريده عن طريق تغيير IF إخراج الوظائف مع الإخراج المطلوب.
=IF(OR(ISNUMBER(SEARCH($E$5,B5)),ISNUMBER(SEARCH($E$6,B5))),1,0)
- الفائدة الرئيسية من هذا الصيغة هي أن هذه ليست صيغة صفيف ولكن لا يوصى بها إذا كان لديك العديد من الخلايا في قائمة حيث يتعين عليك إدخال كل خلية في قائمة يدويًا.
- بالنسبة للحالات الحساسة لحالة الأحرف ، يمكننا استخدام الصيغة أدناه بناءً على وظيفة البحث بدلاً من وظيفة بحث .
=IF(OR(ISNUMBER(FIND($E$5,B5)),ISNUMBER(FIND($E$6,B5))),B5,"")
اقرأ المزيد: Excel إذا كانت الخلية تحتوي على نص ثم قم بإرجاع القيمة (8 طرق سهلة)
قراءات مماثلة:
- كيفية الجمع إذا احتوت الخلية على نص معين في Excel (6 طرق)
- استخدم VLOOKUP إذا كانت الخلية تحتوي على كلمة داخل نص في Excel
- كيفية البحث عن نص في نطاق Excel & amp؛ إرجاع مرجع الخلية (3 طرق)
3. استخدم صيغة TEXTJOIN لإرجاع القيمة في خلية أخرى إذا كانت الخلية تحتوي على نص من قائمة
هذه الصيغة مفيدة عندما يتعين عليك إظهار السلسلة أو السلاسل من قائمة المتطابقة .
هنا ، قمت بجلب قيم الخلية من العمود LIST حيث تتطابق مع المنتج وأظهرها للقيمة المتطابقة من قائمة عمود.
الصيغة كما يلي:
=TEXTJOIN(", ",TRUE,IF(COUNTIF(B5,"*"&$E$5:$E$6&"*"), $E$5:$E$6,""))
الصيغةالانهيار:
-
=TEXTJOIN(", ",TRUE,IF(COUNTIF(B5,"*"&$E$5:$E$6&"*"),$E$5:$E$6,""))
هنا ، علامة النجمة ( * ) هو حرف بدل. بحثت عن سلسلة فرعية " رقائق " و "مشروبات باردة" داخل الخلية B5 وهي سلسلة " Ruffles - Chips ".
-
TEXTJOIN(", ",TRUE,IF(COUNTIF("Ruffles - Chips",*Chips*, *Cold Drinks*),$E$5:$E$6,""))
أعادت الدالة COUNTIF واحدة لكل تطابق سلسلة فرعية. نظرًا لأنه تم العثور على " رقائق " في الخلية B5 ، فإنها تعرض { 1: 0 }.
-
TEXTJOIN(", ",TRUE,IF({1;0},$E$5:$E$6,""))
عادت الدالة IF قيمة " الشرائح " فقط لأن القيمة الأولى فقط لوسيطتها كانت واحدة = صحيح .
-
TEXTJOIN(", ",TRUE,{"Chips";""})
لم تفعل الوظيفة TEXTJOIN أي شيء هنا كقيمة واحدة فقط من <3 تم مطابقة> قائمة . إذا كان هناك العديد من القيم المطابقة ، فسيتم إرجاعها جميعًا بفاصلات (،) بينها كفاصل.
الإخراج النهائي: الشرائح
قراءة المزيد: إذا كانت الخلية تحتوي على نص ، فقم بإضافة نص في خلية أخرى في Excel
4. استخدم صيغة INDEX MATCH لإرجاع القيمة إذا كانت الخلية تحتوي على نص معين
هذا بديل لصيغة TEXTJOIN . تُظهر هذه الصيغة أيضًا السلسلة أو السلاسل المطابقة من قائمة .
هنا ، قمت بجلب قيم الخلية من العمود LIST حيث تطابقها مع المنتج وعرضها على القيمة المتطابقة من العمود قائمة .
الصيغة كما يلي:
=IFERROR(INDEX($E$5:$E$6, MATCH(1, COUNTIF(B5, "*"&$E$5:$E$6&"*"), 0)),"")
انهيار الصيغة:
-
=IFERROR(INDEX($E$5:$E$6,MATCH(1,COUNTIF(B5,"*"&$E$5:$E$6&"*"),0)),"")
هنا ، علامة النجمة ( * ) هي حرف البدل. بحثت عن سلسلة فرعية " Chips " و " مشروبات باردة " ضمن سلسلة فرعية خلية B5 وهي سلسلة " Ruffles - Chips ".
-
IFERROR(INDEX($E$5:$E$6,MATCH(1,COUNTIF("Ruffles - Chips",*Chips*,*Cold Drinks*),0)),"")
أعادت الدالة COUNTIF واحدة لكل تطابق سلسلة فرعية. نظرًا لأنه تم العثور على " رقائق " في الخلية B5 ، فإنها تعرض { 1: 0 }.
-
IFERROR(INDEX($E$5:$E$6,MATCH(1,{1;0}),0)),"")
عادت الدالة MATCH واحدة نظرًا لوجود قيمة واحدة فقط " رقائق " تطابق.
-
IFERROR(INDEX($E$5:$E$6,1),"")
عادت الدالة INDEX " Chips " كما كانت القيمة في صفيف List .
-
IFERROR("Chips","")
هنا ، يتم استخدام الوظيفة IFERROR لمعالجة الخطأ الذي سيحدث في حالة عدم وجود مطابقات .
الإخراج النهائي: الشرائح
ملاحظة:
هنا ، لقد أظهرت الخلية المطابقة ولكن يمكنك إظهار أي إخراج كما تريد عن طريق تغيير إخراج وظائف IF بالإخراج الذي تريده.
اقرأ المزيد: Excel Formula إذا كانت الخلية تحتوي على نص ، ثم قم بإرجاع القيمة في خلية أخرى
5. قم بتطبيق دالة EXACT مع IF و TEXTJOIN
هذا حل آخر لهذه المشكلة في مواقف مختلفة. هنا ، قمت بجلب قيمة الخلية من عمود القائمة مع عضو واحد. نطابق هذه القيمة مع المنتج وأظهرنا جميع قيم المطابقة في خلية واحدة.
الصيغة هي كمايلي:
=TEXTJOIN(", ",TRUE,IF(EXACT(C5:C14,$F$5),B5:B14,""))
انهيار الصيغة :
-
EXACT(C5:C14,$F$5)
يتحقق هذا الجزء من قيم النطاق C5: 14 التي تتطابق مع الخلية F5 ويعود TRUE و FALSE .
-
IF(EXACT(C5:C14,$F$5),B5:B14,"")
يعرض هذا الجزء الأسماء التي نحصل عليها TRUE .
-
TEXTJOIN(", ",TRUE,IF(EXACT(C5:C14,$F$5),B5:B14,""))
أخيرًا ، هذا يجمع كل الأسماء بفاصلة بعد كل اسم.
ملاحظات سريعة
كل هذه الصيغ هنا (باستثناء الثانية) هي صيغ صفيف. هذا يعني أنه يجب عليك الضغط على Ctrl + Shift + Enter بدلاً من الضغط فقط على الزر Enter لإدخال هذه الصيغة. ولكن إذا كنت من مستخدمي Office 365 ، فيمكنك تطبيقها بالضغط على إدخال فقط.
خاتمة
في هذه المقالة ، قمت بتضييق نطاق الصيغ المختلفة لحالات مختلفة لإرجاع القيمة إذا كانت الخلية تحتوي على نص معين من قائمة. أتمنى أن تكون قادرًا على إيجاد حل لمشكلتك. يرجى ترك تعليق إذا كان لديك أي اقتراحات أو أسئلة. علاوة على ذلك ، يمكنك زيارة مدونتنا لمزيد من هذه المقالات.