【发布时间】:2016-11-30 05:34:27
【问题描述】:
我有 2 张 excel 表,我想在其中查找和替换值,但是我希望多个替换值代替一个匹配值。
Sheet 1: Sheet 2:
Match Value Match Value New Value
28045000 28045000 28051560
39162010 28045000 28056549
39269000 39162010 39596000
工作表 1 中的所有匹配值都是唯一的,而工作表 2 中的匹配值可能有重复,因为它们对应于多个新值。因此,如果工作表 1 和工作表 2 中的匹配值相同,那么我想将工作表 1 中的匹配值替换为与匹配值对应的所有新值。替换后的表 1 应如下所示:
Sheet 1:
Match Value
28051560
28056549
39596000
39269000
我们可以看到,28045000 在 2 个单独的单元格中被 2 个值替换,即 28051560 和 28056549,而 39162010 被 39596000 替换,而在工作表 2 中没有匹配值的 39269000 保持不变。
我通常会手动执行此操作,但大约有 30,000 行数据,其中一些具有超过 10 个与单个匹配值匹配的值。我有以下代码,但是,这并没有正确地用所有新值替换匹配值。有没有办法让 Excel 搜索两个工作表的整个范围并自动进行适当的更改?
Sub multiFindNReplace()
Dim myList, myRange
Set myList = Sheets("sheet 1").Range("A1:A5000")
Set myRange = Sheets("sheet2").Range("A1:A5000")
For Each cel In myList.Columns(1).Cells
myRange.Replace what:=cel.Value, replacement:=cel.Offset(0, 1).Value
Next cel
End Sub
【问题讨论】:
-
@pnuts 不一定,您可以建议其他方式吗?
-
@pnuts 你能详细说明一下匹配部分吗?
标签: excel conditional vba