قم بإزالة النص قبل أو بعد أو بين حرفين في Excel

  • شارك هذا
Michael Brown

في المقالتين الأخيرتين ، بحثنا في طرق مختلفة لإزالة الأحرف من السلاسل في Excel. اليوم ، سنحقق في حالة استخدام أخرى - كيفية حذف كل شيء قبل أو بعد حرف معين.

    احذف النص قبل أو بعد أو بين حرفين باستخدام Find & amp؛ استبدل

    لمعالجة البيانات في خلايا متعددة ، يعد البحث والاستبدال الأداة الصحيحة. لإزالة جزء من سلسلة تسبق أو تتبع حرفًا معينًا ، هذه هي الخطوات التي يجب تنفيذها:

    1. حدد كل الخلايا التي تريد حذف النص فيها.
    2. اضغط على Ctrl + H لفتح مربع الحوار بحث واستبدال .
    3. في المربع ابحث عن ما ، أدخل إحدى المجموعات التالية:
      • لإزالة النص قبل حرف معين ، اكتب الحرف مسبوقًا بعلامة النجمة (* char).
      • لإزالة النص بعد حرف معين ، اكتب الحرف متبوعًا بعلامة النجمة (char *).
      • لحذف سلسلة فرعية بين حرفين ، اكتب علامة النجمة محاطة بحرفين (char * char).
    4. اترك استبدل بالمربع فارغ.
    5. انقر فوق استبدال الكل .

    على سبيل المثال ، لإزالة كل شيء بعد فاصلة بما في ذلك الفاصلة نفسها ، ضع فاصلة وعلامة النجمة (، *) في المربع ابحث عن المربع ، وستحصل على النتيجة التالية:

    لحذف سلسلة فرعية قبل فاصلة ، اكتب علامة النجمة ، فاصلة،كل شيء بعد الفاصلة الأولى في A2 ، الصيغة في B2 هي:

    =RemoveText(A3, ", ", 1, TRUE)

    لحذف كل شيء قبل الفاصلة الأولى في A2 ، الصيغة في C2 هي:

    =RemoveText(A3, ", ", 1, FALSE)

    نظرًا لأن وظيفتنا المخصصة تقبل سلسلة للمحدد ، فإننا نضع فاصلة ومسافة ("،") في الوسيطة الثانية لتجنيب مشكلة قطع المسافات البادئة بعد ذلك.

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

    احذف كل شيء قبل أو بعد أو بين الأحرف

    للحصول على المزيد من الخيارات لإزالة الأحرف الفردية أو نص من خلايا متعددة ، عن طريق التطابق أو الموضع ، أضف Ultimate Suite إلى مربع أدوات Excel.

    هنا ، سنلقي نظرة فاحصة على ميزة إزالة حسب الموضع الموجودة في Ablebits Data علامة تبويب & gt ؛ نص مجموعة & gt ؛ إزالة .

    أدناه ، سنغطي الاثنين السيناريوهات الأكثر شيوعًا.

    إزالة كل شيء قبل أو بعد نص معين

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

    1. حدد جميع الأحرف قبل النص أو جميع الأحرف بعد النص الخيار واكتب نص المفتاح (أو الحرف) في المربع التالي
    2. اعتمادًا على ما إذا كان يجب التعامل مع الأحرف الكبيرة والصغيرة على أنها أحرف مختلفة أو نفس الأحرف ، حدد أو ألغ تحديد المربع حساس لحالة الأحرف .
    3. اضغط على إزالة .

    في هذا المثال ، نقوم بإزالة جميع الأحرف التي تسبق كلمة "خطأ" في الخلايا A2: A8:

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

    إزالة النص بين حرفين

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

    1. اختر إزالة جميع السلاسل الفرعية واكتب حرفين في المربعات أدناه.
    2. إذا كان يجب إزالة الأحرف "بين" أيضًا ، حدد المربع تضمين المحددات .
    3. انقر فوق إزالة .

    As على سبيل المثال ، نحذف كل شيء بين حرفين من التيلدا (~) ، ونحصل على السلاسل النظيفة تمامًا كنتيجة:

    لتجربة الميزات المفيدة الأخرى المضمنة في هذا متعدد الوظائف أداة ، أنا أشجعك على تنزيل ملف إلكتروني نسخة التقييم في نهاية هذا المنشور. شكرًا على القراءة وآمل أن أراك على مدونتنا الأسبوع المقبل!

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

    إزالة الأحرف الأولى أو الأخيرة - أمثلة (ملف .xlsm)

    Ultimate Suite - نسخة تجريبية (ملف. exe)

    ومسافة (* ،) في المربع ابحث عن ما.

    يرجى ملاحظة أننا لا نستبدل فاصلة فقط ولكن فاصلة ومسافة لمنع البادئة مسافات في النتائج. إذا كانت بياناتك مفصولة بفواصل بدون مسافات ، فاستخدم علامة النجمة متبوعة بفاصلة (* ،).

    لحذف نص بين فاصلتين ، استخدم علامة النجمة محاطة بفواصل (، * ،).

    نصيحة. إذا كنت تفضل فصل الأسماء وأرقام الهواتف بفاصلة ، فاكتب فاصلة (،) في الحقل استبدل بـ .

    إزالة جزء من النص باستخدام Flash Fill

    في الإصدارات الحديثة من Excel (2013 وما بعده) ، هناك طريقة أكثر سهولة لاستبعاد النص الذي يسبق أو يتبع حرفًا معينًا - ميزة Flash Fill. وإليك كيفية عملها:

    1. في خلية بجوار الخلية الأولى ببياناتك ، اكتب النتيجة المتوقعة واضغط على Enter.
    2. ابدأ في كتابة قيمة مناسبة في الخلية التالية. بمجرد أن يشعر Excel بالنمط الموجود في القيم التي تقوم بإدخالها ، سيعرض معاينة للخلايا المتبقية التي تتبع نفس النمط.
    3. اضغط على مفتاح Enter لقبول الاقتراح.

    تم!

    إزالة النص باستخدام الصيغ

    في Microsoft Excel ، يمكن أيضًا إجراء العديد من عمليات معالجة البيانات باستخدام الميزات المضمنة باستخدام صيغة. على عكس الطرق السابقة ، لا تُجري الصيغ أي تغييرات على البيانات الأصلية وتمنحك مزيدًا من التحكمالنتائج.

    كيفية إزالة كل شيء بعد حرف معين

    لحذف نص بعد حرف معين ، الصيغة العامة هي:

    LEFT ( خلية ، بحث (" char cell ) -1)

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

    على سبيل المثال ، لإزالة جزء من سلسلة بعد فاصلة ، أدخل الصيغة أدناه في B2 واسحبها لأسفل عبر B7 :

    =LEFT(A2, SEARCH(",", A2) -1)

    كيفية إزالة كل شيء قبل حرف معين

    لحذف جزء من سلسلة نصية قبل حرف معين ، الصيغة العامة هي:

    RIGHT ( خلية ، LEN ( خلية ) - بحث (" حرف " ، خلية ))

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

    على سبيل المثال ، لإزالة النص قبل الفاصلة ، تكون الصيغة:

    =RIGHT(A2, LEN(A2) - SEARCH(",", A2))

    في حالتنا ، الفاصلة متبوعة بحرف مسافة. لتجنب المسافات البادئة في النتائج ، نقوم بلف الصيغة الأساسية في وظيفة TRIM:

    =TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2)))

    ملاحظات:

    • كلاهمامن الأمثلة أعلاه تفترض أن هناك فقط مثيل واحد من المحدد في السلسلة الأصلية. إذا كان هناك تكرارات متعددة ، ستتم إزالة النص قبل / بعد المثيل الأول .
    • وظيفة البحث هي ليست حساسة لحالة الأحرف ، مما يعني أنها لا تُحدث فرقًا بين الأحرف الصغيرة والكبيرة. إذا كان حرفك المحدد حرفًا وتريد تمييز حالة الأحرف ، فاستخدم وظيفة البحث الحساسة لحالة الأحرف بدلاً من البحث.

    كيفية حذف النص بعد التكرار التاسع من حرف

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

    LEFT ( خلية ، البحث عن ("#" ، SUBSTITUTE ( خلية ، " حرف " ، "#" ، n )) -1)

    حيث n هو تكرار الحرف الذي يتم بعده إزالة النص.

    يتطلب المنطق الداخلي لهذه الصيغة استخدام بعض الأحرف غير موجود في أي مكان في البيانات المصدر ، رمز التجزئة (#) في حالتنا. إذا ظهر هذا الحرف في مجموعة البيانات الخاصة بك ، فاستخدم شيئًا آخر بدلاً من "#".

    على سبيل المثال ، لإزالة كل شيء بعد الفاصلة الثانية في A2 (والفاصلة نفسها) ، تكون الصيغة:

    =LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)

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

    الجزء الرئيسي من الصيغة هو دالة FIND التي تحسب موقف ال نمحدد (فاصلة في حالتنا). وإليك الطريقة:

    نستبدل الفاصلة الثانية في A2 برمز تجزئة (أو أي حرف آخر غير موجود في بياناتك) بمساعدة SUBSTITUTE:

    SUBSTITUTE(A2, ",", "#", 2)

    تنتقل السلسلة الناتجة إلى الوسيطة الثانية لـ FIND ، لذلك تجد موضع "#" في تلك السلسلة:

    FIND("#", "Emma, Design# (102) 123-4568")

    تخبرنا FIND أن "#" هو الحرف الثالث عشر في السلسلة. لمعرفة عدد الأحرف التي تسبقه ، فقط اطرح 1 ، وستحصل على 12 نتيجة:

    FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1

    ينتقل هذا الرقم مباشرة إلى الوسيطة num_chars من LEFT يطلب منه سحب أول 12 حرفًا من A2:

    =LEFT(A2, 12)

    هذا كل شيء!

    كيفية حذف النص قبل التكرار N للحرف

    الصيغة العامة لإزالة سلسلة فرعية قبل حرف معين هي:

    RIGHT (SUBSTITUTE ( خلية ، " char " ، "#" ، n ) ، LEN ( خلية ) - البحث عن ("#" ، البديل ( خلية ، " حرف " ، "#" ، n )) -1)

    على سبيل المثال ، لنزع النص قبل الفاصلة الثانية في A2 ، الصيغة هي:

    =RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)

    لإزالة مسافة بادئة ، نستخدم TRIM مرة أخرى بمثابة غلاف:

    =TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))

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

    باختصار ، اكتشفنا كم عدد الأحرف بعد المحدد n واستخراج سلسلة فرعية من الطول المقابل من اليمين. فيما يلي تفصيل الصيغة:

    أولاً ، نستبدل الفاصلة الثانية في A2 بتجزئةالرمز:

    SUBSTITUTE(A2, ",", "#", 2)

    تنتقل السلسلة الناتجة إلى نص وسيطة RIGHT:

    RIGHT("Emma, Design# (102) 123-4568", …

    بعد ذلك ، نحتاج إلى تحديد عدد الأحرف المراد استخراجها من نهاية السلسلة. لهذا ، نجد موضع رمز التجزئة في السلسلة أعلاه (وهو 13):

    FIND("#", SUBSTITUTE(A2, ",", "#", 2))

    وطرحه من إجمالي طول السلسلة (الذي يساوي 28):

    LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))

    ينتقل الاختلاف (15) إلى الوسيطة الثانية من RIGHT لتوجيهها لسحب آخر 15 حرفًا من السلسلة في الوسيطة الأولى:

    RIGHT("Emma, Design# (102) 123-4568", 15)

    الإخراج عبارة عن سلسلة فرعية "(102) 123-4568" ، وهي قريبة جدًا من النتيجة المرجوة ، باستثناء المسافة البادئة. لذلك ، نستخدم وظيفة TRIM للتخلص منها.

    كيفية إزالة النص بعد التواجد الأخير للحرف

    في حالة فصل القيم الخاصة بك مع عدد متغير من المحددات ، قد ترغب في إزالة كل شيء بعد آخر مثيل لهذا المحدد. يمكن القيام بذلك باستخدام الصيغة التالية:

    LEFT ( خلية ، FIND ("#" ، SUBSTITUTE ( خلية ، " char " ، "# "، LEN ( خلية ) - LEN (استبدال ( خلية ،" حرف "،" ")))) -1)

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

    لتحقيق الهدف ، يمكنك إزالة النص بعد الفاصلة الأخيرة في A2 بهذاالصيغة:

    =LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)

    انسخ الصيغة أسفل العمود ، وستحصل على هذه النتيجة:

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

    جوهر الصيغة هو أننا نحدد موضع آخر محدد (فاصلة) في السلسلة ونقوم بسحب سلسلة فرعية من اليسار إلى أعلى المحدد. يعد الحصول على موضع المحدد هو الجزء الأصعب ، وإليك كيفية التعامل معه:

    أولاً ، نكتشف عدد الفواصل الموجودة في السلسلة الأصلية. لهذا ، نستبدل كل فاصلة بلا شيء ("") ونقدم السلسلة الناتجة إلى الدالة LEN:

    LEN(SUBSTITUTE(A2, ",",""))

    بالنسبة إلى A2 ، تكون النتيجة 35 ، وهو عدد الأحرف في A2 بدون فاصلات.

    اطرح الرقم أعلاه من إجمالي طول السلسلة (38 حرفًا):

    LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))

    … وستحصل على 3 ، وهو العدد الإجمالي من الفواصل في A2 (وكذلك الرقم الترتيبي للفاصلة الأخيرة).

    بعد ذلك ، يمكنك استخدام التركيبة المألوفة بالفعل من الدالتين FIND و SUBSTITUTE للحصول على موضع الفاصلة الأخيرة في السلسلة. يتم توفير رقم المثيل (الفاصلة الثالثة في حالتنا) بواسطة صيغة LEN SUBSTITUTE المذكورة أعلاه:

    FIND("#", SUBSTITUTE(A2, ",", "#", 3))

    يبدو أن الفاصلة الثالثة هي الحرف الثالث والعشرون في A2 ، مما يعني أننا بحاجة لاستخراج 22 حرفًا يسبقها. لذلك ، وضعنا الصيغة أعلاه ناقص 1 في num_chars وسيطة LEFT:

    LEFT(A2, 23-1)

    كيفية إزالة النص قبل التواجد الأخير للحرف

    للحذفكل شيء قبل المثيل الأخير لحرف معين ، الصيغة العامة هي:

    RIGHT ( خلية ، LEN ( خلية ) - FIND ("#" ، SUBSTITUTE ( خلية ، " حرف "، "#"، LEN ( خلية ) - LEN (استبدال ( خلية ، " حرف "،" "))))

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

    =RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))

    كلمسة نهائية ، أدخلها في دالة TRIM لإزالة المسافات البادئة:

    =TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))

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

    باختصار ، نحصل على موضع الفاصلة الأخيرة كما هو موضح في المثال السابق ونطرحها من إجمالي طول السلسلة:

    LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))

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

    وظيفة مخصصة لإزالة النص على جانبي الحرف

    As التي رأيتها في الأمثلة أعلاه ، يمكنك حل أي حالة استخدام تقريبًا باستخدام برنامج Excel الأصلي f الوصلات في مجموعات مختلفة. تكمن المشكلة في أنك بحاجة إلى تذكر حفنة من الصيغ الصعبة. حسنًا ، ماذا لو كتبنا وظيفتنا الخاصة لتغطية جميع السيناريوهات؟ تبدو فكرة جيدة لذلك ، أضف التعليمات البرمجية لـ VBA التالية إلى المصنف الخاص بك (الخطوات التفصيلية لإدراج VBA في Excel موجودة هنا):قيمة منطقية) Dim delimiter_num، start_num، delimiter_len as Integer Dim str_result as String delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len (delimiter) For i = 1 tourred delimiter_num = InStr (start_num، str، delimiter، vbTextCompare) العلامة & lt؛ delimiter_num ثم start_num = delimiter_num + delimiter_len End If Next i If 0 & lt؛ delimiter_num ثم إذا كان True = is_after ثم str_result = Mid (str، 1، start_num - delimiter_len - 1) آخر str_result = Mid (str، start_num) End If End If RemoveText = str_result End Function

    تسمى وظيفتنا RemoveText ولها بناء الجملة التالي:

    RemoveText (سلسلة ، محدد ، التواجد ، is_after)

    حيث:

    String - هي سلسلة النص الأصلي. يمكن تمثيله بمرجع خلية.

    المحدد - الحرف قبل / بعد إزالة النص.

    التكرار - مثيل محدد.

    Is_after - قيمة منطقية تشير إلى جانب المحدد لإزالة النص. يمكن أن يكون حرفًا واحدًا أو سلسلة من الأحرف.

    • TRUE - احذف كل شيء بعد المحدد (بما في ذلك المحدد نفسه).
    • FALSE - احذف كل شيء قبل المحدد (بما في ذلك المحدد نفسه).

    بمجرد إدراج رمز الوظيفة في المصنف ، يمكنك إزالة السلاسل الفرعية من الخلايا باستخدام صيغ مضغوطة وأنيقة.

    على سبيل المثال ، للمسح

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