我想通过 Excel 宏或查找和替换对话框将整个 Excel 工作簿中的 INT 更改为 INTERNATIONAL,将 NA 更改为 NATIONAL ASSEMBLY。但是当我运行宏或通过查找和替换对话框进行更改时,它还会将 NA 从 CHINA 替换为最后 2 个字符,并将其变为 CHINATIONAL ASSEMBLY,将 INTERIOR 更改为 INTERNATIONALERIOR。
现在,我希望 Excel 能够智能地在工作簿中查找不包含任何其他字符的字符 NA,以及不附加到任何其他字符的字符 INT。
答案1
如果你选择 VBA 路线,请尝试使用Regular Expressions
这是一个开始
Sub ReplaceWithRE()
Dim re As Object 'RegExp
Dim rng As Range, cl As Range
Dim sh As Worksheet
Dim wb As Workbook
Dim sReplace As String
Dim aReplace(0 To 1, 0 To 1) As String
Dim i As Long
Set wb = ActiveWorkbook
Set re = CreateObject("vbscript.regexp") ' New RegExp
re.Global = True
re.IgnoreCase = False
re.MultiLine = True
' Load array of patterns and replacements
aReplace(0, 0) = "\bINT\b"
aReplace(0, 1) = "INTERNATIONAL"
aReplace(1, 0) = "\bNA\b"
aReplace(1, 1) = "NATIONAL ASSEMBLY"
For Each sh In wb.Worksheets
On Error Resume Next
Set rng = sh.UsedRange.SpecialCells(xlCellTypeConstants)
If Err.Number <> 0 Then
Err.Clear
Else
On Error GoTo 0
For Each cl In rng
sReplace = cl.Value
' Test each cell for each pattern, replace when found
For i = 0 To UBound(aReplace, 1)
re.Pattern = aReplace(i, 0)
If re.Test(sReplace) Then
sReplace = re.Replace(sReplace, aReplace(i, 1))
End If
Next
cl.Value = sReplace
Next
End If
Next
End Sub
答案2
如果您要替换的值本身就在单元格中(没有其他文本),请务必遵循CharlieRB 的解决方案。如果值位于单元格中,并附加有文本,则稍微修改后的版本就可以起作用。
打开“查找和替换”窗口。单击“替换”选项卡。
输入“查找内容”和“替换为”值。单击“查找全部”按钮。
查看底部的列表,其中详细列出了找到的记录。突出显示要更新的记录,然后单击“替换”按钮。
答案3
在Find and Replace
窗口中,您需要选中该框Match entire cell contents
然后运行它。
答案4
- 将文件保存为 CSV 文件。如果您想要操作工作表的子集(例如选定的列和/或行),请将该区域复制到临时文件(或工作表)中,并将其保存为 CSV。如果您需要修改多个工作表,请对每个工作表重复此过程。
- 使用某种智能文本编辑器(即比记事本更智能的编辑器)编辑 CSV 文件。
vi
适合这种情况;使用诸如 之类的命令%s/\<INT\>/INTERNATIONAL/g
。Microsoft Word 可能就足够了;使用“查找和替换”下的“仅查找全词”选项More>>
。 - 将编辑后的 CSV 文件读回到 Excel 中。
- 将修改后的值复制到原始工作簿中,以保留格式。