【问题标题】:Excel VBA Find/Replace MacroExcel VBA 查找/替换宏
【发布时间】:2018-04-11 08:52:16
【问题描述】:

早安,

我正在处理一个相当大的数据集,并且我正在尝试将已在一个电子表格中修改的值查找/替换回原始值。我想做的是让宏在单元格 A1 中查找信息并将其替换为单元格 B1 中的值,然后继续向下直到单元格 A3600:B3600。一般来说,我很擅长对我在这里找到的代码进行微调,让它做我想做的事,但我不知道我应该寻找什么。

我现在拥有的是:

Sub Macro1()
'
' Macro1 Macro
'

'
Range("A1").Select

Selection.Copy
Cells.Replace What:=ActiveCell.Value, Replacement:="????", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
End Sub

从这里我不知所措。我知道 Range("A1").Select 将粘贴到“查找/替换”框的“查找”部分,但我如何告诉 excel 我想选择另一个单元格,在本例中为 B1,用于更换部分?然后我如何告诉 Excel 我希望它继续这样做,直到它用完 A 列中的值?

提前感谢您提供的任何帮助。

【问题讨论】:

  • “我理解 Range("A1").Select 将粘贴到查找/替换框的查找部分” - 不会。除了选择一个单元格之外,它什么也不做。
  • 只是A#中的值需要B#的值还是B#也需要替换为A#?
  • 嘿 T. 内塞特。 B#中的值,3600个唯一值,需要替换A#中的值。看看我下面的评论,希望这会有所帮助。

标签: excel replace vba


【解决方案1】:

我认为你在寻找类似下面的代码:

Option Explicit

Sub Macro1()

Dim Rng As Range
Dim OrigStr As String, ReplaceStr As String

Set Rng = Range("A1:B3600")
OrigStr = Range("A1").Value2
ReplaceStr = Range("B1").Value2

' option 1: replace only if the whole cell's string equals to OrigStr
Rng.Replace What:=OrigStr, Replacement:=ReplaceStr, LookAt:=xlWhole

' option 2: replace also partial match inside the cell's string
Rng.Replace What:=OrigStr, Replacement:=ReplaceStr, LookAt:=xlPart

End Sub

【讨论】:

  • Shai,不太好用。例如,在单元格 A1 和 A3 中,我有“123”,在单元格 A2 和 A4 中,我有“321”。在单元格 B1 中我有“90123”,在单元格 B2 中我有“90321”。当我使用选项 2 运行代码时,单元格 A1 和 A3 更改为我拥有的 I B1,“90123”,但单元格 A2 或 A4 没有变化。我需要在 B2 列中使用包含 3600 个数字的电子表格来查找/替换另一张超过 30000 行的工作表中的数据。我试图避免手动查找/替换 3600 次。
猜你喜欢
  • 1970-01-01
  • 2013-07-15
  • 2017-02-01
  • 2020-06-11
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 2019-08-27
  • 1970-01-01
相关资源
最近更新 更多