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

گری می خواهد برای یک کلمه اختصاری مانند "sys" یک Find و جایگزین کند و آن را با "systems" جایگزین کند. مشکل این است که اگر او همه رخدادها را جایگزین کند، نمونه های موجود «سیستم» را به «سیستم» تبدیل می کند. گری می توانست هر رویداد را بررسی کند و به صورت جداگانه جایگزین کند، اما این برای همیشه طول می کشد. او نمی پرسد آیا راهی وجود دارد که اکسل تنها موارد «کل کلمه» «sys» را با «systems» جایگزین کند، همانطور که در Word وجود دارد.

کسانی که با قابلیت های Excels Find and Replace آشنا هستند ممکن است در ابتدا فکر کنند که می توانید از تنظیمات "Match Entire Cell Contents" برای انجام کار استفاده کنید. با این حال، این تنها در صورتی کار می کند که مخفف "sys" تنها چیزی در یک سلول باشد. در موقعیت گاریس، اینطور نیست. او عبارات و جملات کاملی دارد که حاوی "sys" هستند (مانند "sys admin" یا "یک بررسی sys مورد نیاز است"). بنابراین، درخواست او برای چیزی شبیه به Words "کل کلمه" تنظیم.

با در نظر گرفتن این موضوع، چند چیز وجود دارد که می توانید امتحان کنید. بهترین راه حل برای شما به ماهیت متن در کاربرگ شما بستگی دارد. به عنوان مثال، اگر تنها نقطه سردرگمی احتمالی کلمه "سیستم" باشد، ساده ترین کار جایگزین کردن "سیستم" با چیزی منحصر به فرد، مانند "{[]} خواهد بود. (من معمولاً براکت ها و براکت ها را دوست دارم زیرا در بیشتر داده ها منحصربه فرد هستند.) سپس «sys» را با «systems» جایگزین کنید و در نهایت «{[]}» را با «system» جایگزین کنید.

اگر به غیر از "سیستم" نقاط سردرگمی دیگری وجود دارد، می توانید به افزودن فاصله در متن Find What خود متوسل شوید. به عبارت دیگر، "sys" (با فاصله ها) را جستجو کنید و آن را با "system" (دوباره با فاصله ها) جایگزین کنید. تا زمانی که sys با علامت نگارشی همراه نباشد، در ابتدای یک سلول رخ ندهد، و در انتهای یک سلول رخ ندهد، همه رخدادها را به درستی پیدا می کند.

البته، می توانید جستجوهای بیشتری برای دریافت برخی از این اطلاعات انجام دهید. به عنوان مثال، شما می توانید برای یافتن رخدادها در ابتدای یک سلول، "sys" (فقط فاصله در انتها) را جستجو کنید. جستجو برای "sys" (فقط در ابتدا فاصله) برای شما مفید نیست زیرا با هر رخداد "سیستم" که قبل از آن یک فاصله وجود دارد مطابقت دارد. در جستجوهای متوالی می توانید «sys» و سپس نقطه، کاما، علامت سؤال، علامت تعجب، نیم کولون و غیره را جستجو کنید.

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

Sub ReplaceOnlySpecifirdWord()
    Dim c As Range, rng As Range, rngArea As Range
    Dim vFind As String, vReplace As String
    Dim v As Variant
    Dim arrSplit As Variant
    Dim s As String
    Dim i As Integer, n As Long
    Dim b As Boolean
    Const csDELIMITER = " "

    On Error Resume Next
     Reference Constants only
    Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
    If rng Is Nothing Then
        MsgBox "There are no constants on active sheet...", vbExclamation
        Exit Sub
    End If
    On Error GoTo 0

     Get Find and Replace strings
    v = InputBox(Prompt:="Please enter String to be replaced.")
    If v <> "" Then
        vFind = v
    Else
        MsgBox "Wrong entry; app is going to be terminated.", vbExclamation
        Exit Sub
    End If

    v = InputBox(Prompt:="Please enter Replace String.")
    If v <> "" Then
        vReplace = v
    Else
        MsgBox "Wrong entry; app is going to be terminated.", vbExclamation
        Exit Sub
    End If

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    n = 0
    For Each rngArea In rng.Areas
        For Each c In rngArea.Cells
            b = False
            arrSplit = Split(c.Value, csDELIMITER)
            For i = LBound(arrSplit) To UBound(arrSplit)
                If arrSplit(i) = vFind Then
                    arrSplit(i) = vReplace
                    n = n + 1
                    b = True
                End If
            Next i
            If b Then
                s = vbNullString
                For i = LBound(arrSplit) To UBound(arrSplit)
                    s = s & arrSplit(i)
                    If i <> UBound(arrSplit) Then
                        s = s & csDELIMITER
                    End If
                Next i
                c.Value = s
            End If
        Next c
    Next rngArea

    Application.Calculation = xlCalculationAutomatic
    MsgBox "Replaced " & n & " words...", vbInformation
End Sub

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

این رویکرد یک اشکال دارد: تطبیق بسیار تحت اللفظی است. این به این معنی است که "sys" با "sys" مطابقت دارد، اما با "Sys"، "SYS" یا "sys" و پس از آن یک علامت نگارشی مطابقت ندارد. (ماکرو از فاصله ها به عنوان جداکننده بین کلمات استفاده می کند.)

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

پاسخ شما

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

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

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

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

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

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

107 نفر آنلاین
1 عضو و 106 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 10720
بازدید دیروز: 11078
بازدید کل: 15077756
...