在Excel中将值的比较范围replace为另一个范围

我在excel中有两列数据,“a列”中的数据需要用另一个单值replace,比如说“列b”中的“Newdata”匹配数据,例如列b中的40010244000521也存在于列a所以我需要用“newData”replace列a中的那些值。

样本数据和输出如下。 我还需要查看B列的所有值,列b包含1000个条目,列a包含5000个以上的条目

原始数据预期输出column a column b column a column b 4000520 4001024 4000520 4001024 4000520 4001204 4000520 4001204 4000520 4002475 4000520 4002475 4000521 4002477 newData 4002477 4000521 4002517 newData 4002517 4000521 4003062 newData 4003062 4000521 4000521 newData 4000521 4000521 newData 4000521 newData 4000521 newData 4000522 4000522 4000522 4000522 4001024 newData 4001024 newData

如果你使用VBA,代码可能是这样的:

 Sub newdata() Dim awb As Workbook Dim ws As Worksheet Dim a_lastrow As Integer 'last row of column A Dim b_lastrow As Integer 'last row of column B Set awb = ThisWorkbook Set ws = awb.Worksheets("Sheet1") 'change "Sheet1" to the name of your sheet With ws a_lastrow = .Range("A100000").End(xlUp).Row b_lastrow = .Range("B100000").End(xlUp).Row For r = 1 To a_lastrow If Application.WorksheetFunction.CountIf(.Range("B1:B" & b_lastrow), .Range("A" & r).Value) > 0 Then .Range("A" & r).Value = "newData" End If Next r End With MsgBox ("done") End Sub 

将此代码发布到单独的模块中。 将“Sheet1”更改为您的工作表的名称。

我会在列C中创build一个帮助器列,并在单元格C2中使用此公式,并将其拖动到下面:

 =IF(ISERROR(VLOOKUP(A2,B:B,1,FALSE)),A2,"NewData") 

如果A列中的值在列B中find,那么它将被replace为“NewData”,否则它将显示为原始值。

然后,您可以复制列C并将值粘贴到原始列A上。