سبد خرید
0

محصولی در سبد خرید نیست.

بازگشت به فروشگاه

جدا کردن عدد از متن در اکسل

جدا کردن عدد از متن
۳.۷/۵ - (۳ امتیاز)

سابقه بروزرسانی ها:
1400/07/20:
حل مسئله با استفاده از تابع TextJoin در اکسل ۲۰۱۹ به بالا

جدا کردن قسمتی از یک عبارت در یک سلول یکی از رایج ترین مسائل در اکسل هست. خیلی وقت ها اطلاعات از نرم افزارهای دیگه وارد اکسل میشن و برای همین همه اطلاعات به هم چسبیده و در یک سلول هستن. پس لازمه که که این اطلاعات از هم تفکیک بشن تا بشه ازشون استفاده لازم رو برد. جدا کردن عدد از متن جزو پرتکرارترین مسائل در این زمینه هست.

جدا کردن عدد از متن، بسته به اینکه داده ها چه الگویی داشته باشن، راه حل های خیلی متنوعی داره. یکی از این راه حل ها استفاده از توابع متنی است، یک راه حل هم استفاده از ابزار Text to Column هست.

همونطور که قبلا برای استفاده از ابزار و تابع Find گفتیم، رمز پیدا کردن اطلاعات مورد نظر در یک سلول یا یک محدوده، پیدا کردن یک الگوی منطقی بین اکثریت داده هاست. این الگو ممکنه در نگاه اول به چشم نیاد. اما هر چه تمرین بیشتری در این زمینه انجام بدید، در پیدا کردن الگو موفق تر خواهید بود.

در ادامه میخواهیم نحوه جدا کردن عدد از متن بوسیله توابع متنی (با الگو) و همچنین جدا کردن همه اعداد یک رشته (بدون نیاز به الگو) رو بررسی کنیم:

جدا کردن عدد برای رشته هایی که الگوی مشخصی دارن

جدا کردن عدد از متنفرض کنید داده هایی مطابق شکل روبرو داریم. میخواهیم شماره فاکتور رو جدا کنیم. (دقت کنید Space بین همه کلمات وجود نداره. اگر داشت به راحتی از ابزار Text To Column استفاده میکردیم)

همونطور که میبینید الگوی موجود در این داده ها وجود کلمه فاکتور قبل از کد مورد نظر هست. پس اولین کاری که باید بکنیم اینکه که مکان آخرین حرف از کلمه فاکتور رو پیدا کنیم.

پیدا کردن کلمه فاکتور

برای پیدا کردن مکان کلمه فاکتور، از تابع Find استفاده میکنیم.

=FIND(“فاکتور”,A2)

خروجی این تابع مکان حرف “ف” رو به ما میده و چون کلمه “فاکتور” ۶ حرف هست، خروجی این تابع رو با ۶ جمع میکنیم که مکان آخرین حرف از کلمه “فاکتور” مشخص بشه.

=FIND(“فاکتور”,A2)+6

چون تعداد ارقام فاکتور، ثابت نیست، باید مکان دومین کلمه “شماره” رو هم پیدا کنیم. اگر مکان “ش” رو پیدا کنیم، فاصله بین “ش” و “ر” از فاکتور میشه کد مربوط به فاکتور. پس:

=FIND(“شماره”,A2,5)

چرا آرگومان سوم تابع Find رو ۵ گذاشتیم؟

چون ۲ تا کلمه شماره داریم و ما دومی رو لازم داریم. برای همین میگیم از پنجمین حرف به بعد شروع به جستجو کنه و شماره رو پیدا کنه. اینطوری، “شماره” اول رو کاری نداره.

تا اینجا مکان حرف “ر” از فاکتور و مکان “ش” از شماره دوم رو پیدا کردیم. کافیه از طریق تابع MID کد مربوط به فاکتور رو استخراج کنیم:

تابع MID از بین یک عبارت، قسمت خاصی رو استخراج میکنه. این تابع ۳ آرگومان داره:

Text: عبارت مورد نظر که میخوایم قسمتی از اون رو جدا کنیم.

Start_Num: مکان اولین حرف از قسمتی که میخوایم جدا کنیم.

Num-Chars: تعداد حرفی که از Stat_Num به بعد قراره جدا بشه.

=MID (مکان حرف “ر”-مکان حرف “ش”,مکان حرف “ر”,سل مورد نظر)

=MID (A2,FIND(“فاکتور”,A2)+۶,FIND(“شماره”,A2,۵)-(FIND(“فاکتور”,A2)+۶))

***حالا اگه بخوایم شماره رسید رو جدا کنیم چه فرمولی باید بنویسیم؟(با رعایت این فرض که تعداد رقم شماره رسید متغیر است)

