如何在Excel中使用宏将一个单元格中的多个值替换为一列中的值?

t0ybt7op  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(178)

我对VBA一无所知,正在尝试创建一个宏,用AF列中的值替换单元格C17中的“/1”、“/2”等。

到目前为止,我有这个,但它只取代了第一个值(即“/1”),并停止在那里。考虑到我对VBA几乎一无所知,我很惊讶,这甚至做任何事情。任何帮助将不胜感激。谢谢!!

Sub questiontext()

Dim InputRng As Range, ReplaceRng As Range
    Set InputRng = Range("AJ3:AJ52")
    Set ReplaceRng = Range("AF3:AF52")

Range("C17").Replace What:=InputRng, Replacement:=ReplaceRng, SearchOrder:=xlByRows, LookAt:=xlPart

End Sub
6vl6ewon

6vl6ewon1#

因此,您需要向下循环一列并执行该行代码;可以使用循环在公式中进行替换:

Dim i As Long:  For i = 3 to 52
    Range("C17").Formula = Replace( Range("C17").Formula, Range("AJ" & i).Value, Range("AF" & i).Value)
Next i

根据您的意图,您可能希望保存C17的基本公式,以便以后引用和替换,否则您将不断修改同一公式并可能删除项,例如,/1和/17都有“/1”,可能会产生意想不到的结果;反向循环将有益于这种情况,例如:

Dim i As Long:  For i = 52 to 3 Step -1
    Range("C17").Formula = Replace( Range("C17").Formula, Range("AJ" & i).Value, Range("AF" & i).Value)
Next i

相关问题