معرفی تابع LEFT
تابع LEFT در اکسل برای برداشتن تعداد مشخصی کاراکتر از ابتدای (سمت چپ) یک متن استفاده میشود. این تابع زمانی خیلی کاربردی است که کدها، پیششمارهها، حروف ابتدای نامها، یا بخش ثابت اول یک رشته را لازم دارید (مثلاً 3 رقم اول کد کالا، یا 2 حرف اول استان).
خروجی LEFT همیشه یک متن است؛ حتی اگر کاراکترهای جداشده عدد باشند (مثلاً “123”). اگر بعداً نیاز دارید با آن محاسبه انجام دهید، باید آن را به عدد تبدیل کنید.
مثال ساده فارسی: فرض کنید در سلول A2 متن «تهران-منطقه2» داریم و میخواهیم فقط 5 کاراکتر اول (یعنی «تهران») را جدا کنیم.
=LEFT(A2;5)
کاربردهای اصلی تابع LEFT
- جدا کردن پیششماره یا کد ثابت اول (مثلاً 2 حرف اول استان یا 3 رقم اول کالا)
- استانداردسازی دادهها و آمادهسازی برای گزارشگیری (Data Cleaning)
- ساخت کلیدهای کمکی برای جستجو (Lookup Key) در ترکیب با XLOOKUP/VLOOKUP
- استخراج بخش اول نام و نام خانوادگی (وقتی ساختار ثابت باشد)
- تفکیک تاریخ/کدهایی که از ابتدا معنیدار هستند (مثل “IR-…” یا “PRD…”)
- کنترل شرطی دادهها (مثلاً اگر با “IR” شروع شد، یک برچسب خاص بده)
ساختار (Syntax)
=LEFT(text, [num_chars])
=LEFT(متن; [تعداد_کاراکتر])
آرگومانها
text (متن) / متنی که میخواهیم از ابتدا جدا کنیم
میتواند یک سلول (مثل A2)، یک متن مستقیم داخل کوتیشن (مثل “تهران”)، یا خروجی یک تابع دیگر باشد.
num_chars (تعداد_کاراکتر) / تعداد کاراکترهای موردنظر از سمت چپ
اختیاری است. اگر وارد نشود، اکسل به طور پیشفرض 1 کاراکتر از ابتدا برمیدارد. مقدار آن معمولاً عدد مثبت است.
مثالهای ساده و پایه
مثال 1: برداشتن 1 کاراکتر اول (حالت پیشفرض)
اگر در A2 عبارت «سلام» باشد و تعداد کاراکتر را ننویسید، فقط اولین کاراکتر برگردانده میشود.
=LEFT(A2)
نتیجه: «س»
مثال 2: استخراج 3 رقم اول کد کالا
فرض کنید در A2 کد «125-7789» دارید و میخواهید 3 کاراکتر اول را جدا کنید.
=LEFT(A2;3)
نتیجه: «125»
مثال 3: ساخت ستون «کد شعبه» از روی کد کامل
فرض کنید کدها به شکل «BR01-INV-5580» هستند و میخواهید فقط «BR01» را بگیرید (4 کاراکتر اول).
=LEFT(A2;4)
نتیجه: «BR01»
مثالهای کاربردی و واقعی
مثال 1: تشخیص اینکه کد با IR شروع میشود یا نه (ترکیب با IF)
فرض کنید در A2 کدهایی مثل «IR-98452» یا «TR-11223» دارید و میخواهید اگر با IR شروع شد بنویسد «ایرانی»، در غیر این صورت «غیرایرانی».
=IF(LEFT(A2;2)="IR";"ایرانی";"غیرایرانی")
مثال 2: کنترل چند شرط با AND/OR (کد معتبر)
فرض کنید کد معتبر باید با “PR” شروع شود و طول آن حداقل 8 کاراکتر باشد.
=IF(AND(LEFT(A2;2)="PR";LEN(A2)>=8);"معتبر";"نامعتبر")
مثال 3: شمارش تعداد کدهایی که با یک پیشوند شروع میشوند (COUNTIF)
اگر در محدوده A2:A100 کدها دارید و میخواهید تعداد کدهایی که با “IR” شروع میشوند را بشمارید، از الگوی ستاره استفاده کنید.
=COUNTIF(A2:A100;"IR*")
نکته: این روش در بسیاری مواقع از LEFT سریعتر و سادهتر است، اما LEFT زمانی لازم میشود که خودِ پیشوند را به عنوان خروجی نیاز دارید.
مثال 4: جستجوی قیمت بر اساس 3 رقم اول کد (ترکیب با XLOOKUP)
فرض کنید در A2 کد کامل کالا دارید (مثل “125-7789”) و در جدول D2:E10 «کد_گروه» (سه رقم اول) و «قیمت» ثبت شده است. با LEFT میتوانید کلید جستجو بسازید و با XLOOKUP قیمت را پیدا کنید.
=XLOOKUP(LEFT(A2;3);D2:D10;E2:E10;"یافت نشد")
مثال 5: جمع مبلغ برای کدهایی با پیشوند مشخص (SUMIF بدون LEFT و با معیار متنی)
اگر در ستون A کد و در ستون B مبلغ دارید و میخواهید جمع مبالغ کدهایی که با “IR” شروع میشوند را به دست آورید:
=SUMIF(A2:A100;"IR*";B2:B100)
در عمل، این راهکار معمولاً بهتر از ساخت ستون کمکی با LEFT است؛ اما اگر باید «پیشوند» را جداگانه ذخیره کنید، LEFT مفید میشود.
ترکیب تابع LEFT با فرمولهای دیگر
- LEFT + LEN برای گرفتن همه متن به جز چند کاراکتر آخر (وقتی تعداد کاراکترهای حذفشونده ثابت است)
=LEFT(A2;LEN(A2)-3)
- LEFT + FIND برای گرفتن متن قبل از یک جداکننده (مثل قبل از “-”)
=LEFT(A2;FIND("-";A2)-1) - LEFT + IF برای دستهبندی بر اساس پیشوند
=IF(LEFT(A2;1)="A";"گروه A";"سایر")
- LEFT + VALUE برای تبدیل خروجی به عدد (وقتی سه رقم اول عددی است)
=VALUE(LEFT(A2;3))
- LEFT + XLOOKUP برای ساخت کلید جستجو از ابتدای متن
=XLOOKUP(LEFT(A2;4);G2:G50;H2:H50;"یافت نشد")
خطاهای رایج و روش رفع آنها
1) خروجی اشتباه به خاطر فاصلههای اضافی (Space) در ابتدای متن
اگر متن با فاصله شروع شده باشد، LEFT همان فاصله را هم جزو کاراکترها حساب میکند و خروجی «بههمریخته» میشود. راهحل: قبل از LEFT از TRIM استفاده کنید (یا CLEAN در موارد خاص).
=LEFT(TRIM(A2);5)
2) خطای #VALUE! هنگام استفاده از FIND در ترکیب با LEFT
اگر از فرمولهایی مثل «متن قبل از -» استفاده کنید و بعضی سلولها اصلاً “-” نداشته باشند، تابع FIND خطا میدهد و کل فرمول #VALUE! میشود. راهحل: با IFERROR پوشش دهید.
=IFERROR(LEFT(A2;FIND("-";A2)-1);A2)
3) عددها بعد از LEFT قابل جمع شدن نیستند
LEFT خروجی را متن برمیگرداند. اگر قصد محاسبه دارید، آن را به عدد تبدیل کنید.
=VALUE(LEFT(A2;3))
4) انتخاب تعداد کاراکتر ثابت برای دادههای غیراستاندارد
اگر طول پیشوند ثابت نیست، LEFT با عدد ثابت نتیجه غلط میدهد. راهحل: بهجای عدد ثابت، تعداد را با FIND/SEARCH یا منطق دیگری پویا کنید.
=LEFT(A2;FIND(" ";A2)-1)
نکات حرفهای و ترفندهای مهم
- بهجای LEFT، گاهی از الگو در COUNTIF/SUMIF استفاده کنید: برای شروع متنها، معیارهایی مثل “IR*” سادهتر و سریعتر است.
- برای جداکنندهها، SEARCH انعطافپذیرتر از FIND است: SEARCH حساس به حروف بزرگ/کوچک نیست (در بسیاری زبانها/سناریوها مفید است).
- ستون کمکی بسازید: اگر در چندین فرمول نیاز دارید پیشوند را استفاده کنید، یک ستون کمکی با LEFT بسازید تا خوانایی و سرعت فایل بهتر شود.
- با دادههای فارسی، تعداد کاراکترها را دقیق تست کنید: در اکثر سناریوها LEFT با کاراکترها درست کار میکند، اما اگر متن ترکیبی (فارسی/انگلیسی/اعداد/علائم) دارید، چند نمونه را بررسی کنید.
- از Table (Format as Table) استفاده کنید: ارجاعهای ساختیافته خواناتر هستند و خطای رنجها کمتر میشود.
تفاوت تابع LEFT با توابع مشابه
- RIGHT: کاراکترها را از انتهای متن (سمت راست) برمیدارد، نه از ابتدا.
- MID: کاراکترها را از وسط متن، با تعیین نقطه شروع و تعداد کاراکتر استخراج میکند.
- TEXTBEFORE (در نسخههای جدید): اگر هدف شما «متن قبل از جداکننده» است، TEXTBEFORE معمولاً از LEFT+FIND سادهتر و امنتر است.
- Flash Fill: برای استخراجهای تکراری میتواند بدون فرمول کار را انجام دهد، اما برای گزارشهای پویا و بهروزرسانی خودکار، LEFT بهتر است.
سازگاری با نسخههای مختلف اکسل
- تابع LEFT از نسخههای قدیمی اکسل (مثل 2007، 2010، 2013، 2016) تا Microsoft 365 پشتیبانی میشود.
- تفاوت اصلی معمولاً در جداکننده آرگومانها است: در برخی تنظیمات منطقهای به جای «,» از «;» استفاده میشود.
- اگر از توابع جدید مثل XLOOKUP یا TEXTBEFORE استفاده میکنید، ممکن است در نسخههای قدیمی در دسترس نباشند؛ اما خود LEFT همیشه در دسترس است.
سؤالات پرتکرار درباره تابع LEFT
آیا LEFT فقط برای متن است؟
ورودی میتواند عدد هم باشد، اما اکسل آن را به متن تبدیل میکند و خروجی هم متن خواهد بود.
اگر تعداد کاراکتر بیشتر از طول متن باشد چه میشود؟
اکسل خطا نمیدهد و کل متن را برمیگرداند.
چطور متن قبل از خط تیره “-” را جدا کنم؟
بهترین روش کلاسیک ترکیب LEFT با FIND است (و بهتر است با IFERROR ایمنش کنید).
چرا نتیجه LEFT عددی است اما جمع نمیشود؟
چون خروجی متن است. باید با VALUE یا ضرب در 1 به عدد تبدیل کنید.
جمعبندی و پیشنهاد یادگیری بعدی
تابع LEFT یکی از مهمترین ابزارهای کار با متن در اکسل است که به شما کمک میکند بخش ابتدای رشتهها را جدا کنید، دادهها را استاندارد کنید، کلید جستجو بسازید و شرطگذاری انجام دهید. برای حرفهایتر شدن، پیشنهاد میشود بعد از LEFT این موارد را یاد بگیرید: توابع RIGHT و MID برای استخراجهای کاملتر، LEN برای مدیریت طول متن، FIND/SEARCH برای استخراج پویا بر اساس جداکننده، و در نسخههای جدید TEXTBEFORE/TEXTAFTER برای سناریوهای مدرنتر.
