![在 Excel 中查找和替换](https://linux22.com/image/1545902/%E5%9C%A8%20Excel%20%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%92%8C%E6%9B%BF%E6%8D%A2.png)
我在 Sheet 1 中有一张表,其中包含 A 和 B 两列。我创建了一个宏来查找 Sheet 2 中 A1 的值,并用 B1 的值替换 Sheet 2 中的 A1 值
我希望改进宏以覆盖 A 列和 B 列的整个范围。
子查找_替换() ‘ ‘ 工作表(“Sheet1”).选择 范围("A1").选择 选择.复制 工作表(“Sheet1”).选择 范围("B1").选择 应用程序.CutCopyMode = False 选择.复制 工作表(“Sheet2”).选择 选择.替换内容:=“值 1”,替换:=“值 X”,查看:= _ xlPart,SearchOrder:=xlByColumns,MatchCase:=False,SearchFormat:=False,_ ReplaceFormat:=False 子目录结束
** 希望改进 Range("A1").Select 以覆盖范围 A 和 B 中的所有可用单元格
答案1
试试这个代码。示例范围是 Sheet1 中的 A1:A10。在 VBA 代码中使用 Offset 方法自动引用 B1:B10。但是,正如我在上面的评论中提到的,限制适用。工作表是同一工作簿中的 Sheet1 和 Sheet2。
请尝试此代码并恢复。
Sub Macro1()
Set myrange = Sheet1.Range("A1:A10")
For Each cell In myrange
Dim find1
Dim replace1
find1 = cell.Value
replace1 = cell.Offset(RowOffSet:=0, ColumnOffset:=1).Value
Sheet2.Cells.Replace What:=find1, Replacement:=replace1, LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next cell
End Sub