如果单元格中的值查找下一列并将其replace为VBA

我正在使用这个函数来replace值:

Public Function replaceWord(t As String) For Each c In Columns(1).SpecialCells(2) t = Replace(t, c.Value, c.Offset(0, 1).Value) Next replaceWord = t End Function 

喜欢这个:

在这里输入图像说明

所以这个函数像这样工作,它检查列C中的值是否也在列A 。 如果find它,将用列B值replace它。

我想调整这个function,所以只有在列A中的确切值被发现然后做replace。 如图所示,列C中的文本成为列E文本,因此ab abaaa ,因为值abaaa不存在于列A

目前这个函数做了这个,这是错误的,因为值abaaa不应该被replace它:

在这里输入图像说明

尝试这个

 Option Explicit Public Function replaceWord(t As String, referenceRng As Range, colOffset as long) Dim found As Range Dim strng As Variant replaceWord = "" For Each strng In Split(t, " ") Set found = referenceRng.Find(what:=strng, lookAt:=xlWhole, LookIn:=xlValues, MatchCase:=False) If found Is Nothing Then replaceWord = replaceWord & strng & " " Else replaceWord = replaceWord & found.Offset(, colOffset ).Value & " " End If Next strng replaceWord = Trim(replaceWord) End Function 

被称为像

 Sub test() With ThisWorkbook.Worksheets("SheetTest") '<== change it as per your needs .Range("E1") = replaceWord(.Range("C1").Value, .Columns(1).SpecialCells(xlCellTypeConstants, xlTextValues), 1) End With End Sub