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

برایان یک کاربرگ دارد که سلول‌های زیادی دارد که حروف الفبایی در آنها وجود دارد. او به دنبال راهی برای خلاص شدن از شر آن شخصیت های الفبایی است، مهم نیست در کجای سلول ظاهر می شوند. به عنوان مثال، اگر سلول حاوی "ABC123" باشد، برایان می خواهد از شر "ABC" خلاص شود و فقط "123" باقی بماند. به طور مشابه، "A3B2C1" باید "321" و "#45P*%" باید به "#45*%" تبدیل شود.

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

Sub CleanText1()
    Dim rngCell As Range
    Dim intChar As Integer
    Dim strCheckString As String
    Dim strCheckChar As String
    Dim intCheckChar As Integer
    Dim strClean As String

    For Each rngCell In Selection
        strCheckString = rngCell.Value
        strClean = ""

        For intChar = 1 To Len(strCheckString)
            strCheckChar = Mid(strCheckString, intChar, 1)
            intCheckChar = Asc(strCheckChar)
            Select Case intCheckChar
                Case 65 To 90      upper case chars
                    Do nothing
                Case 97 To 122     lower case chars
                    Do nothing
                Case 128 To 151    special language chars
                    Do nothing
                Case 153 To 154    special language chars
                    Do nothing
                Case 159 To 165    special language chars
                    Do nothing
                Case Else
                    strClean = strClean & strCheckChar
            End Select
        Next intChar
        rngCell.Value = strClean
    Next rngCell
End Sub

نکته خوب در مورد این رویکرد برای حذف کاراکترها این است که می توانید به سادگی با تغییر آنچه که علامت زده شده (و اقدامات انجام شده) در ساختار Select Case به راحتی از شر شخصیت های دیگر خلاص شوید.

اگر نمی‌خواهید سلول‌های اصلی را تغییر دهید، یک روش خوب این است که یک تابع تعریف‌شده توسط کاربر را کنار هم قرار دهید که یک نسخه «تمیز» از یک رشته را برمی‌گرداند. این را می توان با ایجاد چند تغییر در ماکرو قبلی به دست آورد.

Function CleanText2(ByVal sRaw As String) As String
    Dim intChar As Integer
    Dim strCheckString As String
    Dim strCheckChar As String
    Dim intCheckChar As Integer
    Dim strClean As String

    Application.Volatile
    strClean = ""
    For intChar = 1 To Len(sRaw)
        strCheckChar = Mid(sRaw, intChar, 1)
        intCheckChar = Asc(strCheckChar)
        Select Case intCheckChar
            Case 65 To 90      upper case chars
                Do nothing
            Case 97 To 122     lower case chars
                Do nothing
            Case 128 To 151    special language chars
                Do nothing
            Case 153 To 154    special language chars
                Do nothing
            Case 159 To 165    special language chars
                Do nothing
            Case Else
                strClean = strClean & strCheckChar
        End Select
    Next intChar
    CleanText2 = strClean
End Function

برای استفاده از تابع، می توانید فرمولی مانند زیر را در یک سلول قرار دهید:

=CleanText2(A1)

نتیجه این است که فرمول یک نسخه "تمیز" از هر آنچه در سلول A1 است را بدون ایجاد اختلال در محتوای سلول A1 برمی گرداند.

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

Function CleanText3(ByVal sRaw As String) As String
    Dim J As Integer
    Dim sTemp As String
    Dim sClean As String

    Const OK = "0123456789#$%&+-*/"

    Application.Volatile
    sClean = ""
    For J = 1 To Len(sRaw)
        sTemp = Mid(sRaw, J, 1)
        If InStr(OK, sTemp) Then sClean = sClean & sTemp
    Next J
    CleanText3 = sClean
End Function

ترفند در این رویکرد این است که مطمئن شوید به کاراکترهایی که می خواهید در رشته پردازش شده اجازه دهید فکر کنید. همه این کاراکترها باید در ثابت OK گنجانده شوند.

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

پاسخ شما

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

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

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

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 57 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 33 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 28 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 36 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 129 visibility

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

219 نفر آنلاین
1 عضو و 218 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 16126
بازدید دیروز: 17853
بازدید کل: 20328309
...