نحوه حذف کاراکترهای خاص / ناخواسته در اکسل

  • این را به اشتراک بگذارید
Michael Brown

در این مقاله، نحوه حذف کاراکترهای خاص از یک رشته متن و حذف کاراکترهای ناخواسته از چندین سلول به طور همزمان را خواهید آموخت.

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

    حذف کاراکتر ویژه از سلول اکسل

    برای حذف یک کاراکتر خاص از یک سلول، با استفاده از تابع SUBSTITUTE در ساده ترین شکل آن، آن را با یک رشته خالی جایگزین کنید:

    SUBSTITUTE( cell, char، "")

    به عنوان مثال، برای حذف یک علامت سوال از A2، فرمول در B2 این است:

    =SUBSTITUTE(A2, "?", "")

    برای حذف یک علامت سوال نویسه‌ای که در صفحه‌کلید شما وجود ندارد، می‌توانید آن را از سلول اصلی در فرمول کپی یا جای‌گذاری کنید.

    به عنوان مثال، چگونه می‌توانید از شر علامت سؤال معکوس خلاص شوید:

    =SUBSTITUTE(A2, "¿", "")

    اما اگر یک کاراکتر ناخواسته نامرئی باشد یا به درستی کپی نشود، چگونه آن را در فرمول قرار می دهید؟ به سادگی، شماره کد آن را با استفاده از تابع CODE پیدا کنید.

    در مورد ما، کاراکتر ناخواسته ("¿") در آخرین سلول A2 قرار می گیرد، بنابراین ما از یک ترکیب استفاده می کنیم.از توابع CODE و RIGHT برای بازیابی مقدار کد منحصر به فرد آن، که 191 است:

    =CODE(RIGHT(A2))

    پس از دریافت کد کاراکتر، CHAR مربوطه را ارائه کنید. تابع فرمول عمومی بالا برای مجموعه داده ما، فرمول به شرح زیر است:

    =SUBSTITUTE(A2, CHAR(191),"")

    توجه داشته باشید. تابع SUBSTITUTE حساس به حروف بزرگ است، به این معنی که حروف کوچک و بزرگ را به عنوان کاراکترهای مختلف در نظر می گیرد. لطفاً اگر شخصیت ناخواسته شما یک حرف است این را در نظر داشته باشید.

    حذف چند کاراکتر از رشته

    در یکی از مقالات قبلی، نحوه حذف کاراکترهای خاص از رشته ها در اکسل را با قرار دادن چندین تابع SUBSTITUTE در یکدیگر بررسی کردیم. از همین رویکرد می توان برای حذف دو یا چند کاراکتر ناخواسته در یک حرکت استفاده کرد:

    SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( cell , char1 , ""), char2 ، "")، char3 ، "")

    به عنوان مثال، برای از بین بردن علامت تعجب و علامت سوال معمولی و همچنین وارونه از یک رشته متنی در A2، از این فرمول استفاده کنید:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", "")

    همین کار را می توان با کمک تابع CHAR انجام داد، جایی که 161 کد کاراکتر برای "¡" و 191 کد کاراکتر برای "¿" است:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")

    توابع SUBSTITUTE تودرتو برای تعداد معقولی از نویسه ها خوب کار می کنند، اما اگر ده ها کاراکتر برای حذف دارید، فرمول بسیار طولانی و مدیریت آن دشوار می شود. مثال بعدی الف را نشان می دهدراه حل فشرده تر و ظریف تر.

    همه کاراکترهای ناخواسته را به یکباره حذف کنید

    این راه حل فقط در Excel برای Microsoft 365 کار می کند

    همانطور که احتمالاً می دانید، اکسل 365 دارای یک تابع ویژه است که به شما امکان می دهد توابع خود را ایجاد کنید، از جمله آنهایی که به صورت بازگشتی محاسبه می شوند. این تابع جدید LAMBDA نام دارد و می توانید جزئیات کامل آن را در آموزش لینک بالا بیابید. در زیر، مفهوم را با چند مثال عملی نشان خواهم داد.

    یک تابع سفارشی LAMBDA برای حذف کاراکترهای ناخواسته به شرح زیر است:

    =LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string))

    برای اینکه بتوانید از این تابع در کاربرگ های خود استفاده کنید، ابتدا باید آن را نام ببرید. برای این کار، Ctrl + F3 را فشار دهید تا Name Manager باز شود و سپس New Name را به این صورت تعریف کنید:

    1. در Name کادر ، نام تابع را وارد کنید: RemoveChars .
    2. محدوده را روی Workbook تنظیم کنید.
    3. در اشاره به<در کادر 2>، فرمول بالا را جایگذاری کنید.
    4. در صورت تمایل، توضیحات پارامترها را در کادر Comments وارد کنید. هنگامی که فرمولی را در یک سلول تایپ می کنید، پارامترها نمایش داده می شوند.
    5. برای ذخیره عملکرد جدید خود OK را کلیک کنید.

    برای دستورالعمل های دقیق، لطفاً ببینید نحوه نامگذاری یک تابع LAMBDA سفارشی.

    هنگامی که تابع نامی دریافت کرد، می توانید مانند هر فرمول اصلی به آن مراجعه کنید.

    از دیدگاه کاربر ، نحو تابع سفارشی ما به همین سادگی استthis:

    RemoveChars(string, chars)

    Where:

    • String - رشته اصلی است یا اشاره ای به سلول/محدوده حاوی رشته است( s).
    • کاراکترها - کاراکترهایی که باید حذف شوند. می تواند با یک رشته متن یا یک مرجع سلولی نمایش داده شود.

    برای راحتی، ما کاراکترهای ناخواسته را در برخی سلول ها، مثلاً D2، وارد می کنیم. برای حذف آن کاراکترها از A2، فرمول این است:

    =RemoveChars(A2, $D$2)

    برای اینکه فرمول به درستی کار کند، لطفاً به موارد زیر توجه کنید:

    • در D2 ، کاراکترها بدون فاصله فهرست می شوند، مگر اینکه بخواهید فاصله ها را نیز حذف کنید.
    • آدرس سلول حاوی نویسه های ویژه با علامت $ ($D$2) قفل می شود تا از تغییر مرجع در هنگام مقابله با مشکل جلوگیری شود. فرمول به سلول های زیر.

    و سپس، ما به سادگی فرمول را به پایین می کشیم و همه کاراکترهای فهرست شده در D2 از سلول های A2 تا A6 حذف می شوند:

    برای تمیز کردن چندین سلول با یک فرمول واحد، محدوده A2:A6 را برای آرگومان اول ارائه دهید:

    =RemoveChars(A2:A6, D2)

    از آنجایی که فرمول فقط در بالاترین سلول وارد می شود، در مورد قفل کردن مختصات سلول نگران نباشید - یک مرجع نسبی (D2) در این مورد به خوبی کار می کند. و به دلیل پشتیبانی از آرایه های پویا، فرمول به طور خودکار در تمام سلول های ارجاع شده ریخته می شود:

    حذف یک مجموعه کاراکتر از پیش تعریف شده

    برای حذف یک مجموعه از پیش تعریف شده از کاراکترهایی از چندین سلول، می توانید ایجاد کنیدLAMBDA دیگری که تابع اصلی RemoveChars را فراخوانی می کند و کاراکترهای نامطلوب را در پارامتر دوم مشخص می کند. به عنوان مثال:

    برای حذف کاراکترهای خاص ، ما یک تابع سفارشی به نام RemoveSpecialChars :

    =LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))

    برای حذف اعداد از رشته های متنی، ما یک تابع دیگر به نام RemoveNumbers ایجاد کرده ایم:

    =LAMBDA(string, RemoveChars(string, "0123456789"))

    هر دو تابع فوق بسیار آسان هستند برای استفاده از آنها فقط به یک آرگومان نیاز دارند - رشته اصلی.

    برای حذف کاراکترهای خاص از A2، فرمول این است:

    =RemoveSpecialChars(A2)

    برای حذف فقط کاراکترهای عددی:

    =RemoveNumbers(A2)

    این تابع چگونه کار می کند:

    در اصل، تابع RemoveChars در لیست chars حلقه می‌زند و هر بار یک کاراکتر را حذف می‌کند. قبل از هر تماس بازگشتی، تابع IF کاراکترهای باقی مانده را بررسی می کند. اگر رشته chars خالی نباشد (chars"")، تابع خود را فراخوانی می کند. به محض اینکه آخرین کاراکتر پردازش شد، فرمول string شکل فعلی خود را برمی گرداند و خارج می شود.

    برای تفکیک فرمول دقیق، لطفاً برای حذف کاراکترهای ناخواسته به LAMBDA بازگشتی مراجعه کنید.

    حذف کاراکترهای خاص با VBA

    توابع در تمام نسخه های اکسل کار می کنند

    اگر تابع LAMBDA در اکسل شما موجود نباشد، هیچ چیز مانع شما نمی شود. از ایجاد یک تابع مشابه با VBA. تعریف شده توسط کاربرتابع (UDF) را می توان به دو روش نوشت.

    عملکرد سفارشی برای حذف کاراکترهای خاص بازگردان :

    این کد منطق تابع LAMBDA را که در بالا توضیح داده شد شبیه سازی می کند.

    تابع RemoveUnwantedChars(str به عنوان رشته، کاراکترها به عنوان رشته) اگر ("" کاراکترها) سپس str = جایگزین (str, Left(chars, 1), "" ) chars = Right(chars, Len(chars) - 1) RemoveUnwantedchars = RemoveUnwantedChars(str، chars) در غیر این صورت RemoveUnwantedChars = str پایان اگر عملکرد پایان

    عملکرد سفارشی برای حذف کاراکترهای خاص غیر بازگشتی :

    در اینجا، ما بین کاراکترهای ناخواسته از 1 تا لن (کاراکترها) و آنهایی که در رشته اصلی یافت می شوند را با هیچ چیز جایگزین کنید. تابع MID ​​کاراکترهای ناخواسته را یکی یکی می کشد و به تابع Replace می دهد.

    تابع RemoveUnwantedChars(str به عنوان رشته، کاراکترها به عنوان رشته) برای index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveUnwantedChars = str عملکرد پایان

    یکی از کدهای بالا را همانطور که در نحوه درج کد VBA در اکسل توضیح داده شده است در کتاب کار خود وارد کنید و تابع سفارشی شما آماده استفاده است.

    برای اینکه تابع تعریف شده توسط کاربر جدید خود را با تابع تعریف شده توسط لامبدا اشتباه نگیریم، نام متفاوتی برای آن گذاشته‌ایم:

    RemoveUnwantedChars(رشته، کاراکترها)

    با فرض اینکه رشته اصلی در A2 باشد و کاراکترهای نامطلوب در D2، ما می توانیم با استفاده از این فرمول از شر آنها خلاص شویم:

    = RemoveUnwantedChars(A2, $D$2)

    عملکرد سفارشی با کد سختکاراکترها

    اگر نمی‌خواهید در مورد تهیه کاراکترهای ویژه برای هر فرمول زحمت بکشید، می‌توانید آنها را مستقیماً در کد مشخص کنید:

    Function RemoveSpecialChars(str As String) As String Dim chars As String Dim index As نویسه های بلند = "?¿!¡*%#$(){}[]^&/\~+-" برای نمایه = 1 به Len(chars) str = Replace(str, Mid(charts, index, 1) , "" ) Next RemoveSpecialChars = str عملکرد پایان

    لطفاً به خاطر داشته باشید که کد بالا برای اهداف نمایشی است. برای استفاده عملی، مطمئن شوید که تمام کاراکترهایی را که می خواهید حذف کنید در خط زیر قرار دهید:

    chars = "?¿!¡*%#$(){}[]^&/\~+-"

    این تابع سفارشی RemoveSpecialChars نام دارد و فقط به یک مورد نیاز دارد. آرگومان - رشته اصلی:

    RemoveSpecialChars(string)

    برای حذف کاراکترهای خاص از مجموعه داده ما، فرمول این است:

    =RemoveSpecialChars(A2)

    حذف کاراکترهای غیر قابل چاپ در Excel

    Microsoft Excel یک عملکرد ویژه برای حذف کاراکترهای غیرچاپی دارد - تابع CLEAN. از نظر فنی، 32 کاراکتر اول در مجموعه 7 بیتی ASCII (کدهای 0 تا 31) را حذف می کند.

    به عنوان مثال، برای حذف کاراکترهای غیرقابل چاپ از A2، فرمول مورد استفاده در اینجا آمده است. :

    =CLEAN(A2)

    این کار نویسه‌های غیرچاپ را حذف می‌کند، اما فاصله‌های قبل/پس از متن و بین کلمات باقی می‌ماند.

    به از شر فضاهای اضافی خلاص شوید، فرمول CLEAN را در تابع TRIM بپیچید:

    =TRIM(CLEAN(A2))

    اکنون، همه پیشرو وفاصله‌های انتهایی حذف می‌شوند، در حالی که فاصله‌های میانی به یک کاراکتر فاصله کاهش می‌یابد:

    اگر می‌خواهید کاملاً همه فاصله‌ها داخل را حذف کنید. یک رشته، سپس کاراکتر فاصله (کد شماره 32) را با یک رشته خالی جایگزین کنید:

    =TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))

    بعضی از فاصله ها یا سایر کاراکترهای نامرئی هنوز در برگه شما؟ این بدان معناست که آن کاراکترها مقادیر متفاوتی در مجموعه کاراکترهای یونیکد دارند.

    به عنوان مثال، کد کاراکتر فاصله بدون شکست ( ) 160 است و می توانید با استفاده از این فرمول آن را پاک کنید:

    =SUBSTITUTE(A2, CHAR(160)," ")

    برای پاک کردن کاراکتر غیرچاپی خاص ، ابتدا باید مقدار کد آن را پیدا کنید. دستورالعمل‌های دقیق و نمونه‌های فرمول اینجا هستند: نحوه حذف یک نویسه خاص غیرچاپی.

    حذف نویسه‌های خاص با Ultimate Suite

    پشتیبانی از Excel برای Microsoft 365، Excel 2019 - 2010

    در این مثال آخر، اجازه دهید ساده ترین راه را برای حذف کاراکترهای خاص در اکسل به شما نشان دهم. با نصب Ultimate Suite، این کاری است که باید انجام دهید:

    1. در برگه Ablebits Data ، در گروه Text ، روی کلیک کنید. Remove > Remove Characters .

  • در صفحه افزونه، محدوده منبع را انتخاب کنید، Remove را انتخاب کنید مجموعه کاراکترها و گزینه مورد نظر را از لیست کشویی انتخاب کنید ( نمادها و علائم نگارشی در اینبه عنوان مثال).
  • دکمه حذف را فشار دهید.
  • در یک لحظه، یک نتیجه عالی خواهید داشت:

    اگر مشکلی پیش آمد، نگران نباشید - یک نسخه پشتیبان از کاربرگ شما به طور خودکار ایجاد می شود زیرا کادر پشتیبان گیری از این کاربرگ به طور پیش فرض انتخاب شده است.

    کنجکاوید که ابزار حذف ما را امتحان کنید؟ لینک نسخه ارزیابی درست در زیر آمده است. از خواندن شما سپاسگزارم و امیدوارم هفته آینده شما را در وبلاگ خود ببینیم!

    دانلودهای موجود

    حذف کاراکترهای ویژه - نمونه ها (فایل xlsm.)

    Ultimate Suite - آزمایشی نسخه (فایل exe)

    مایکل براون یک علاقه‌مند به فناوری است که علاقه زیادی به ساده‌سازی فرآیندهای پیچیده با استفاده از ابزارهای نرم‌افزاری دارد. او با بیش از یک دهه تجربه در صنعت فناوری، مهارت های خود را در Microsoft Excel و Outlook و همچنین Google Sheets و Docs تقویت کرده است. وبلاگ مایکل اختصاص داده شده است تا دانش و تخصص خود را با دیگران به اشتراک بگذارد و نکات و آموزش هایی را برای بهبود بهره وری و کارایی ارائه دهد. چه یک حرفه ای با تجربه باشید و چه مبتدی، وبلاگ مایکل، بینش های ارزشمند و توصیه های عملی را برای استفاده حداکثری از این ابزارهای نرم افزاری ضروری ارائه می دهد.