تابع SPLIT در اکسل
در اکسل اصطلاح تابع SPLIT معمولاً به دو معنا بهکار میرود: تابع TEXTSPLIT در نسخههای جدید مایکروسافت 365 و تابع Split در VBA. همچنین در محیطهایی مثل Google Sheets تابعی بهنام SPLIT وجود دارد. در این مقاله به صورت عملی و دقیق توضیح میدهم چگونه متنها را در اکسل جداسازی کنید، به چه مسائلی توجه داشته باشید و برای نسخههای قدیمیتر چه راهحلهایی موجود است.
چرا جداسازی متن مهم است؟
در تحلیل دادهها معمولاً دادههایی به شکل «نام و نامخانوادگی»، «آدرسهای جداشده با کاما» یا «فهرستهای ترکیبی» داریم که باید به ستونهای مجزا تبدیل شوند تا بتوانیم فیلتر، محاسبه یا مدلسازی انجام دهیم. تابعهای جداسازی زندگی را ساده میکنند.
تابع TEXTSPLIT (نسخههای جدید Excel)
اگر از Microsoft 365 استفاده میکنید، تابع TEXTSPLIT کاملترین روش برای تقسیم متن است. این تابع خروجیهای آرایهای (spilled) تولید میکند که به صورت خودکار در سلولهای مجاور پخش میشوند.
=TEXTSPLIT(text, col_delimiter, [row_delimiter], [ignore_empty], [match_mode], [pad_with])
مثال: جدا کردن نام و نامخانوادگی که در سلول A2 قرار دارد و با فاصله جدا شده است:
=TEXTSPLIT(A2, " ")
توضیح: این فرمول متن موجود در A2 را بر اساس فاصله به دو یا چند بخش تقسیم میکند و نتایج را در ستونهای مجاور نمایش میدهد.
مثال: جدا کردن با چند جداکننده (مثلاً کاما و سمیکالن) — میتوانید جداکنندههای ستون و سطر را تعریف کنید:
=TEXTSPLIT(A2, {",",";"} )
توضیح: با ارسال آرایهای از جداکنندهها، TEXTSPLIT هرکدام را بهعنوان حد مرز در نظر میگیرد.
گزینههای مهم TEXTSPLIT
- ignore_empty: حذف عناصر خالی (TRUE/FALSE).
- match_mode: تعیین حساسیت به حروف بزرگ/کوچک.
- pad_with: پر کردن خانههای خالی با مقدار مشخص.
نمونه کاربردی — تقسیم آدرس در ستونهای متعدد
فرض کنید A2 شامل: “Tehran, Iran, 12345” باشد. برای نمایش شهر، کشور و کد پستی به شکل ستونهای جدا:
=TEXTSPLIT(A2, ",")
توضیح: TEXTSPLIT آیتمها را بر اساس کاما جدا و در ستونهای جدا نمایش میدهد. در صورت وجود فاصلههای اضافی میتوان از TRIM در ترکیب استفاده کرد.
تابع SPLIT در VBA
اگر از نسخههای قدیمیتر Excel یا خودکارسازی با ماکرو استفاده میکنید، تابع Split در VBA بسیار کاربردی است. خروجی یک آرایه یکبعدی است که میتوان آن را در سلولها قرار داد.
Sub SplitExample()
Dim parts() As String
Dim i As Integer
parts = Split(Range("A1").Value, ",")
For i = LBound(parts) To UBound(parts)
Range("B1").Offset(0, i).Value = Trim(parts(i))
Next i
End Sub
توضیح: این ماکرو متن در سلول A1 را با جداکننده کاما تقسیم میکند و هر بخش را در ستونهای B1، C1، … قرار میدهد. از Trim برای حذف فاصلههای اضافی استفاده شده است.
راهکارها برای نسخههای قدیمی (بدون TEXTSPLIT)
- Text to Columns (Data → Text to Columns): ابزار تعاملی برای تقسیم بر اساس جداکننده یا طول ثابت.
- فرمولهای ترکیبی: استفاده از FIND، MID، LEFT، RIGHT برای استخراج بخشها در صورت نیاز به اتوماتیکسازی.
- FILTERXML trick: با تبدیل متن به XML میتوان از FILTERXML برای تبدیل به ستونها استفاده کرد (نیاز به فرمت مناسب و امنیت).
مثال با FILTERXML (نسخههای پشتیبانیشده)
=FILTERXML("" & SUBSTITUTE(A2, ",", "") & "", "//s[1]")
توضیح: در این مثال با SUBSTITUTE کاماها را به تگهای XML تبدیل کرده و سپس با FILTERXML عنصر اول را استخراج میکنیم. این روش پیچیدهتر است و همیشه قابل اعتماد نیست ولی برای برخی سناریوها مفید است.
مقایسه اجمالی — جدول سازگاری
| روش | نسخه اکسل | مزایا |
|---|---|---|
| TEXTSPLIT | Microsoft 365 | آرایه دینامیک، پشتیبانی از چندین جداکننده، گزینههای پیشرفته |
| VBA Split | همه نسخهها | قابل اعتماد برای اتوماسیون، کنترل کامل |
| Text to Columns | همه نسخهها | ساده، سریع، مناسب برای یکبار پردازش |
نکات عملی و توصیههای حرفهای
- همیشه قبل از جداسازی از TRIM برای حذف فضای اضافی استفاده کنید.
- اگر تعداد قطعات متغیر است، TEXTSPLIT بهترین گزینه است چون خروجی را بهصورت پویا پایش میکند.
- برای حفظ کاراکتر جداکننده یا استخراج همراه با آن، از روشهای ترکیبی یا VBA استفاده کنید.
- در زمان استفاده از Text to Columns مراقب بازنویسی دادهها باشید؛ بهتر است ابتدا کپی بگیرید.
- برای دادههای پیچیده (مثلاً جملاتی که داخل کوتیشن جداکننده دارند) از Power Query استفاده کنید که کنترل بیشتری روی موارد ویژه دارد.
Power Query — گزینهای قدرتمند
Power Query برای تبدیلهای پیچیده و دستهای بسیار مناسب است. میتوانید ستون را Import کنید و از گزینه Split Column بر اساس delimiter یا number of characters استفاده نمایید. برای خودکارسازی هم میتوان کد M تولید شده را ویرایش کرد.
// نمونه M
Table.SplitColumn(Source, "Column1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Column1.1","Column1.2"})
توضیح: این قطعه کد Power Query ستون “Column1” را بر اساس کاما تقسیم میکند و دو ستون جدید ایجاد مینماید. QuoteStyle.Csv به منظور پشتیبانی از کوتیشنهاست.
جمعبندی
تابع SPLIT در اکسل بسته به محیط میتواند شکلهای متفاوتی داشته باشد: TEXTSPLIT در Excel 365، تابع Split در VBA، ابزار Text to Columns و راهحلهایی مثل Power Query یا FILTERXML. برای کار روزمره و دادههای متغیر، TEXTSPLIT بهترین و سادهترین گزینه است؛ برای اتوماسیون و منطق پیچیده، VBA یا Power Query مناسبترند.
با درک امکانات هر روش میتوانید بهترین انتخاب را برای پروژهتان داشته باشید و از خطاهای متداول (فضاهای اضافی، تعداد متغیر قسمتها، کوتیشنها) جلوگیری کنید.
آیا این مطلب برای شما مفید بود ؟




