معرفی تابع CLEAN
تابع CLEAN در اکسل برای «پاکسازی متن» استفاده میشود؛ یعنی کاراکترهای کنترلی (Non-Printable) را از داخل یک رشته متنی حذف میکند. این کاراکترها معمولاً وقتی وارد فایل اکسل میشوند که داده را از نرمافزارهای دیگر (مثل سیستمهای حسابداری، وبسایتها، فایلهای متنی، PDF یا خروجیهای قدیمی) کپی/ایمپورت کرده باشید. نتیجه این کاراکترهای مخفی میتواند بههمریختگی نمایش متن، مشکل در جستجو (VLOOKUP/XLOOKUP)، خطا در مقایسهها و بههمریختگی گزارشها باشد.
CLEAN بهصورت کلاسیک کاراکترهای کنترلی کُدهای 0 تا 31 (ASCII) را حذف میکند. بنابراین برای حذف فاصلههای اضافی معمولی (Space) یا فاصلههای خاص مثل NBSP معمولاً باید از توابع مکمل مثل TRIM یا SUBSTITUTE هم کمک بگیرید.
مثال ساده فارسی: فرض کنید در سلول A2 یک متن دارید که داخلش کاراکترهای مخفی آمده و ظاهرش عادی است، اما در جستجو و تطبیق مشکل ایجاد میکند. با CLEAN متن را پاکسازی میکنید.
=CLEAN(A2)
کاربردهای اصلی تابع CLEAN
- پاکسازی متنهای کپیشده از وبسایتها، PDF، ایمیلها و نرمافزارهای قدیمی
- بهبود نتیجه جستجو و تطبیق در توابعی مثل XLOOKUP/VLOOKUP/MATCH
- تمیز کردن دادههای ورودی قبل از گزارشگیری و داشبورد
- کاهش خطا در مقایسه رشتهها (مثلاً برابر بودن دو کد کالا)
- پاکسازی دادهها قبل از حذف فاصلهها با TRIM یا جایگزینی کاراکترها با SUBSTITUTE
- استانداردسازی دادههای متنی قبل از دستهبندی و فیلتر
ساختار (Syntax)
=CLEAN(text)
=CLEAN(متن)
آرگومانها
text / متن
متنی که میخواهید کاراکترهای کنترلیِ غیرقابلنمایش از آن حذف شود. این آرگومان میتواند آدرس سلول (مثل A2)، یک متن مستقیم داخل کوتیشن، یا خروجی یک فرمول دیگر باشد.
مثالهای ساده و پایه
مثال 1: پاکسازی یک سلول متنی
فرض کنید A2 شامل متنی است که از یک منبع خارجی آمده و چند کاراکتر مخفی دارد. با فرمول زیر متن پاکسازی میشود:
=CLEAN(A2)
نتیجه: همان متن نمایش داده میشود، اما کاراکترهای کنترلی حذف میشوند؛ بنابراین جستجو، کپی، فیلتر و تطبیق بهتر کار میکند.
مثال 2: پاکسازی متن ثابت (برای تست سریع)
اگر میخواهید سریع خروجی CLEAN را روی یک متن ببینید (بدون تکیه بر سلول)، میتوانید متن را مستقیم وارد کنید:
=CLEAN("متن نمونه")نتیجه: چون کاراکتر کنترلی ندارد، خروجی همان «متن نمونه» خواهد بود.
مثالهای کاربردی و واقعی
1) ترکیب CLEAN با TRIM برای تمیزکاری کاملتر
CLEAN کاراکترهای کنترلی را حذف میکند، اما فاصلههای اضافی را نه. TRIM فاصلههای اضافی بین کلمات و ابتدا/انتها را جمعوجور میکند. ترکیب این دو برای دادههای کثیف بسیار رایج است:
=TRIM(CLEAN(A2))
نتیجه: هم کاراکترهای مخفی حذف میشوند و هم فاصلههای اضافی معمولی اصلاح میشوند.
2) حل مشکل XLOOKUP وقتی کدها «ظاهراً» یکی هستند اما پیدا نمیشوند
یکی از رایجترین مشکلات این است که کد کالا در فایل مرجع با کد کالا در فایل ورودی برابر به نظر میرسد، اما به دلیل کاراکترهای مخفی تطبیق انجام نمیشود. در این حالت، مقدار مورد جستجو را پاکسازی کنید:
=XLOOKUP(TRIM(CLEAN(A2));B:B;C:C;"پیدا نشد")
نتیجه: احتمال عدمتطبیق به خاطر کاراکترهای مخفی و فاصلههای اضافه خیلی کمتر میشود.
3) COUNTIF روی متنهای کپیشده از سیستمها
اگر COUNTIF شمارش درست نمیدهد، ممکن است مقدار معیار در بعضی سلولها کاراکتر مخفی داشته باشد. میتوانید یک ستون کمکی بسازید که دادهها را تمیز کند و بعد روی ستون تمیزشده COUNTIF بزنید.
در ستون B مقدار تمیزشده:
=TRIM(CLEAN(A2))
سپس شمارش:
=COUNTIF(B:B;"کد-123")
نتیجه: شمارش دقیقتر میشود چون دادهها استاندارد شدهاند.
4) ترکیب با AND/OR برای اعتبارسنجی ورودی (Data Quality)
فرض کنید میخواهید بررسی کنید آیا متن پس از پاکسازی خالی نشده و حداقل طولی دارد. (گاهی کاربر فقط کاراکترهای نامرئی وارد میکند.)
=AND(LEN(TRIM(CLEAN(A2)))>0;LEN(TRIM(CLEAN(A2)))>=3)
نتیجه: اگر بعد از تمیزکاری هنوز متن معنیدار باشد و طول حداقلی را داشته باشد TRUE میدهد.
5) جمعزدن اعداد متنیِ کپیشده (سناریوی رایج در واردکردن داده)
گاهی عددها به شکل متن و همراه با کاراکترهای مخفی وارد میشوند. اگر فقط مشکل کاراکتر کنترلی باشد، میتوانید ابتدا CLEAN کنید و سپس آن را به عدد تبدیل کنید و SUM بگیرید (در عمل ممکن است به SUBSTITUTE هم نیاز شود، اما این نمونه یک حالت رایج را نشان میدهد):
=SUM(VALUE(CLEAN(A2));VALUE(CLEAN(A3));VALUE(CLEAN(A4)))
نتیجه: عددهای متنیِ دارای کاراکترهای مخفی به عدد تبدیل میشوند و جمع درست انجام میشود.
ترکیب تابع CLEAN با فرمولهای دیگر
- CLEAN + TRIM برای حذف کاراکترهای مخفی و فاصلههای اضافی
=TRIM(CLEAN(A2))
- CLEAN + SUBSTITUTE برای حذف کاراکترهای خاصی که CLEAN حذف نمیکند (مثل NBSP با کد 160)
=SUBSTITUTE(CLEAN(A2);CHAR(160);" ")
- CLEAN + XLOOKUP برای جلوگیری از خطای پیدا نشدن به خاطر کاراکترهای پنهان
=XLOOKUP(TRIM(CLEAN(A2));TRIM(CLEAN(B:B));C:C;"پیدا نشد")
- CLEAN + IF برای برگرداندن مقدار جایگزین وقتی متن بعد از پاکسازی خالی است
=IF(LEN(TRIM(CLEAN(A2)))=0;"خالی/نامعتبر";TRIM(CLEAN(A2)))
- CLEAN + COUNTIF روی ستون تمیزشده برای شمارش دقیق
=COUNTIF(B:B;TRIM(CLEAN(A2)))
خطاهای رایج و روش رفع آنها
1) انتظار دارید فاصلههای اضافی حذف شوند، اما نشدهاند
CLEAN فاصلههای معمولی را حذف نمیکند. برای حذف فاصلههای اضافه از TRIM استفاده کنید.
=TRIM(CLEAN(A2))
2) متن هنوز «بهظاهر» مشکل دارد (خصوصاً دادههای کپیشده از وب)
بعضی فاصلهها از نوع NBSP (کد 160) هستند و CLEAN آنها را حذف نمیکند. راهحل رایج: جایگزینی CHAR(160) با فاصله معمولی و سپس TRIM.
=TRIM(SUBSTITUTE(CLEAN(A2);CHAR(160);" "))
3) XLOOKUP/VLOOKUP هنوز مقدار را پیدا نمیکند
ممکن است هم در مقدار جستجو و هم در ستون مرجع کاراکترهای مخفی وجود داشته باشد. بهتر است هر دو سمت را تمیز کنید (ترجیحاً با ستون کمکی برای داده مرجع تا سرعت بهتر شود).
=XLOOKUP(TRIM(CLEAN(A2));TRIM(CLEAN(B:B));C:C;"پیدا نشد")
4) خروجی CLEAN عدد را به متن تبدیل کرده و محاسبات به مشکل خورده
CLEAN خروجی متنی میدهد. اگر نیاز دارید عدد داشته باشید، آن را به عدد تبدیل کنید (VALUE یا دو منفی).
=VALUE(CLEAN(A2))
نکات حرفهای و ترفندهای مهم
- برای دادههای زیاد، ستون کمکی بسازید و در آن TRIM(CLEAN()) را اعمال کنید؛ سپس همه فرمولها را روی ستون تمیزشده بنویسید. این کار هم خوانایی را بالا میبرد و هم سرعت را بهتر میکند.
- پاکسازی استاندارد پیشنهادی برای متنهای وارداتی (بهخصوص از وب/سیستمها):
=TRIM(SUBSTITUTE(CLEAN(A2);CHAR(160);" "))
- قبل از Merge/Join کردن متنها پاکسازی کنید تا خروجی نهایی یکدست و قابل جستجو باشد.
- اگر با دادههای فارسی کار میکنید CLEAN مشکل نیمفاصله یا تفاوت «ی/ک عربی و فارسی» را حل نمیکند؛ برای این موارد باید از SUBSTITUTE یا روشهای نرمالسازی جداگانه استفاده شود.
- در پروژههای تیمی یک الگوی ثابت برای تمیزکاری تعریف کنید (مثلاً همیشه TRIM+SUBSTITUTE(CHAR(160))+CLEAN) تا گزارشها در فایلهای مختلف سازگار باشند.
تفاوت تابع CLEAN با توابع مشابه
- CLEAN: کاراکترهای کنترلی غیرقابلچاپ (معمولاً کدهای 0 تا 31) را حذف میکند. مناسب برای متنهای ایمپورتشده از سیستمها.
- TRIM: فاصلههای اضافی معمولی را حذف میکند (ابتدا/انتها و فاصلههای تکراری بین کلمات). کاراکترهای کنترلی را حذف نمیکند.
- SUBSTITUTE: جایگزینی هدفمند؛ برای حذف/تبدیل کاراکترهای خاص (مثل CHAR(160)، خط تیره خاص، کاراکترهای غیرمعمول) عالی است.
- TEXTCLEAN (در بعضی ابزارها/افزونهها): در اکسل کلاسیک تابع استانداردی به این نام نداریم؛ بنابراین برای پاکسازی پیشرفته معمولاً ترکیب CLEAN/TRIM/SUBSTITUTE یا Power Query استفاده میشود.
سازگاری با نسخههای مختلف اکسل
- تابع CLEAN در نسخههای قدیمی و جدید اکسل (از Excel 2007، 2010، 2013، 2016، 2019، 2021 و Microsoft 365) پشتیبانی میشود.
- در Excel برای وب (Excel Online) هم معمولاً قابل استفاده است.
- اگر جداکننده آرگومان در سیستم شما ویرگول است، در نسخه انگلیسی اکسل معمولاً از , استفاده میشود؛ اما در محیطهای فارسی رایجتر است که ; باشد. در این مقاله فرمولها با جداکننده فارسی (;) نوشته شدهاند.
سؤالات پرتکرار درباره تابع CLEAN
آیا CLEAN فاصلههای اضافی را حذف میکند؟
خیر. برای فاصلههای اضافی از TRIM استفاده کنید.
چرا بعد از CLEAN هنوز بعضی فاصلهها باقی میمانند؟
احتمالاً فاصله از نوع NBSP (کد 160) یا کاراکتر خاص دیگری است. از SUBSTITUTE بههمراه CHAR(160) کمک بگیرید.
CLEAN روی اعداد هم کار میکند؟
اگر به CLEAN عدد بدهید، آن را به متن تبدیل میکند و سپس پاکسازی انجام میشود. برای برگشت به عدد از VALUE استفاده کنید.
بهترین روش برای تمیز کردن دادههای وارداتی چیست؟
در بسیاری از سناریوها این ترکیب بهترین نتیجه را میدهد: CLEAN + جایگزینی CHAR(160) + TRIM.
جمعبندی و پیشنهاد یادگیری بعدی
تابع CLEAN یکی از ابزارهای کلیدی برای تمیزکاری دادههای متنی در اکسل است و به شما کمک میکند کاراکترهای کنترلی پنهان را حذف کنید تا جستجو، تطبیق و گزارشگیری دقیقتر شود. برای نتیجه حرفهایتر معمولاً CLEAN را با TRIM و در صورت نیاز SUBSTITUTE ترکیب میکنند.
پیشنهاد یادگیری بعدی: برای تکمیل مهارت پاکسازی دادهها، توابع TRIM و SUBSTITUTE را عمیقتر یاد بگیرید و اگر با حجم داده بالا کار میکنید، سراغ Power Query (Get & Transform) بروید تا پاکسازیها را قابل تکرار و اتوماتیک انجام دهید.
