جدول المحتويات
يعرض البرنامج التعليمي بعض الصيغ المختلفة لإجراء بحث ثنائي الأبعاد في Excel. ما عليك سوى إلقاء نظرة على البدائل واختيار المفضل لديك :)
عند البحث عن شيء ما في جداول بيانات Excel الخاصة بك ، في معظم الأوقات كنت تبحث عموديًا في أعمدة أو أفقيًا في صفوف. لكن في بعض الأحيان تحتاج إلى إلقاء نظرة على كل من الصفوف والأعمدة. بمعنى آخر ، تهدف إلى العثور على قيمة عند تقاطع صف وعمود معين. وهذا ما يسمى بحث المصفوفة (الملقب بحث ثنائي الأبعاد أو بحث ثنائي الاتجاه ) ، وهذا البرنامج التعليمي يوضح كيفية القيام بذلك بأربع طرق مختلفة.
صيغة مطابقة مطابقة مؤشر Excel
الطريقة الأكثر شيوعًا لإجراء بحث ثنائي الاتجاه في Excel هي استخدام INDEX MATCH MATCH. هذا تباين في صيغة INDEX MATCH الكلاسيكية التي تضيف إليها دالة MATCH أخرى للحصول على كل من أرقام الصفوف والأعمدة:
INDEX ( data_array، MATCH ( vlookup_value، lookup_column_range، 0)، MATCH ( hlookup value، lookup_row_range، 0))كمثال ، دعنا نصنع صيغة لسحب السكان لحيوان معين في سنة معينة من الجدول أدناه. بالنسبة للمبتدئين ، نحدد جميع الوسائط:
- Data_array - B2: E4 (خلايا البيانات ، لا تشمل رؤوس الصفوف والأعمدة)
- Vlookup_value - H1 (حيوان مستهدف)
- Lookup_column_range - A2: A4 (رؤوس الصفوف: أسماء الحيوانات) -A3: A4
- Hlookup_value - H2 (السنة المستهدفة)
- Lookup_row_range - B1: E1 (رؤوس الأعمدة: سنوات)
ضع كل الوسائط معًا وستحصل على هذه الصيغة للبحث ثنائي الاتجاه:
=INDEX(B2:E4, MATCH(H1, A2:A4, 0), MATCH(H2, B1:E1, 0))
كيف تعمل هذه الصيغة
بينما قد تبدو قليلاً معقد للوهلة الأولى ، فإن منطق الصيغة واضح حقًا وسهل الفهم. تسترد الدالة INDEX قيمة من مصفوفة البيانات بناءً على أرقام الصفوف والأعمدة ، وتوفر دالتان MATCH هذه الأرقام:
INDEX(B2:E4, row_num, column_num)
هنا ، نستفيد من قدرة MATCH (lookup_value، lookup_array، [match_type]) لإرجاع الموضع النسبي من lookup_value في lookup_array .
لذا ، للحصول على رقم الصف ، نبحث بالنسبة للحيوان محل الاهتمام (H1) عبر رؤوس الصفوف (A2: A4):
MATCH(H1, A2:A4, 0)
للحصول على رقم العمود ، نبحث عن السنة المستهدفة (H2) عبر رؤوس الأعمدة (B1: E1):
MATCH(H2, B1:E1, 0)
في كلتا الحالتين ، نبحث عن التطابق التام عن طريق ضبط الوسيطة الثالثة على 0.
في هذا المثال ، ترجع أول MATCH 2 لأن قيمة vlookup الخاصة بنا (الدب القطبي) موجودة في A3 ، وهي الخلية الثانية في A2: A4. تُرجع المطابقة الثانية 3 لأن قيمة hlookup (2000) موجودة في D1 ، وهي الخلية الثالثة في B1: E1.
بالنظر إلى ما سبق ، تقلل الصيغة إلى:
INDEX(B2:E4, 2, 3)
وإرجاع قيمة عند تقاطع الصف الثاني والعمود الثالث في صفيف البيانات B2: E4 ، وهوالقيمة في الخلية D3.
صيغة VLOOKUP و MATCH للبحث ثنائي الاتجاه
هناك طريقة أخرى لإجراء بحث ثنائي الأبعاد في Excel وهي استخدام مجموعة من وظائف VLOOKUP و MATCH:
VLOOKUP ( vlookup_value ، table_array ، MATCH ( hlookup_value ، lookup_row_range ، 0)، FALSE)لجدول العينة ، تأخذ الصيغة الشكل التالي:
=VLOOKUP(H1, A2:E4, MATCH(H2, A1:E1, 0), FALSE)
المكان:
- Table_array - A2: E4 (خلايا البيانات بما في ذلك رؤوس الصفوف)
- Vlookup_value - H1 (حيوان مستهدف)
- Hlookup_value - H2 (العام المستهدف)
- Lookup_row_range - A1: E1 (رؤوس الأعمدة: سنوات)
كيف تعمل هذه الصيغة
جوهر الصيغة هو وظيفة VLOOKUP المكونة للمطابقة التامة (الوسيطة الأخيرة تعيين إلى FALSE) ، والذي يبحث عن قيمة البحث (H1) في العمود الأول من صفيف الجدول (A2: E4) وإرجاع قيمة من عمود آخر في نفس الصف. لتحديد العمود الذي تريد إرجاع قيمة منه ، يمكنك استخدام دالة MATCH التي تم تكوينها أيضًا للمطابقة التامة (تم تعيين الوسيطة الأخيرة على 0):
MATCH(H2, A1:E1, 0)
MATCH يبحث عن القيمة في H2 عبر رؤوس الأعمدة (A1: E1) وإرجاع الموضع النسبي للخلية التي تم العثور عليها. في حالتنا ، تم العثور على العام الهدف (2010) في E1 ، وهو الخامس في صفيف البحث. لذلك ، يذهب الرقم 5 إلى col_index_num وسيطة VLOOKUP:
VLOOKUP(H1, A2:E4, 5, FALSE)
يأخذها VLOOKUP من هناك ، ويجدمطابقة تامة لقيمة البحث الخاصة بها في A2 وإرجاع قيمة من العمود الخامس في نفس الصف ، وهي الخلية E2.
ملاحظة مهمة! لكي تعمل الصيغة بشكل صحيح ، يجب أن يحتوي table_array (A2: E4) من VLOOKUP و lookup_array من MATCH (A1: E1) على نفس عدد الأعمدة ، وإلا فإن الرقم الذي تم تمريره بواسطة MATCH إلى col_index_num سيكون غير صحيح (لن يتوافق مع موضع العمود في table_array ).
دالة XLOOKUP للبحث في الصفوف والأعمدة
قدمت Microsoft مؤخرًا وظيفة أخرى في Excel تهدف إلى استبدال جميع وظائف البحث الحالية مثل VLOOKUP و HLOOKUP و INDEX MATCH. من بين أشياء أخرى ، يمكن لـ XLOOKUP إلقاء نظرة على تقاطع صف وعمود معين:
XLOOKUP ( vlookup_value ، vlookup_column_range ، XLOOKUP ( hlookup_value ، hlookup_row_range ، data_array ))بالنسبة لمجموعة البيانات النموذجية الخاصة بنا ، تظهر الصيغة على النحو التالي:
=XLOOKUP(H1, A2:A4, XLOOKUP(H2, B1:E1, B2:E4))
ملاحظة. تعد XLOOKUP حاليًا دالة بيتا ، وهي متاحة فقط لمشتركي Office 365 الذين يشكلون جزءًا من برنامج Office Insiders.
كيف تعمل هذه الصيغة
تستخدم الصيغة قدرة XLOOKUP على إرجاع صف أو عمود بأكمله. تبحث الدالة الداخلية عن السنة المستهدفة في صف الرأس وتُرجع جميع القيم لتلك السنة (في هذا المثال ، لعام 1980). هذه القيم تذهب إلى return_array وسيطة الخارجيXLOOKUP:
XLOOKUP(H1, A2:A4, {22000;25000;700}))
تبحث الدالة XLOOKUP الخارجية عن الحيوان الهدف عبر رؤوس الأعمدة وترجع القيمة في نفس الموضع من return_array.
صيغة SUMPRODUCT لاثنين - البحث عن طريق
وظيفة SUMPRODUCT تشبه السكين السويسري في Excel - يمكنها القيام بالعديد من الأشياء خارج الغرض المحدد لها ، خاصة عندما يتعلق الأمر بتقييم معايير متعددة.
للبحث عن اثنين المعايير ، في الصفوف والأعمدة ، استخدم هذه الصيغة العامة:
SUMPRODUCT ( vlookup_column_range = vlookup_value ) * ( hlookup_row_range = hlookup_value ) ، data_array )لإجراء بحث ثنائي الاتجاه في مجموعة البيانات الخاصة بنا ، تسير الصيغة على النحو التالي:
=SUMPRODUCT((A2:A4=H1) * (B1:E1=H2), B2:E4)
ستعمل البنية التالية أيضًا:
=SUMPRODUCT((A2:A4=H1) * (B1:E1=H2) * B2:E4)
كيف تعمل هذه الصيغة
في قلب الصيغة ، نقارن قيمتي بحث مقابل رؤوس الصفوف والأعمدة (الحيوان الهدف في H1 مقابل كل الحيوانات أسماء في A2: A4 والسنة المستهدفة في H2 مقابل جميع السنوات في B1: E1):
(A2:A4=H1) * (B1:E1=H2)
هذه الدقة القيم في صفيفتين من قيم TRUE و FALSE ، حيث تمثل TRUE المطابقات:
{FALSE;FALSE;TRUE} * {FALSE,TRUE,FALSE,FALSE}
تقوم عملية الضرب بإجبار قيم TRUE و FALSE في 1 و 0 وتنتج مصفوفة ثنائية الأبعاد من 4 أعمدة و 3 صفوف (الصفوف مفصولة بفواصل منقوطة وكل عمود من البيانات بفاصلة):
{0,0,0,0;0,0,0,0;0,1,0,0}
تضرب وظائف SUMPRODUCT عناصر المصفوفة أعلاه بعناصرB2: E4 في نفس المواضع:
{0,0,0,0;0,0,0,0;0,1,0,0} * {22000,13800,8500,3500;25000,23000,22000,20000;700,2000,2300,2500}
ولأن الضرب في صفر يعطي صفرًا ، يبقى العنصر المقابل لـ 1 في المصفوفة الأولى فقط:
SUMPRODUCT({0,0,0,0;0,0,0,0;0,2000,0,0})
أخيرًا ، تجمع SUMPRODUCT عناصر المصفوفة الناتجة وترجع قيمة 2000.
ملاحظة. إذا كان الجدول الخاص بك يحتوي على أكثر من صف أو رؤوس أعمدة بنفس الاسم ، فسيحتوي الصفيف النهائي على أكثر من رقم واحد بخلاف الصفر ، وستتم إضافة كل هذه الأرقام. نتيجة لذلك ، ستحصل على مجموع القيم التي تلبي كلا المعيارين. هذا هو ما يجعل صيغة SUMPRODUCT مختلفة عن INDEX MATCH MATCH و VLOOKUP ، والتي تعيد أول تطابق تم العثور عليه.
بحث المصفوفة مع النطاقات المسماة (التقاطع الصريح)
طريقة واحدة أكثر بساطة مذهلة للقيام بذلك. يتم البحث عن مصفوفة في Excel باستخدام نطاقات مسماة. وإليك الطريقة:
الجزء 1: تسمية الأعمدة والصفوف
أسرع طريقة لتسمية كل صف وكل عمود في الجدول الخاص بك هي:
- حدد الجدول بأكمله (A1: E4 في حالتنا).
- في علامة التبويب الصيغ ، في مجموعة الأسماء المحددة ، انقر فوق إنشاء من التحديد أو اضغط على الاختصار Ctrl + Shift + F3.
- في مربع الحوار إنشاء أسماء من التحديد ، حدد الصف العلوي و اليسار العمود وانقر فوق موافق.
يؤدي هذا تلقائيًا إلى إنشاء أسماء بناءً على رؤوس الصفوف والأعمدة. ومع ذلك ، هناك بعض التحذيرات:
- إذا كان العمود و / أورؤوس الصفوف هي أرقام أو تحتوي على أحرف معينة غير مسموح بها في أسماء Excel ، ولن يتم إنشاء أسماء مثل هذه الأعمدة والصفوف. لمشاهدة قائمة بالأسماء التي تم إنشاؤها ، افتح مدير الأسماء (Ctrl + F3). إذا كانت بعض الأسماء مفقودة ، فقم بتعريفها يدويًا كما هو موضح في كيفية تسمية نطاق في Excel.
- إذا كانت بعض رؤوس الصفوف أو الأعمدة تحتوي على مسافات ، فسيتم استبدال المسافات بالشرطات السفلية ، على سبيل المثال ، Polar_bear .
بالنسبة لجدول العينة ، قام Excel تلقائيًا بإنشاء أسماء الصفوف فقط. يجب إنشاء أسماء الأعمدة يدويًا لأن رؤوس الأعمدة عبارة عن أرقام. للتغلب على هذا ، يمكنك ببساطة تمهيد الأرقام بالشرطات السفلية ، مثل _1990 .
ونتيجة لذلك ، لدينا النطاقات المسماة التالية:
الجزء 2 : قم بعمل صيغة بحث مصفوفة
لسحب قيمة عند تقاطع صف وعمود معين ، فقط اكتب إحدى الصيغ العامة التالية في خلية فارغة:
= row_name اسم_العمودأو العكس:
= اسم_العمود اسم_الصفعلى سبيل المثال ، للحصول على تعداد الحيتان الزرقاء في عام 1990 ، الصيغة بسيطة مثل:
=Blue_whale _1990
إذا احتاج شخص ما إلى إرشادات أكثر تفصيلاً ، ستوجهك الخطوات التالية خلال العملية:
- في خلية حيث تريد أن تظهر النتيجة ، اكتب علامة المساواة (=).
- ابدأ في كتابة اسم الصف الهدف ، على سبيل المثال ، الحوت الأزرق . بعد، بعدماقمت بكتابة حرفين ، سيعرض Excel جميع الأسماء الموجودة التي تطابق إدخالك. انقر نقرًا مزدوجًا فوق الاسم المطلوب لإدخاله في الصيغة:
- بعد اسم الصف ، اكتب مسافة ، والتي تعمل كعامل التقاطع في هذه الحالة.
- أدخل اسم العمود الهدف ( _1990 في حالتنا).
- بمجرد إدخال اسمي الصفوف والأعمدة ، سيبرز Excel الصف والعمود المطابقين في الجدول ، وتضغط على Enter لإكمال الصيغة:
تم إجراء بحث المصفوفة الخاص بك ، وتظهر لقطة الشاشة أدناه النتيجة:
هذه هي كيفية البحث في الصفوف والأعمدة في Excel. أشكرك على القراءة وآمل أن أراك على مدونتنا الأسبوع المقبل!
التنزيلات المتاحة
نموذج بحث ثنائي الأبعاد