نظرتون رو در ادامه همین پست در قسمت کامنت بنویسید

جدا کردن عدد از متن - فراخوانی شماره فاکتور از بین عبارت

شکل ۲- جدا کردن عدد از متن – فراخوانی شماره فاکتور از بین عبارت

جدا کردن عدد برای رشته هایی که الگوی مشخصی ندارن

در این روش همه اعداد موجود در یک سلول پشت سر هم قرار میگیرن. از فرمول نویسی آرایه ای استفاده شده و تابع Textjoin که از ورژن ۲۰۱۹ به بعد موجود هست. (برای ورژن های قبلی، فایل نمونه رو دانلود کنید و ببینید)

برای این کار باید تک تک حروف موجود در سلول رو  با ترکیب تابع mid و indirect(len)) از هم تفکیک کنیم و بعد هر کدوم رو چک کنیم که عدد هست یا نه. اگر عدد بود دوباره به هم بچسبونیم. اینطوری هر چی کاراکتر غیر عددی هست بینش حذف میشه. فرمول به شرح زیر هست:

=TEXTJOIN(“”, TRUE, IFERROR(MID(A2, ROW(INDIRECT( “1:”&LEN(A2))), 1) *1, “”))

فقط دقت داشته باشید که فمرول آرایه ای هست و حتما باید کلید ترکیبی Ctrl+Shift+Enter زده بشه تا کار کنه.

شرح فرمول

تفکیک کاراکترهای موجود در سلول بصورت تک تک یعنی این قسمت فرمول:

MID(A2, ROW(INDIRECT( “1:”&LEN(A2))), 1)

که نتیجه این قسمت بصورت زیر خواهد بود:

MID(A2,{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38}, 1)

اینجا نشون میده که ۳۸ کاراکتر در سلول وجود داره که هر بار یکیش تفکیک میشه. (اگر تایع MID رو نمیشناسید حتما مقاله رو بخونید)

بعد از اینکه تک تک این کاراکترها تفکیک شدن، مقدار هر کدوم رو در ۱ ضرب میکنیم. یعنی این قسمت فرمول:

MID(A2, ROW(INDIRECT( “1:”&LEN(A2))), 1) *1

حالا اگر اون کاراکتر عدد باشه، نتیجه عدده و اگه متن باشه نتیجه خطای Value. چرا چون ضرب عدد در متن معنی نداره.

