Excel: ابحث عن قيم متعددة واستبدلها مرة واحدة

  • شارك هذا
Michael Brown

في هذا البرنامج التعليمي ، سننظر في عدة طرق للعثور على كلمات أو سلاسل أو أحرف فردية متعددة واستبدالها ، حتى تتمكن من اختيار أفضل ما يناسب احتياجاتك.

كيف يبحث الناس عادة في Excel؟ في الغالب ، باستخدام Find & amp؛ استبدال الميزة ، والتي تعمل بشكل جيد للقيم الفردية. ولكن ماذا لو كان لديك عشرات أو حتى مئات العناصر لاستبدالها؟ بالتأكيد ، لا أحد يرغب في إجراء كل هذه الاستبدالات يدويًا واحدًا تلو الآخر ، ثم القيام بذلك مرة أخرى عندما تتغير البيانات. لحسن الحظ ، هناك عدد قليل من الطرق الأكثر فاعلية لإجراء استبدال جماعي في Excel ، وسنبحث في كل منها بالتفصيل.

    ابحث عن قيم متعددة واستبدلها بالبدائل المتداخلة

    أسهل طريقة للبحث عن إدخالات متعددة واستبدالها في Excel هي باستخدام وظيفة SUBSTITUTE.

    منطق الصيغة بسيط للغاية: تكتب بعض الوظائف الفردية لاستبدال قيمة قديمة بأخرى جديدة . وبعد ذلك ، تقوم بتداخل هذه الوظائف مع بعضها البعض ، بحيث يستخدم كل بديل لاحق ناتج البديل السابق للبحث عن القيمة التالية. old_text1 ، new_text1 old_text2 ، new_text2 old_text3 ، new_text3 )

    في قائمة المواقع في A2: A10 ، افترض أنك تريد استبدال أسماء البلدان المختصرة (مثل FR و UK و USA ) بأسماء كاملةستعمل وظيفة MassReplace فقط في المصنف الذي أدخلت فيه الرمز. إذا لم تكن متأكدًا من كيفية القيام بذلك بشكل صحيح ، فالرجاء اتباع الخطوات الموضحة في كيفية إدراج رمز VBA في Excel.

    بمجرد إضافة الرمز إلى المصنف الخاص بك ، ستظهر الوظيفة في الصيغة intellisense - فقط اسم الوظيفة وليس الحجج! رغم ذلك ، أعتقد أنه ليس من المهم تذكر بناء الجملة:

    MassReplace (input_range ، find_range ، replace_range)

    حيث:

    • Input_range - نطاق المصدر حيث تريد استبدال القيم.
    • Find_range - الأحرف أو السلاسل أو الكلمات المراد البحث عنها.
    • Replace_range - الأحرف ، السلاسل ، أو الكلمات المراد استبدالها بـ.

    في Excel 365 ، نظرًا لدعم المصفوفات الديناميكية ، يعمل هذا كصيغة عادية ، والتي يجب إدخالها فقط في الخلية العلوية (B2):

    =MassReplace(A2:A10, D2:D4, E2:E4)

    في Excel ما قبل الديناميكي ، يعمل هذا كصيغة صفيف CSE ذات النمط القديم: يمكنك تحديد نطاق المصدر بأكمله (B2: B10) ، اكتب الصيغة ، واضغط على Ctrl + Shift + Enter المفاتيح في وقت واحد لإكمالها.

    المزايا : بديل لائق لوظيفة LAMBDA المخصصة في Excel 2019 و Excel 2016 والإصدارات السابقة

    العيوب : يجب حفظ المصنف كملف .xlsm ممكّن بماكرو

    استبدال مجمّع في Excel باستخدام ماكرو VBA

    إذا كنت تحب السيارات تزاوج المهام المشتركة مع وحدات الماكرو ، ثم أنتيمكن استخدام رمز VBA التالي للبحث عن قيم متعددة واستبدالها في نطاق.

    Sub BulkReplace () Dim Rng As Range ، SourceRng As Range ، ReplaceRng As Range On Error ، استئناف المجموعة التالية SourceRng = Application.InputBox ("بيانات المصدر: "،" Bulk Replace "، Application.Selection.Address، Type: = 8) Err.Clear If Not SourceRng Is Nothing ثم قم بتعيين ReplaceRng = Application.InputBox (" نطاق الاستبدال: "،" استبدال مجمع "، النوع: = 8) امسح خطأ إذا لم يكن ReplaceRng لا شيء ثم Application.ScreenUpdating = خطأ لكل Rng في ReplaceRng.Columns (1). Application.ScreenUpdating = True End If End If End Sub

    للاستفادة من الماكرو على الفور ، يمكنك تنزيل نموذج المصنف الذي يحتوي على الكود. أو يمكنك إدراج التعليمات البرمجية في المصنف الخاص بك.

    كيفية استخدام الماكرو

    قبل تشغيل الماكرو ، اكتب القيم القديمة والجديدة في عمودين متجاورين كما هو موضح في الصورة أدناه ( C2: D4).

    ثم حدد بيانات المصدر ، واضغط على Alt + F8 ، واختر الماكرو BulkReplace ، وانقر فوق تشغيل .

    نظرًا لأن المصدر غضب محدد مسبقًا ، فقط تحقق من المرجع وانقر فوق موافق:

    بعد ذلك ، حدد نطاق الاستبدال ، وانقر فوق موافق:

    تم!

    المزايا : الإعداد مرة واحدة ، إعادة الاستخدام في أي وقت

    العيوب : يجب تشغيل الماكرو مع كل البياناتتغيير

    البحث المتعدد والاستبدال في Excel باستخدام أداة السلسلة الفرعية

    في المثال الأول ، ذكرت أن البديل المتداخل هو أسهل طريقة لاستبدال القيم المتعددة في Excel. أعترف أنني كنت مخطئا. يجعل Ultimate Suite الأمور أكثر سهولة!

    لإجراء استبدال جماعي في ورقة العمل الخاصة بك ، توجه إلى علامة التبويب Ablebits Data وانقر فوق أدوات السلسلة الفرعية & gt؛ استبدل السلاسل الفرعية .

    سيظهر مربع الحوار استبدال السلاسل الفرعية يطلب منك تحديد النطاق المصدر و سلاسل فرعية نطاق.

    مع تحديد النطاقين ، انقر فوق الزر استبدال وابحث عن النتائج في عمود جديد مدرج إلى اليمين من البيانات الأصلية. نعم ، الأمر بهذه السهولة!

    نصيحة. قبل النقر فوق استبدال ، هناك شيء واحد مهم يجب أن تفكر فيه - المربع حساس لحالة الأحرف . تأكد من تحديده إذا كنت ترغب في التعامل مع الأحرف الكبيرة والصغيرة كأحرف مختلفة. في هذا المثال ، نضع علامة في هذا الخيار لأننا نريد فقط استبدال السلاسل ذات الأحرف الكبيرة وترك السلاسل الفرعية مثل "fr" أو "uk" أو "ak" ضمن كلمات أخرى سليمة.

    إذا كنت مهتمًا بمعرفة العمليات المجمعة الأخرى التي يمكن إجراؤها على السلاسل ، فراجع أدوات السلسلة الفرعية الأخرى المضمنة في Ultimate Suite. أو أفضل من ذلك ، قم بتنزيل الإصدار التقييمي أدناه وجربه!

    هذه هي طريقة البحث والاستبدالعدة كلمات وحروف مرة واحدة في Excel. أشكركم على القراءة وآمل أن أراكم على مدونتنا الأسبوع المقبل!

    التنزيلات المتاحة

    البحث المتعدد والاستبدال في Excel (ملف .xlsm)

    Ultimate Suite 14 - إصدار كامل الوظائف (ملف exe.)

    الأسماء.

    للقيام بذلك ، أدخل القيم القديمة في D2: D4 والقيم الجديدة في E2: E4 كما هو موضح في لقطة الشاشة أدناه. وبعد ذلك ، ضع الصيغة أدناه في B2 واضغط على Enter:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)

    … وستكون لديك جميع الاستبدالات مرة واحدة:

    يرجى ملاحظة أن النهج أعلاه يعمل فقط في Excel 365 الذي يدعم المصفوفات الديناميكية.

    في الإصدارات السابقة للديناميكية من Excel 2019 و Excel 2016 والإصدارات الأقدم ، يجب أن تكون الصيغة مكتوب للخلية العلوية (B2) ، ثم نسخها إلى الخلايا التالية:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)

    يرجى الانتباه إلى أننا ، في هذه الحالة ، نغلق قيم الاستبدال بمراجع الخلية المطلقة ، لذلك لن يتحولوا عند نسخ الصيغة لأسفل.

    ملاحظة. وظيفة SUBSTITUTE هي حساسة لحالة الأحرف ، مما يعني أنه يجب عليك كتابة القيم القديمة ( old_text ) في نفس حالة الأحرف كما تظهر في البيانات الأصلية.

    بهذه السهولة التي يمكن أن تكون ، فإن هذه الطريقة لها عيب كبير - عندما يكون لديك عشرات العناصر لاستبدالها ، تصبح الوظائف المتداخلة صعبة للغاية.

    المزايا : سهل -لتنفيذ؛ مدعوم في جميع إصدارات Excel

    العيوب : من الأفضل استخدامه لعدد محدود من قيم البحث / الاستبدال

    البحث واستبدال الإدخالات المتعددة بـ XLOOKUP

    في الحالة التي تبحث فيها عن استبدال محتوى الخلية بالكامل ، وليس الجزء الخاص به ، فإن وظيفة XLOOKUP مفيدة.

    دعنالنفترض أن لديك قائمة بالبلدان في العمود أ وتهدف إلى استبدال جميع الاختصارات بالأسماء الكاملة المقابلة. كما في المثال السابق ، تبدأ بإدخال عنصري "بحث" و "استبدال" في أعمدة منفصلة (D و E على التوالي) ، ثم أدخل هذه الصيغة في B2:

    =XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)

    تمت الترجمة من لغة Excel إلى اللغة البشرية ، وإليك ما تفعله الصيغة:

    ابحث عن قيمة A2 (lookup_value) في D2: D4 (lookup_array) وأعد تطابقًا من E2: E4 (return_array). إذا لم يتم العثور عليها ، اسحب القيمة الأصلية من A2.

    انقر نقرًا مزدوجًا فوق مقبض التعبئة لنسخ الصيغة إلى الخلايا أدناه ، ولن تجعلك النتيجة تنتظر:

    نظرًا لأن وظيفة XLOOKUP متوفرة فقط في Excel 365 ، فلن تعمل الصيغة أعلاه في الإصدارات السابقة. ومع ذلك ، يمكنك بسهولة محاكاة هذا السلوك بمزيج من IFERROR أو IFNA و VLOOKUP:

    =IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)

    ملاحظة. بخلاف SUBSTITUTE ، فإن وظائف XLOOKUP و VLOOKUP ليست حساسة لحالة الأحرف ، مما يعني أنها تبحث عن قيم البحث متجاهلة حالة الأحرف. على سبيل المثال ، ستحل الصيغة محل كل من FR و fr بـ France .

    المزايا : الاستخدام غير العادي للوظائف المعتادة ؛ يعمل في كافة إصدارات Excel

    العيوب : يعمل على مستوى الخلية ، ولا يمكن استبدال جزء من محتويات الخلية

    استبدال متعدد باستخدام دالة LAMBDA التكرارية

    لمايكروسوفت365 مشتركًا ، يوفر Excel وظيفة خاصة تسمح بإنشاء وظائف مخصصة باستخدام لغة صيغة تقليدية. نعم ، أنا أتحدث عن لامبا. يكمن جمال هذه الطريقة في قدرتها على تحويل صيغة طويلة جدًا ومعقدة إلى صيغة مدمجة وبسيطة للغاية. علاوة على ذلك ، يتيح لك إنشاء وظائف خاصة بك غير موجودة في Excel ، وهو أمر كان ممكنًا من قبل فقط مع VBA.

    للحصول على معلومات مفصلة حول إنشاء واستخدام وظائف LAMBDA المخصصة ، يرجى مراجعة هذا البرنامج التعليمي: كيف لكتابة وظائف LAMBDA في Excel. هنا ، سنناقش بعض الأمثلة العملية.

    المزايا : النتيجة هي وظيفة أنيقة وسهلة الاستخدام بشكل مثير للدهشة ، بغض النظر عن عدد أزواج الاستبدال

    العيوب : متوفر فقط في Excel 365 ؛ خاص بالمصنف ولا يمكن إعادة استخدامه عبر مصنفات مختلفة

    مثال 1. ابحث واستبدل كلمات / سلاسل متعددة في وقت واحد

    لاستبدال كلمات أو نصوص متعددة دفعة واحدة ، قمنا بإنشاء دالة LAMBDA ، المسماة MultiReplace ، والتي يمكن أن تتخذ أحد هذه الأشكال:

    =LAMBDA(text, old, new, IF(old"", MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0)), text))

    أو

    =LAMBDA(text, old, new, IF(old="", text, MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))))

    كلاهما متكرر الوظائف التي تسمي نفسها. الاختلاف هو فقط في كيفية إنشاء نقطة الخروج.

    في الصيغة الأولى ، تتحقق وظيفة IF ما إذا كانت القائمة القديمة ليست فارغة (القديمة ""). إذا كانت TRUE ، يتم استدعاء الوظيفة MultiReplace . إذا كانت FALSE ، فإن الوظيفةإرجاع نص هو شكله الحالي ويخرج.

    تستخدم الصيغة الثانية المنطق العكسي: إذا كان قديم فارغًا (old = "") ، فقم بإرجاع نص والخروج ؛ وإلا اتصل بـ MultiReplace .

    يتم إنجاز الجزء الأصعب! ما تبقى لك القيام به هو تسمية وظيفة MultiReplace في مدير الاسم كما هو موضح في لقطة الشاشة أدناه. للحصول على الإرشادات التفصيلية ، يرجى الاطلاع على كيفية تسمية دالة LAMBDA.

    بمجرد حصول الوظيفة على اسم ، يمكنك استخدامها تمامًا مثل أي وظيفة أخرى مضمنة.

    بغض النظر عن صيغتي الصيغتين اللتين تختارهما ، من منظور المستخدم النهائي ، تكون البنية بسيطة مثل:

    MultiReplace (نص ، قديم ، جديد)

    المكان:

    • نص - بيانات المصدر
    • قديم - القيم المراد العثور عليها
    • جديد - القيم التي يجب استبدالها

    إذا أخذنا المثال السابق إلى أبعد من ذلك ، فلن نستبدل اختصارات الدولة فحسب ، بل اختصارات الدولة أيضًا. لهذا ، اكتب الاختصارات ( قيم قديمة) في العمود D بدءًا من D2 والأسماء الكاملة ( قيم جديدة) في العمود E بدءًا من E2.

    في B2 ، أدخل وظيفة MultiReplace:

    =MultiReplace(A2:A10, D2, E2)

    اضغط على Enter واستمتع بالنتائج :)

    كيف تعمل هذه الصيغة

    الدليل لفهم الصيغة هو فهم العودية. قد يبدو هذا معقدًا ، لكن المبدأ بسيط للغاية. مع كلالتكرار ، الدالة العودية تحل مثالًا صغيرًا لمشكلة أكبر. في حالتنا ، فإن الوظيفة MultiReplace تدور عبر القيم القديمة والجديدة ، مع كل حلقة ، تقوم باستبدال واحد:

    MultiReplace (SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))

    كما هو الحال مع وظائف SUBSTITUTE المتداخلة ، تصبح نتيجة SUBSTITUTE السابقة هي المعلمة text لـ SUBSTITUTE التالي. بمعنى آخر ، في كل مكالمة لاحقة لـ MultiReplace ، لا تعالج الدالة SUBSTITUTE السلسلة النصية الأصلية ، ولكن ناتج المكالمة السابقة.

    للتعامل مع جميع العناصر الموجودة على قائمة القديمة ، نبدأ بالخلية العلوية ، ونستخدم وظيفة OFFSET لتحريك صف واحد لأسفل مع كل تفاعل:

    OFFSET(old, 1, 0)

    يتم إجراء نفس الشيء مع قائمة جديدة:

    OFFSET(new, 1, 0)

    الشيء الحاسم هو توفير نقطة خروج لمنع الاستدعاءات المتكررة من الاستمرار إلى الأبد. يتم ذلك بمساعدة الدالة IF - إذا كانت الخلية القديمة فارغة ، تقوم الوظيفة بإرجاع نص وهي شكلها الحالي وتخرج:

    =LAMBDA(text, old, new, IF(old="", text, MultiReplace(…)))

    أو

    =LAMBDA(text, old, new, IF(old"", MultiReplace(…), text))

    مثال 2. استبدال أحرف متعددة في Excel

    من حيث المبدأ ، يمكن للوظيفة MultiReplace التي تمت مناقشتها في المثال السابق تعامل مع الأحرف الفردية أيضًا ، بشرط إدخال كل حرف قديم وجديد في خلية منفصلة ، تمامًا مثل الأسماء المختصرة والكاملة في لقطات الشاشة أعلاه.

    إذا كنت تفضل إدخال القديمالأحرف في خلية واحدة والأحرف الجديدة في خلية أخرى ، أو اكتبها مباشرة في الصيغة ، ثم يمكنك إنشاء وظيفة مخصصة أخرى ، تسمى ReplaceChars ، باستخدام إحدى هذه الصيغ:

    =LAMBDA(text, old_chars, new_chars, IF(old_chars"", ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1)), text))

    أو

    =LAMBDA(text, old_chars, new_chars, IF(old_chars="", text, ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))))

    تذكر تسمية وظيفة Lambda الجديدة في Name Manager كالمعتاد:

    ووظيفتك المخصصة الجديدة جاهزة للاستخدام:

    ReplaceChars (text، old_chars، new_chars)

    المكان:

    • Text - the original strings
    • قديم - الأحرف المراد البحث عنها
    • جديد - الأحرف المراد استبدالها بـ

    لإعطائها اختبارًا ميدانيًا ، لنفعل شيئًا يتم إجراؤه غالبًا على البيانات المستوردة - استبدل علامات الاقتباس الذكية والفواصل العليا الذكية بعلامات اقتباس مستقيمة وفواصل علوية مستقيمة.

    أولاً ، نقوم بإدخال علامات الاقتباس الذكية والفاصلة العليا الذكية في D2 ، والاقتباسات المستقيمة والفاصلة العليا المستقيمة في E2 ، وفصل الأحرف بمسافات لقراءة أفضل. (نظرًا لأننا نستخدم نفس المحدد في كلتا الخليتين ، فلن يكون له أي تأثير على النتيجة - سيستبدل Excel مسافة بمسافة فقط.)

    بعد ذلك ، ندخل هذه الصيغة في B2:

    =ReplaceChars(A2:A4, D2, E2)

    واحصل على النتائج التي كنا نبحث عنها بالضبط:

    من الممكن أيضًا كتابة الأحرف مباشرة في الصيغة. في حالتنا ، تذكر فقط "تكرار" علامات الاقتباس المستقيمة مثل هذا:

    =ReplaceChars(A2:A4, "“ ” ’", """ "" '")

    كيف تعمل هذه الصيغة

    ReplaceChars تتنقل الوظيفة عبر السلاسل old_chars و new_chars وتقوم باستبدال واحد في كل مرة بدءًا من الحرف الأول على اليسار. يتم تنفيذ هذا الجزء بواسطة وظيفة SUBSTITUTE:

    SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars))

    مع كل تكرار ، تزيل الدالة RIGHT حرفًا واحدًا من يسار كل من old_chars و سلاسل new_chars ، بحيث يمكن لـ LEFT جلب الزوج التالي من الأحرف للاستبدال:

    ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))

    قبل كل استدعاء تعاودي ، تقوم الدالة IF بتقييم السلسلة old_chars . إذا لم تكن فارغة ، فإن الوظيفة تستدعي نفسها. بمجرد استبدال الحرف الأخير ، تنتهي عملية التكرار ، وتعيد الصيغة نص شكلها الحالي وتخرج.

    ملاحظة. نظرًا لأن وظيفة SUBSTITUTE المستخدمة في الصيغ الأساسية لدينا هي حساسة لحالة الأحرف ، فإن كلا من Lambdas ( MultiReplace و ReplaceChars ) يعاملان الأحرف الكبيرة والصغيرة كأحرف مختلفة.

    البحث الشامل واستبداله بـ UDF

    في حالة عدم توفر وظيفة LAMBDA في Excel ، يمكنك كتابة وظيفة محددة بواسطة المستخدم للاستبدال المتعدد بطريقة تقليدية باستخدام VBA.

    لتمييز UDF عن وظيفة LAMBDA MultiReplace ، سنقوم بتسميتها بشكل مختلف ، قل MassReplace . رمز الوظيفة هو كما يلي:

    Function MassReplace (InputRng As Range ، FindRng As Range ، ReplaceRng As Range) As Variant () DimarRes () كمصفوفة متغيرة لتخزين النتائج Dim arSearchReplace () ، مصفوفة sTmp As String حيث يتم تخزين أزواج البحث / الاستبدال ، السلسلة المؤقتة Dim iFindCurRow ، cntFindRows As Long فهرس الصف الحالي من صفيف SearchReplace ، العد الصفوف Dim iInputCurRow و iInputCurCol و cntInputRows و cntInputCols As Long فهرس الصف الحالي في نطاق المصدر وفهرس العمود الحالي في نطاق المصدر وعدد الصفوف وعدد الأعمدة cntInputRows = InputRng.Rows.Count cntInputCols = InputRng .Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes (1 To cntInputRows، 1 To cntInputCols) ReDim arSearchReplace (1 To cntFindRows، 1 To 2) 'تحضير مجموعة أزواج البحث / الاستبدال لـ iFindCurRow = 1 إلى cntFeplace iFindCurRow، 1) = FindRng.Cells (iFindCurRow، 1) .Value arSearchReplace (iFindCurRow، 2) = ReplaceRng.Cells (iFindCurRow، 1) .Value Next 'البحث والاستبدال في النطاق المصدر لـ iInputCurputRow = 1 To cntInput 1 إلى cntInputCols sTm p = InputRng.Cells (iInputCurRow، iInputCurCol) .Value 'استبدال جميع أزواج البحث / الاستبدال في كل خلية لـ iFindCurRow = 1 To cntFindRows sTmp = استبدال (sTmp ، arSearchReplace (iFindCurRow ، 1) ، arSearchRepures (iFindCurRow) (iInputCurRow، iInputCurCol) = sTmp Next Next MassReplace = arRes End Function

    مثل الوظائف المعرفة من LAMBDA ، UDFs على مستوى المصنف . هذا يعني أن

    مايكل براون متحمس للتكنولوجيا ولديه شغف لتبسيط العمليات المعقدة باستخدام أدوات البرمجيات. مع أكثر من عشر سنوات من الخبرة في صناعة التكنولوجيا ، صقل مهاراته في Microsoft Excel و Outlook ، بالإضافة إلى جداول بيانات Google والمستندات. مدونة مايكل مكرسة لمشاركة معرفته وخبرته مع الآخرين ، وتقديم نصائح ودروس تعليمية سهلة المتابعة لتحسين الإنتاجية والكفاءة. سواء كنت محترفًا متمرسًا أو مبتدئًا ، تقدم مدونة مايكل رؤى قيمة ونصائح عملية للحصول على أقصى استفادة من أدوات البرامج الأساسية هذه.