معرفی تابع MID
تابع MID در اکسل برای استخراج بخشی از یک متن (چند کاراکتر مشخص) از وسط یک رشته استفاده میشود. این تابع زمانی عالی است که متن شما ساختار مشخصی دارد؛ مثل کد کالا، شماره پیگیری، پلاک، شماره قرارداد، یا ترکیبهایی مثل «کد-نام-سال» و شما فقط به یک قسمت مشخص از آن نیاز دارید.
نکته کلیدی این است که MID از شما میپرسد: از کدام کاراکتر شروع کنم و چند کاراکتر بردارم.
مثال ساده فارسی: فرض کنید در سلول A2 متن زیر را دارید:
AB-12345-IR
میخواهید فقط عدد 12345 را جدا کنید (از کاراکتر چهارم، 5 کاراکتر).
=MID(A2;4;5)
خروجی: 12345
کاربردهای اصلی تابع MID
- استخراج کد میانی از کدهای ترکیبی (مثل کد کالا، سریال، شماره قرارداد)
- جدا کردن بخش مشخصی از شماره موبایل/تلفن (مثلاً پیششماره یا بخشی از شماره)
- استخراج سال/ماه از تاریخهای متنی (مثل 1402/07/15 وقتی تاریخ به صورت متن ذخیره شده)
- دریافت بخش ثابت از توضیحات استاندارد (مثلاً “INV-2025-00031”)
- پاکسازی و استانداردسازی دادهها قبل از گزارشگیری و داشبورد
- کمک به ساخت کلید جستجو برای XLOOKUP/VLOOKUP با ترکیب بخشهایی از متن
ساختار (Syntax)
نسخه انگلیسی:
=MID(text, start_num, num_chars)
معادل مفهومی به فارسی:
=MID(متن; شماره_شروع; تعداد_کاراکتر)
آرگومانها
text (متن) / متن یا سلولی که میخواهید از آن استخراج کنید
میتواند یک متن مستقیم داخل فرمول باشد یا آدرس سلول (مثل A2). اگر عدد باشد، اکسل معمولاً آن را به متن تبدیل میکند؛ اما بهتر است برای اطمینان از TEXT استفاده کنید.
start_num (شماره شروع) / از کدام کاراکتر شروع شود
یک عدد است و از 1 شروع میشود (نه صفر). یعنی start_num=1 یعنی اولین کاراکتر رشته.
num_chars (تعداد کاراکتر) / چند کاراکتر بردارد
تعداد کاراکترهایی که باید از نقطه شروع استخراج شود. اگر بیشتر از طول باقیمانده باشد، اکسل تا انتهای متن را برمیدارد.
مثالهای ساده و پایه
مثال 1: استخراج 3 حرف از وسط یک کلمه
فرض کنید A2 برابر است با: TEHRAN
میخواهیم از کاراکتر 2 به اندازه 3 کاراکتر برداریم: EHR
=MID(A2;2;3)
نتیجه: EHR
مثال 2: استخراج ماه از تاریخ متنی
فرض کنید A2 برابر است با: 1402/07/15 (به صورت متن)
ماه در کاراکترهای 6 و 7 قرار دارد.
=MID(A2;6;2)
نتیجه: 07
مثال 3: استخراج بخش ثابت از کد
در A2 داریم: INV-2025-00031 و میخواهیم سال (2025) را جدا کنیم.
=MID(A2;5;4)
نتیجه: 2025
مثالهای کاربردی و واقعی
مثال 1: استخراج عدد و تبدیل به عدد واقعی برای جمع (ترکیب با VALUE و SUM)
فرض کنید در ستون A کدهایی مثل زیر دارید:
A2: PRD-015-TEH
A3: PRD-120-TEH
عدد میانی (3 رقم) مقدار فروش/امتیاز است و میخواهید جمع بزنید. ابتدا با MID استخراج و با VALUE عددی کنید.
=VALUE(MID(A2;5;3))
حالا اگر مقادیر در B2:B100 قرار گرفت، جمع:
=SUM(B2:B100)
مثال 2: شرطگذاری با AND/OR بر اساس بخشی از متن
اگر کد در A2 باشد و ساختار “DEP-شهر-سطح” داشته باشد مثل: DEP-TEH-A، میخواهیم اگر شهر TEH و سطح A بود، “اولویت بالا” بدهیم.
=IF(AND(MID(A2;5;3)="TEH";MID(A2;9;1)="A");"اولویت بالا";"عادی")
نتیجه: بر اساس کد، برچسب مناسب برمیگردد.
مثال 3: شمارش بر اساس بخشی از متن (ترکیب با COUNTIF)
فرض کنید در ستون A کد سفارش دارید مثل: ORD-IR-0001 و ORD-TR-0002 و میخواهید تعداد سفارشهای مربوط به IR را بشمارید. یک راه سریع: در ستون کمکی کشور را با MID جدا کنید و سپس COUNTIF بزنید.
در B2:
=MID(A2;5;2)
سپس شمارش:
=COUNTIF(B:B;"IR")
مثال 4: ساخت کلید جستجو و استفاده در XLOOKUP
فرض کنید در A2 کد محصول دارید: P-145-XL و میخواهید فقط “145” را به عنوان کلید جستجو استفاده کنید تا از جدول قیمتها در E:F قیمت را بگیرید (ستون E کلید عددی/متنی 145 و ستون F قیمت).
=XLOOKUP(MID(A2;3;3);E:E;F:F;"یافت نشد")
اگر طول کد همیشه ثابت نباشد، بهتر است از روشهای پویا (مثل FIND و MID) استفاده کنید، اما در ساختارهای ثابت MID عالی و سریع است.
ترکیب تابع MID با فرمولهای دیگر
- MID + VALUE برای تبدیل بخش عددی متن به عدد واقعی
=VALUE(MID(A2;4;5))
- MID + IF برای تصمیمگیری بر اساس بخشی از کد
=IF(MID(A2;1;3)="VIP";"مشتری ویژه";"عادی")
- MID + AND/OR برای شرطهای ترکیبی
=IF(OR(MID(A2;5;2)="IR";MID(A2;5;2)="AE");"خاورمیانه";"سایر")
- MID + SUM (معمولاً همراه ستون کمکی یا VALUE) برای جمع مقادیر استخراجشده
=SUM(B2:B50)
- MID + COUNTIF (با ستون کمکی) برای شمارش دستهها
=COUNTIF(B:B;"TEH")
- MID + XLOOKUP برای استخراج کلید و جستجو در جدول
=XLOOKUP(MID(A2;5;4);D:D;E:E;"یافت نشد")
خطاهای رایج و روش رفع آنها
1) خطای #VALUE! به دلیل start_num یا num_chars نامعتبر
اگر start_num کوچکتر از 1 باشد یا num_chars منفی باشد، معمولاً #VALUE! میگیرید. راهحل: start_num را حداقل 1 بگذارید و مطمئن شوید num_chars عدد مثبت است. اگر مقدار از فرمول دیگری میآید، آن را کنترل کنید.
2) خروجی خالی یا غیرمنتظره به خاطر طول متن کمتر از مقدار شروع
اگر start_num از طول متن بیشتر باشد، خروجی معمولاً متن خالی میشود. راهحل: قبل از MID طول را بررسی کنید یا start_num را طوری تنظیم کنید که از داخل متن شروع شود.
3) نتیجه درست است ولی عدد شناخته نمیشود (عدد به شکل متن)
MID همیشه خروجی متنی میدهد. اگر میخواهید نتیجه عددی باشد (برای جمع، مقایسه عددی، نمودار و…)، از VALUE استفاده کنید.
=VALUE(MID(A2;4;3))
4) به هم خوردن استخراج به خاطر تغییر فرمت دادهها
اگر ساختار رشته ثابت نباشد (مثلاً گاهی کد 3 رقمی و گاهی 4 رقمی است)، MID ثابت جواب دقیق نمیدهد. راهحل: از روشهای پویا مثل پیدا کردن موقعیت جداکنندهها (خط تیره، فاصله و…) با FIND/SEARCH و سپس MID استفاده کنید.
نکات حرفهای و ترفندهای مهم
- برای خوانایی بهتر، فرمول را مرحلهای کنید: اول با MID استخراج کنید، بعد تبدیل/شرط/جستجو را انجام دهید. اگر فایل بزرگ است، ستون کمکی میتواند خطا را کمتر و عیبیابی را سادهتر کند.
- MID خروجی را متن برمیگرداند: برای محاسبات عددی از VALUE استفاده کنید، برای تاریخها (اگر لازم شد) از DATEVALUE/DATE (بسته به ساختار) کمک بگیرید.
- اگر ساختار داده ثابت نیست، MID را بهتنهایی استفاده نکنید: بهتر است جای شروع و طول را با توابعی مثل FIND/SEARCH محاسبه کنید تا انعطافپذیر شود.
- در اکسلهای جدید میتوانید از TEXTAFTER/TEXTBEFORE هم کمک بگیرید: در خیلی از سناریوهای جداکردن بخشها با جداکننده، این توابع سادهتر از MID هستند (البته بستگی به نسخه اکسل دارد).
تفاوت تابع MID با توابع مشابه
- LEFT: از ابتدای متن استخراج میکند، نه از وسط.
وقتی همیشه بخش موردنظر در شروع رشته است، LEFT سادهتر است.
- RIGHT: از انتهای متن استخراج میکند.
وقتی بخش موردنظر در انتهای رشته است (مثل پسوند، کد استان، دو رقم آخر)، RIGHT مناسبتر است.
- MID: از وسط، با تعیین نقطه شروع و طول.
برای ساختارهای ثابت یا وقتی جای دقیق بخش موردنظر را میدانید، بهترین انتخاب است.
- TEXTBEFORE/TEXTAFTER (در نسخههای جدید): جدا کردن متن قبل/بعد از یک جداکننده.
اگر دادهها با خط تیره/فاصله/کاراکتر خاص جدا شدهاند و طول بخشها ثابت نیست، معمولاً از MID راحتتر است.
سازگاری با نسخههای مختلف اکسل
- تابع MID جزو توابع قدیمی و پایه اکسل است و تقریباً در همه نسخهها (از نسخههای بسیار قدیمی تا Microsoft 365) پشتیبانی میشود.
- اگر میخواهید از جایگزینهای جدید مثل TEXTBEFORE و TEXTAFTER استفاده کنید، معمولاً به Excel 365 یا Excel 2021 به بعد نیاز دارید (بسته به کانال آپدیت).
- در محیطهای فارسی، جداکننده آرگومانها معمولاً ; است. اگر اکسل شما انگلیسی باشد ممکن است نیاز به , داشته باشید.
سؤالات پرتکرار درباره تابع MID
آیا MID میتواند عدد برگرداند؟
MID ذاتاً متن برمیگرداند. اگر خروجی عددی میخواهید، از VALUE استفاده کنید.
اگر num_chars از طول متن بیشتر باشد چه میشود؟
اکسل تا جایی که متن وجود دارد استخراج میکند و خطا نمیدهد.
اگر start_num را 0 بزنم چه میشود؟
معمولاً خطای #VALUE! میگیرید چون شمارش کاراکترها از 1 شروع میشود.
برای متنهای فارسی هم درست کار میکند؟
بله. MID بر اساس موقعیت کاراکترها عمل میکند و با متن فارسی هم قابل استفاده است. فقط حواستان به فاصلهها و کاراکترهای مخفی (مثل فاصله اضافه) باشد.
جمعبندی و پیشنهاد یادگیری بعدی
تابع MID یکی از کاربردیترین ابزارهای اکسل برای استخراج بخش مشخصی از متن است. اگر با کدها و رشتههای ساختیافته سروکار دارید، MID به شما کمک میکند دادهها را استاندارد کنید، کلید جستجو بسازید، شرطگذاری کنید و گزارشهای دقیقتری تهیه کنید.
پیشنهاد برای یادگیری بعدی: برای حرفهایتر شدن در کار با متنها، سراغ توابع LEFT و RIGHT و همچنین توابع مرتبط با پیدا کردن موقعیت مانند FIND/SEARCH بروید. اگر اکسل جدید دارید، یادگیری TEXTBEFORE و TEXTAFTER هم خیلی کمککننده است.
