گری می خواهد برای یک کلمه اختصاری مانند "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" و پس از آن یک علامت نگارشی مطابقت ندارد. (ماکرو از فاصله ها به عنوان جداکننده بین کلمات استفاده می کند.)