استخراج الأرقام فقط من النص (سلسلة)

في Excel، يمكنك استخدام الصيغ لاستخراج الرقم من قيمة تحتوي على نص وأرقام مدمجة. في المثال التالي، استخدمنا صيغة للحصول على 1984 من القيمة “TPS1984”.

استخراج ارقام فقط

صيغة لاستخراج الأرقام من النص

 =TEXTJOIN("",TRUE,IFERROR((MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)*1),""))

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

  1. أولاً، لدينا الدالة LEN للحصول على عدد الأحرف في القيمة.
    formula-to-extract-numbers-from-a-string
  2. بعد ذلك، يستخدم INDIRECT مرجع خلية باستخدام 1 و7 (يتم إرجاعه بواسطة LEN).
    indirect-uses-a-cell-reference
  3. ثم ستستخدم الدالة ROW INDIRECT وستُرجع مجموعة من الأرقام تبدأ بالرقم 1 وتنتهي بالرقم 7.
    row-function-returns-the-array
  4. الآن سيستخدم MID هذه المصفوفة ويعيد مصفوفة جديدة بقيم الخلية التي أشرت إليها.
    mid-returns-new-one-with-value
  5. بعد ذلك، لدينا صيغة ضرب بسيطة لضرب المصفوفة في 1. باستخدام هذا الضرب البسيط، ستحصل على مصفوفة جديدة حيث سيكون لديك #VALUE! سيظل الخطأ في القيم والأرقام النصية كما هو.
    multiply-the-array
  6. من هنا، ستقوم الدالة IFERROR بتحويل قيم الخطأ إلى قيم فارغة.
    iferror-to-convert-errors-into-blank
  7. وفي النهاية، سيقوم TEXTJOIN بدمج القيم، وسيكون لديك أرقام فقط في النتيجة.
    extract-numbers-in-older-excel-versions

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

إذا كنت تريد قيمة لجزء من الصيغة، فحدد ذلك الجزء واضغط على مفتاح الاختصار F9.

TEXTJOIN هي دالة متقلبة تغير القيمة عند تحديث خلية في ورقة العمل. قد يؤدي ذلك إلى جعل المصنف الخاص بك بطيئًا بعض الشيء.

ولكن ماذا لو كنت أستخدم إصدارًا سابقًا (2007، 2010، 2013، 2016)

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

 =IF(SUM(LEN(A1)-LEN(SUBSTITUTE(A1, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&A1, LARGE(INDEX(ISNUMBER(--MID(A1,ROW(INDIRECT("$1:$"&LEN(A1))),1))* ROW(INDIRECT("$1:$"&LEN(A1))),0), ROW(INDIRECT("$1:$"&LEN(A1))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(A1)))/10),"")
 =SUMPRODUCT(MID(0&A1,LARGE(INDEX(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))*ROW(INDIRECT("1:"&LEN(A1))),0),ROW(INDIRECT("1:"&LEN(A1))))+1,1)*10^ROW(INDIRECT("1:"&LEN(A1)))/10)

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

الصيغ ذات القيم المختلفة

في الخلية A1 أعلاه لدينا قيمة معقدة تتكون من نص وأرقام ورموز وليس لدينا سوى أرقام في النتيجة.

احصل على ملف إكسل

تحميل
قائمة صيغ إكسل

الصيغ ذات الصلة

اضف تعليق

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *