فصل ۳: توابع کلیدی — منطقی، شرطی، متنی، تاریخ و گرد کردن

توابع متنی مدرن: TEXTJOIN، TEXTBEFORE، TEXTAFTER، TEXTSPLIT و TEXT

بریدن و چسباندن متن بدون FIND های تو در تو

تا چند سال پیش جدا کردن بخش وسط یک کد مثل «KSH-1403-0587» فرمولی از LEFT، MID و چند FIND تو در تو می‌خواست. Excel 365 توابعی دارد که همین کار را خوانا و کوتاه انجام می‌دهند. جدول زیر نسخه‌ی مورد نیاز هر تابع را نشان می‌دهد:

تابعکارنسخه
CONCATچسباندن محدوده‌ها2019 به بعد
TEXTJOINچسباندن با جداکننده و نادیده‌گرفتن خالی‌ها2019 به بعد
TEXTBEFORE / TEXTAFTERمتن قبل یا بعد از یک جداکننده365 (و 2024)
TEXTSPLITشکستن متن به چند ستون یا سطر (spill)365 (و 2024)
TEXTتبدیل عدد یا تاریخ به متن با قالبهمه
LEFT، RIGHT، MID، FIND، SEARCH، LENابزارهای کلاسیکهمه

مثال‌ها روی کد فاکتور «KSH-1403-0587»

=TEXTBEFORE(A2, "-")               → KSH
=TEXTAFTER(A2, "-")                → 1403-0587
=TEXTAFTER(A2, "-", -1)            → 0587        (عدد منفی: از انتها بشمار)
=TEXTBEFORE(TEXTAFTER(A2,"-"),"-") → 1403
=TEXTSPLIT(A2, "-")                → KSH | 1403 | 0587  (سه ستون)
=TEXTSPLIT(A2, {"-","/"})          → چند جداکننده هم‌زمان
=TEXTBEFORE(A2, "#", , , , A2)     → اگر # نبود، کل متن (آرگومان if_not_found)

معادل کلاسیک برای Excel 2016/2019 (بخش وسط):
=MID(A2, FIND("-",A2)+1, FIND("-",A2,FIND("-",A2)+1)-FIND("-",A2)-1)

TEXTJOIN: فهرست‌سازی

=TEXTJOIN("، ", TRUE, B2:B20)                         ← نام‌ها با ویرگول فارسی
=TEXTJOIN("، ", TRUE, UNIQUE(FILTER(B:B, C:C="کاشان")))  ← نمایندگان یکتای کاشان (365)
=TEXTJOIN(CHAR(10), TRUE, B2:B6)                       ← هر نام در یک خط (Wrap Text روشن)

TEXT: عدد داخل جمله

وقتی عدد را با & به متن می‌چسبانید، قالب عددی از بین می‌رود: ="فروش: "&E1 عدد را بدون جداکننده‌ی هزارگان نشان می‌دهد. TEXT همان کدهای قالب سفارشی درس ۳ را می‌پذیرد:

="مجموع فروش مرداد: "&TEXT(E1,"#,##0")&" تومان"
="تاریخ گزارش: "&TEXT(TODAY(),"[$-fa-IR,16]yyyy/mm/dd")
="رشد: "&TEXT(G1,"0.0%;-0.0%")
=TEXT(E1,"[$-3000000]#,##0")       ← با ارقام فارسی

نکته‌هایی که کمتر کسی می‌داند

  • TEXTSPLIT دو جداکننده‌ی جدا می‌گیرد: ستونی و سطری. =TEXTSPLIT(A2, ",", ";") متنی مثل «a,b;c,d» را به یک جدول ۲×۲ تبدیل می‌کند.
  • FIND به بزرگی و کوچکی حروف حساس است و wildcard نمی‌پذیرد؛ SEARCH برعکس. برای متن فارسی تفاوتی در حروف بزرگ و کوچک نیست، اما wildcard مهم است.
  • TEXTJOIN حداکثر 32٬767 کاراکتر (سقف یک سلول) خروجی دارد و اگر بیشتر شود #VALUE! می‌دهد؛ برای فهرست‌های طولانی مراقب باشید.
  • LEN نیم‌فاصله را یک کاراکتر می‌شمارد؛ «کتاب‌ها» ۶ کاراکتر است نه ۵. در اعتبارسنجی طول متن (مثلاً عنوان کالا حداکثر ۵۰ حرف) این را در نظر بگیرید.
  • TEXTBEFORE و TEXTAFTER آرگومان match_mode دارند (1 = بدون حساسیت به حروف) و آرگومان match_end که انتهای متن را هم «جداکننده» فرض می‌کند؛ برای متن‌هایی که گاهی جداکننده ندارند مفید است.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.