{#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!; 5;1;1;7;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;5;4;4;4;3;7;6;3;3;6}

الان نتیجه بالا رو ببینید. به ازای همه حروف، خطا و به ازای اعداد مربوط به شماره فاکتور و شماره حساب خودشون رو نمایش داده.

حالا با یک iferror خطاها رو از بین میبریم و کاراکترهای باقیمانده که همون اعداد هستن رو با تابع Textjoin به هم میچسبونیم.

در انتهای آموزش فایلی قرار داده شده که بوسیله یک فرمول آرایه ای (مشابه فرمول بالا اما بدون استفاده از textjoin که قابل استفاده برای ورژن های قبل از ۲۰۱۹ هست) و مشابه فرمول بالا همه اعداد موجود در یک سلول رو جدا میکنه و کنار هم قرار میده. در واقع اگر از این فایل و فرمول بالا (همونطور که مشاهده کردید) روی داده های مثال بالا استفاده کنیم، عدد فاکتور و رسید رو کنار هم میذاره و بهمون میده. برای مواقعی که هیچ الگویی وجود نداره، میشه از این فرمول استفاده کرد. فقط به این نکته توجه داشته باشید که همه اعداد موجود در یک سلول رو استخراج میکنه و باید بدونید روی چه نوع داده هایی استفاده از این فایل بدرد میخوره.

فایل رو دانلود کنید و سعی کنید فرمول رو تحلیل کنید.

توابع متنی، توانایی های خیلی زیادی دارن. تسلط به این دسته توابع خیلی به حرفه ای شدن کمک میکنه.

دانلود فایل این آموزش

برای دانلود فایل این آموزش روی دکمه زیر کلیک کنید:

کلیدواژه : پیشرفته
134

من سامان چراغی هستم. دانش آموخته مقطع فوق لیسانس دانشگاه تربیت مدرس در رشته مهندسی صنایع. از سال 1388 اکسل و برنامه نویسی VBA رو به صورت حرفه ای شروع کردم.

دیدگاه کاربران
  • Amir ۴ بهمن ۱۳۹۹ / ۳:۰۴ ق٫ظ

    با سلام و احترام
    ضمن تشکر از آموزش بسیار عالیتان، متاسفانه من هرکاری میکنم نمیتونه با این روش عدد رو که در کنار تومان (مثلا = ۷۰,۰۰۰ تومان) درج شده تشخیص بده.
    نمونه فایل رو هم ایجاد کردم خدمتتون فرستادم، امکانش هست یه راهنمایی کنید… ممنونتون میشم.
    https://s16.picofile.com/file/8422394950/Test.xlsx.html

  • سعیده ۳ آذر ۱۳۹۹ / ۱۲:۱۵ ب٫ظ

    سلام . چطوری میشه حاصل یه فرمول متنی رو طوری بنویسیم که عدد حاصل رو به صورت سه رقم سه رقم جدا کند؟

    • آواتار
      حسنا خاکزاد ۳ آذر ۱۳۹۹ / ۳:۵۹ ب٫ظ

      درود بر شما
      منظورتون اینه که خروجی فرمول متنی شما یک عدد هست که جنس عدد نداره؟
      میتونید نتیجه رو داخل تابع value بذارید و فرمت سلول رو تنظیم کنید

  • majid ۸ مهر ۱۳۹۹ / ۹:۵۲ ب٫ظ

    چرا سختش میکنین از یه دکمه استفاده کنین به نام : flashfill در قسمت Data

    • آواتار
      حسنا خاکزاد ۹ مهر ۱۳۹۹ / ۱۲:۴۰ ب٫ظ

      درود
      بله دقیقا ابزار flash fill در این پست توضیح داده شده.
      اما قطعا به تفاوت های ابزار و فرمول آشنا هستید :). بنا به نیاز هر کدوم کاربرد خودشون رو دارن

  • کوروش ۱۱ مرداد ۱۳۹۹ / ۳:۲۸ ب٫ظ

    سلام خسته نباشی
    مثلا دو عدد به صورت ۲+۳ در یک سلول نوشته شده من میخوام حاصل این دو عدد بدست بیارم

    • آواتار
      حسنا خاکزاد ۱۱ مرداد ۱۳۹۹ / ۴:۱۴ ب٫ظ

      درود
      یک نام ایجاد کنید مثلا Mohasebe و در قسمت refer این فرمول رو بزنید:

      =EVALUATE(Sheet1!$A$1)
      

      (نکته: در سلول A1 همون عبارت ۲+۳ نوشته شده)
      بعد در یک سلول mohasebe= مینویسید و محاسبات انجام میشه
      اگر با نامگذاری اشنا نیستید این مقاله رو بخونید

  • محمد ۲۳ تیر ۱۳۹۹ / ۰:۵۱ ق٫ظ

    سلام تشکر از سایت خوبتون
    میخوام در یک ستون که بعضی سلولها عدد و بعضی متن هستند آخرین سلولی که عدد هست انتخاب کنم میشه لطف کنید راهنمایی کنید.

    • آواتار
      حسنا خاکزاد ۲۳ تیر ۱۳۹۹ / ۱۱:۴۱ ق٫ظ

      درود
      میتونید از کد استفاده کنید
      تابع code بهتون کد اسکی حروف و اعداد رو میده. کد اسکی اعداد رو بدست بیارید
      بعد از طرفی با تابع mid و ترکیبش با char کد اون کاراکتر رو بدست بیارید. اگر در بازه کدهای اسکی عددی بود، یعنی عدده.
      من فرایند رو توضیح دادم. از این توابع استفاده کنید و مرحله به مرحله پیش برید

  • hosseinifarhad57@yahoo.com ۳۱ خرداد ۱۳۹۹ / ۴:۳۰ ب٫ظ

    سلام، از این راه هم میشه
    اول یه کپی از این ستون می گیریم که داشته باشیم.بعد
    control+h / جایگزین کردن کلمه “شماره” با جای خالی یعنی قسمت replace with خالی باشه. بعدش جایگزین کردن کلمه “فاکتور” با جای خالی. بعدش جایگزین کردن کلمه “رسید” با جای خالی. در نهایت عددها باقی می مونه با کاراکتر فاصله.برای جدا کردن اون هم از data,text to columns,delimited تیک space رو می‌زنیم. و به همین راحتی همه از هم جدا میشن و شماره فاکتور و رسید رو هم جداگانه داریم.

  • میرزایی ۲۱ خرداد ۱۳۹۹ / ۱۰:۱۱ ق٫ظ

    سلام
    در یک سلول عبارت میلگرد۳(۵۰۰) رو دارم.میخام توی سلول دیگه عبارت داخل پرانتز رو جدا کنم. با تابع find رفتم. ولی بجای نشون دادن عدد ۵۰۰ ،عدد دیگه ای رو نشون میده . چه فرمولی بدم که درست بشه ؟ ممنون

    • سامان چراغی ۲۱ خرداد ۱۳۹۹ / ۱۰:۲۸ ق٫ظ

      سلام
      میتونید از فرمول زیر استفاده کنید:

      =MID(A1,FIND("(",A1)+1,FIND(")",A1)-FIND("(",A1)-1)
      
  • اکبر مقبلی ۱۰ خرداد ۱۳۹۹ / ۱۱:۳۵ ق٫ظ

    با سلام
    ضمن عرض خسته نباشید و خداقوت صمیمانه و قلبی به آقای مهندس چراغی و خانم مهندس خاکزاد، الحق و والانصاف که کلاس درس مجازی بسیار عالی و کاربردی خوبی دارین و همچنین صبر و حوصله شما در ارائه بسیار خوب اطلاعات و راهنمایی کاربران و پاسخگویی قابل تقدیر و تحسین است. از خداوند اجری وافر همراه با سلامتی و سربلندی و سعادت و عزت و ارتقاء هر چه بیشتر دانش و علم برایتان آرزومندیم که بدون منت و اجرت این همه بزرگوارین و زکات علمتان را پیشاپیش میپردازید.

  • arzhang ۱ اردیبهشت ۱۳۹۹ / ۱۲:۴۸ ب٫ظ

    با سلام و تبریک به خاطر راهنماییهای شما.
    ببخشید من چندین حروف پشت سر هم دارم . بدون فاصله . مثلا pbppbbbpbpbpppb . میخواهم اینها از هم تفکیک بشه و در سلول دیگه با خط فاصله یا کاما گذاشته بشه . آیا برای اعداد هم میشه این کار رو کرد ؟ مثلا ۲۷۶۳۳۷۸۹۷۵۰۴ رو تک تک اعداد رو با فاصله در سلول دیگه بزاره. بیصبرانه منتظر پاسخ شما هستم . سپاس

    • آواتار
      حسنا خاکزاد ۱ اردیبهشت ۱۳۹۹ / ۱۲:۵۵ ب٫ظ

      درود
      میتونید از ابزار Text to column استفاده کنید

      اگر منظور اینه که داده ها در سلول تفکیک نشه و صرفا بین هر حرف، یک خط فاصله یا کاما ایجاد بشه، ابزار Flash fill استفاده کنید

      • arzhang ۱ اردیبهشت ۱۳۹۹ / ۱:۳۸ ب٫ظ

        از اینکه سریع پاسخ بنده حقیر را دادید بسیار ممنونم . انجام شد و جواب گرفتم . خدا نگهدارت باشه ایشالا و همواره خداوند بهت انرژی بده که بدون چشمداشت به دیگران کمک کنی . سربلند باشی

    • Mohrez ۲۰ مرداد ۱۴۰۲ / ۶:۴۶ ب٫ظ

      سلام
      یه سوال داشتم.
      یک ستون کالا ( بصورت حروف ) دارم ، یک ستون هم عدد. همین جدول تو چندین شیت هست.
      حالا می‌خوام از روی کالا ها تعداد کلی رو تو یک شیت داشته باشم.
      مثلاً موجودی یکی از کالا هارو داشته باشم.
      از چه روشی میشه پیدا کرد؟

      • آواتار
        حسنا خاکزاد ۲۰ مرداد ۱۴۰۲ / ۸:۲۵ ب٫ظ

        درود بر شما
        چندین روش داره
        یکی اینکه sumifs 3 بعدی بنویسید

        یکی اینکه ببرید توی گوگل شیت و با vstack بیارید زیر هم و بعد گزارش بسازید

        دیگه اینکه با پاورکوئری دیتابیس ها رو یکی کنید و گزارش نهایی رو روی دیتابیس مرج شده بگیرید

        غیر از روش اول، ۲ روش بعدی داخل سایت معرفی شده

  • مهدی ۱۷ فروردین ۱۳۹۹ / ۱۰:۵۷ ق٫ظ

    با سلام
    در یک سلول حاوی متن و عدد، چطوری میشه اعداد به صورت خودکار سه رقم سه رقم جدا شوند؟ مثلا عبارت “مبلغ قرارداد: ۱۰،۰۰۰،۰۰۰،۰۰۰ ریال” رو چطور میشه در یک سلول نوشت تا خود برنامه اکسل، عدد را سه رقم سه رقم جدا کنه؟

    • آواتار
      حسنا خاکزاد ۱۷ فروردین ۱۳۹۹ / ۱۱:۴۷ ق٫ظ

      درود
      از تابع text استفاده کنید

      ="مبلغ قرارداد: "&TEXT(A1,"#,# ریال")
      
ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

توسط
تومان