Carole اطلاعات را از یک برنامه دیگر به اکسل وارد می کند و این اغلب فضاهای اضافی را در برخی از سلول ها باقی می گذارد. فضاها تنها چیزهای موجود در سلول ها هستند، بنابراین خالی به نظر می رسند اما واقعاً خالی هستند. کارول در مورد بهترین راه برای خلاص شدن از شر این فضاهای غیر ضروری فکر کرد.
چند روش وجود دارد که می توانید از آنها استفاده کنید. اولین مورد استفاده از قابلیت Find and Replace اکسل است. این مراحل را دنبال کنید:
- Ctrl+H را فشار دهید تا تب Replace در کادر محاوره ای Find and Replace نمایش داده شود.
- در کادر Find What دو فاصله وارد کنید.
- مطمئن شوید که کادر Replace With خالی است.
- کادر بررسی Match Entire Cell Contents را انتخاب کنید.
- روی Replace All کلیک کنید.
- به کلیک روی Replace All ادامه دهید تا اکسل هیچ منطبقی را پیدا نکند.
- مراحل 2 تا 5 را تکرار کنید، اما این بار فقط از یک فاصله در مرحله 2 استفاده کنید.
- کادر گفتگوی Find and Replace را ببندید.
گزینه دیگر استفاده از تابع برگه Trim است. اگر سلول هایی که می خواهید تغییر دهید همگی در یک ناحیه خاص از کاربرگ مانند یک ستون باشند، این رویکرد مفید است. به عنوان مثال، اگر می خواهید از شر سلول های ستون D خلاص شوید، می توانید از فرمول زیر استفاده کنید:
=Trim(D1)
تابع Trim محتویات سلول D1 را بدون هیچ گونه فاصله اصلی یا انتهایی برمی گرداند. سپس می توانید نتایج این فرمول را کپی کنید و از Paste Special برای چسباندن مقادیر به سلول های مورد نظر خود استفاده کنید.
البته، اگر کاربرگ های زیادی دارید که باید پردازش کنید، یا اگر به طور معمول کتاب هایی دریافت می کنید که حاوی فضاهای اضافی در سلول ها هستند، راه بهتر ایجاد یک ماکرو است که می تواند از شر فضاها خلاص شود. شاید سریع ترین راه این باشد که تمام سلول های صفحه کار را بررسی کنید و از شر هر فضای اضافی خلاص شوید:
Sub CleanSheet1()
For Each cell In ActiveSheet.UsedRange
cell.Value = Trim(cell)
Next cell
End Sub
ماکرو از هر سلول عبور می کند و از تابع Trim برای خلاص شدن از شر هر فضای پیشرو یا انتهایی استفاده می کند. این روی همه سلول ها کار می کند، اما بسته به ویژگی های داده های شما، ممکن است نتایج نامطلوبی ایجاد کند. اگر سلول هایی دارید که دارای فضاهای اصلی هستند - و آن فضاها را می خواهید - باید از یک ماکرو متفاوت استفاده کنید. این نسخه نتایج رضایت بخش تری خواهد داشت:
Sub CleanSheet2()
Dim rCell As Range
Dim rText As Range
Set rText = Cells.SpecialCells( _
xlCellTypeConstants, _
xlTextValues)
For Each rCell In rText
If Trim(rCell.Value) = "" Then
rCell.ClearContents
End If
Next
Set rText = Nothing
Set rCell = Nothing
End Sub
فقط سلول های حاوی ثابت را بررسی می کند (که شامل تمام متن در کاربرگ می شود) و سپس بررسی می کند که آیا استفاده از تابع Trim منجر به یک سلول خالی می شود یا خیر. اگر چنین است، سلول پاک می شود. اگر تابع Trim منجر به یک سلول خالی نشود، هیچ تغییری در سلول ایجاد نمی شود.
هنگام استفاده از رویکرد مبتنی بر کلان، نکته مهمی وجود دارد که باید در نظر داشت. تابع VBA Trim نتایج متفاوتی نسبت به تابع برگه برش ایجاد می کند. در حالی که تابع Trim کاربرگ همه فضاهای دوتایی را در سراسر محتویات سلول (از جمله بین کلمات) حذف می کند، تابع VBA Trim این کار را نمی کند - فقط فاصله های ابتدا و انتهای یک رشته را حذف می کند.