ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
16 visibility
موضوع: آفیس توسط:

سوداکار داده هایی در ستون A دارد که دارای فضاهای انتهایی است. اگر از تابع TRIM روی داده ها استفاده کند، برخی از فضاهای انتهایی را حذف می کند، اما نه همه آنها. او تعجب می کند که چرا برخی از فضاها نادیده گرفته می شوند و چگونه می تواند همه آنها را حذف کند.

در واقع چند راه مختلف وجود دارد که می توانید با این مشکل برخورد کنید. روش مناسب برای اهداف شما همیشه به ماهیت داده هایی که استفاده می کنید بستگی دارد.

اول از همه، اگر از TRIM در یک سلول استفاده می کنید، به یاد داشته باشید که فقط فضاها را حذف می کند. این، طبق تعریف، به این معنی است که فقط کاراکترهایی را حذف می کند که دارای کد اسکی 32 هستند. اینها توسط TRIM حذف نمی شوند.

اگر بتوانید بفهمید آن شخصیت های مزاحم چه هستند، کمک می کند، درست است؟ خوب، اگر متن داخل سلول آنقدر طولانی نیست، یک ماکرو کوچک مفید در اینجا وجود دارد که به محتویات سلول نگاه می کند و هر کاراکتر را به نوبه خود همراه با مقدار ASCII آن نمایش می دهد:

Sub StringContents()
    Dim sTemp As String
    Dim sMsg As String
    Dim J As Integer
    
    If Selection.Cells.Count > 1 Then
        sMsg = "Please select only one cell"
    Else
        sMsg = "Full string: >" & ActiveCell.Value & "<" & vbCrLf
        For J = 1 To Len(ActiveCell.Value)
            sTemp = Mid(ActiveCell.Value, J, 1)
            sMsg = sMsg & ">" & sTemp & "<     " & Asc(sTemp) & vbCrLf
        Next J
    End If
    MsgBox sMsg
End Sub

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

هنگامی که مقدار ASCII کاراکتر توهین آمیز را که TRIM حذف نمی کند، دانستید، می توانید آن کاراکتر را جایگزین کنید. به عنوان مثال، اگر فضای غیرفضا مقدار ASCII 160 را نشان دهد، می توانید جایگزینی را به این صورت انجام دهید:

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

این کاراکتر فضای واقعی را برای هر نویسه ASCII 160 در رشته جایگزین می کند. به همین ترتیب می توانید سایر فضاهای جعلی مشابه را حذف کنید.

البته، برای خلاص شدن از شر برخی از کاراکترهای ASCII غیر چاپی، می توانید از یک تابع اکسل متفاوت استفاده کنید، مانند این:

=CLEAN(A1)

از شر همه چیز خلاص نمی شود، اما در پاکسازی بسیاری از شخصیت های متخلف کار خوبی انجام می دهد.

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

=TRIM(CLEAN(A1))

می توانید یک قدم جلوتر بروید، به این ترتیب:

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

این فرمول از شر کاراکترهای ASCII 160 و همچنین چیزهایی که توسط CLEAN گرفتار شده است خلاص می شود و سپس یک TRIM بر روی آن نتیجه انجام می دهد.

اگر مجبورید تعداد زیادی سلول را تمیز کنید یا اگر باید سلول ها را به طور منظم تمیز کنید، ممکن است بخواهید از یک ماکرو برای انجام کارهای سنگین استفاده کنید. ماکرو زیر از شر بسیاری از نویسه های غیرچاپ خلاص می شود و فقط کاراکترها و علائم نگارشی قابل مشاهده باقی می ماند.

Sub CleanCells()
    Dim rTarget As Range
    Dim c As Range
    Dim sTemp As String
    Dim J As Integer
    
    Set rTarget = Selection.SpecialCells(xlCellTypeConstants, 2)
    
    For Each c In rTarget
        sTemp = c.Value
        For J = 1 To 31
            sTemp = Replace(sTemp, Chr(J), " ")
        Next J
        For J = 127 To 255
            sTemp = Replace(sTemp, Chr(J), " ")
        Next J
        c.Value = sTemp
    Next c
End Sub

ماکرو فقط روی آن دسته از سلول های موجود در انتخاب فعلی که حاوی مقادیر ثابت هستند کار می کند. به عبارت دیگر، سلول هایی که حاوی فرمول نیستند. و از آنجایی که جایگزین هر چیزی با مقدار ASCII 127 یا بیشتر است، ممکن است با کاراکترهایی جایگزین شوید که واقعاً نمی خواهید جایگزین شوند (مانند کاراکترهای زبان خارجی). اگر چنین شد، باید متن خود را همانطور که قبلاً بحث شد ارزیابی کنید و فقط آن دسته از کاراکترهایی را که ناخواسته هستند تغییر دهید.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوال مشابهی یافت نشد

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

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

86 نفر آنلاین
0 عضو و 86 مهمان در سایت حاضرند
بازدید امروز: 2362
بازدید دیروز: 14408
بازدید کل: 15451283
...