ویژگی تصویر

تابع MID در اکسل — معرفی و کاربردهای عملی

  /  اکسل   /  تابع MID در اکسل
بنر تبلیغاتی الف

تابع MID (در برخی نسخه‌های فارسی اکسل با نام MID یا مید نمایش داده می‌شود) برای استخراج بخشی از یک رشتهٔ متنی بر اساس محل شروع و طول مورد نظر به کار می‌رود. این تابع در پاکسازی داده‌ها، جداسازی شناسه‌ها، استخراج کدها و تهیه گزارش‌های دقیق بسیار مفید است.

ساختار و پارامترها

پارامترتوضیح
textرشتهٔ متنی یا سلولی که می‌خواهید از آن استخراج کنید.
start_numشمارهٔ کاراکتر شروع (اولین کاراکتر برابر 1 است).
num_charsتعداد کاراکترهایی که باید برگشت داده شوند.

قاعدهٔ کلی: MID(text, start_num, num_chars)

مثال‌های ساده

  • استخراج پنج کاراکتر از محل سوم رشته در سلول A1:
=MID(A1,3,5)

توضیح: این فرمول از کاراکتر سوم در مقدار داخل A1 شروع کرده و پنج کاراکتر بعدی را برمی‌گرداند. اگر طول رشته کم‌تر از مقدار خواسته شده باشد، MID بقیهٔ رشته را بازمی‌گرداند بدون تولید خطا.

  • استخراج پسوند فایل از نام فایل در B2 (فرض: filename.ext):
=MID(B2,FIND(".",B2)+1,LEN(B2)-FIND(".",B2))

توضیح: با FIND محلی که نقطه قرار دارد پیدا می‌کنیم، سپس از کاراکتر بعد از نقطه شروع کرده و تا انتهای رشته مقدار مناسب را برمی‌گردانیم. این الگو برای استخراج دامنهٔ ایمیل یا پسوند فایل کاربردی است.

موارد کاربردی و ترکیب با توابع دیگر

  • استخراج کد استان از شماره تلفن: اگر شماره استاندارد باشد، می‌توان از MID برای بیرون کشیدن کد منطقه استفاده کرد.
  • جداسازی نام میانی از نام کامل: ترکیب با FIND و SUBSTITUTE برای پیدا کردن فواصل و خالی کردن ورودی‌های نامناسب.
  • استخراج شماره‌های سریال، کد محصول یا تاریخ از رشته‌های ترکیبی که ساختار ثابتی دارند.

نمونه: استخراج دامنه از ایمیل

=MID(A1,FIND("@",A1)+1,LEN(A1)-FIND("@",A1))

توضیح: این فرمول از کاراکتر بعد از @ شروع کرده و تا انتهای رشته دامنه ایمیل را برمی‌گرداند. در صورت وجود فضا یا دادهٔ غیرمعمول بهتر است قبل از آن از TRIM یا CLEAN استفاده کنید.

مشکلات و نکات رایج

  • start_num کمتر از 1: MID خطا می‌دهد یا رفتار غیرمنتظره خواهد داشت — همیشه ورودی‌ها را بررسی کنید.
  • اگر start_num بزرگ‌تر از طول رشته باشد، MID مقدار خالی (“”) برمی‌گرداند.
  • MID حساس به فضای خالی و کاراکترهای نامرئی است؛ قبل از پردازش از TRIM و CLEAN استفاده کنید.

ترکیب با توابع LEN و FIND برای انعطاف‌پذیری بیشتر

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

=MID(A2,FIND("-",A2)+1,LEN(A2)-FIND("-",A2))

توضیح: فرض کنید رشته‌ای مثل “INV-202511” داریم و می‌خواهیم شماره فاکتور بعد از خط تیره را بگیریم. FIND موقعیت “-” را برمی‌گرداند و سپس با LEN طول باقیمانده محاسبه می‌شود.

استخراج اعداد از متن (روش پیشرفته با فرمول آرایه‌ای)

خارج کردن تنها اعداد از یک رشته معمولاً به MID به تنهایی کافی نیست. می‌توانیم از ترکیب توابعی مثل SEQUENCE، MID و TEXTJOIN (در نسخه‌های پشتیبانی‌شده) یا استفاده از VBA برای ساده‌سازی استفاده کنیم.

=TEXTJOIN("",TRUE,IFERROR(MID(A1,SEQUENCE(LEN(A1)),1)*1,""))

توضیح: این فرمول آرایه‌ای در نسخه‌های جدید اکسل کار می‌کند. SEQUENCE برای ایجاد آرایهٔ ایندکس‌هاست، MID هر کاراکتر را جدا می‌کند، ضرب در 1 کاراکترهای عددی را به عدد تبدیل می‌کند و IFERROR کاراکترهای غیرعددی را نادیده می‌گیرد. در نهایت TEXTJOIN اعداد را به هم می‌چسباند.

استفاده از VBA برای استخراج منعطف‌تر

Function ExtractNumbers(s As String) As String
    Dim i As Long, ch As String, out As String
    For i = 1 To Len(s)
        ch = Mid(s, i, 1)
        If ch >= "0" And ch <= "9" Then out = out & ch
    Next i
    ExtractNumbers = out
End Function

توضیح: این تابع سفارشی VBA تمامی کاراکترها را پیمایش می‌کند و تنها ارقام را جمع‌آوری می‌کند. سپس می‌توانید در شیت‌ها با =ExtractNumbers(A1) از آن استفاده کنید. این روش نسبت به فرمول‌های پیچیده سریع‌تر و برای حجم داده بزرگ مناسب‌تر است.

نکات پیشرفته و توصیه‌های کارایی

  • برای داده‌های بزرگ ترکیب توابع پیچیده آرایه‌ای می‌تواند کند باشد؛ در این موارد استفاده از Power Query یا VBA پیشنهاد می‌شود.
  • اگر ساختار ورودی شناخته و ثابت است، همیشه از پارامترهای عددی مستقیم استفاده کنید تا از محاسبات FIND و LEN پرهیز شود؛ این کار سرعت را بالا می‌برد.
  • برای پاکسازی ورودی‌ها قبل از MID از TRIM، CLEAN و SUBSTITUTE استفاده کنید تا کاراکترهای غیرقابل‌دید و فاصله‌های اضافی حذف شوند.

مثال عملی ترکیبی: جدا کردن نام و نام خانوادگی

فرض کنید A1 شامل “Ali Rezaei” است و می‌خواهیم نام و نام خانوادگی را جدا کنیم:

=LEFT(A1,FIND(" ",A1)-1)
=RIGHT(A1,LEN(A1)-FIND(" ",A1))

توضیح: در فرمول اول نام (قسمت قبل از فاصله) و در فرمول دوم نام خانوادگی (باقیمانده پس از فاصله) استخراج می‌شود. اگر نام میانی ممکن است وجود داشته باشد، باید از راهکارهای پیچیده‌تر مانند SUBSTITUTE یا فرمول‌های آرایه‌ای استفاده کنید.

خلاصه و نتیجه‌گیری

تابع MID ابزاری ساده ولی قدرتمند برای استخراج بخش‌هایی از متن بر اساس موقعیت و طول است. ترکیب آن با توابع FIND، LEN، TRIM و توابع پیشرفته‌تر مانند TEXTJOIN یا Power Query، امکان حل مسائل واقعی مانند جداسازی ایمیل، استخراج کدها و پاکسازی داده‌ها را فراهم می‌آورد. برای داده‌های پیچیده یا حجیم، استفاده از VBA یا Power Query عملکرد و خوانایی را بهبود می‌بخشد.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: