0

我目前正在使用这个 VBA 代码,它查看 Sheet2 中 A 列中的值,如果发现它会删除 Sheet1 中 A 列中的这个值。

Sub ifFoundReplace()
Dim i As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws2 = Sheets("Sheet2")
Set ws1 = Sheets("Sheet1")
    For i = 2 To ws2.Range("A" & Rows.Count).End(3).row
        ws1.Columns(1).Replace ws2.Cells(i, "A") & " ", "", xlPart
        ws1.Columns(1).Replace " " & ws2.Cells(i, "A"), "", xlPart
    Next i
End Sub

因此,在 AI 列中的 Sheet1 上有:

一个白色的

b 黑色

d 白色

c橙色

在 AI 列中的 Sheet2 上有:

一个

b

d

C

当我运行 VBA 时,结果我有白色、黑色、橙色、白色,没有 a、b、c、d,因为这些值在 Sheet2 中。

但是,如果我在 A 列的 Sheet1 中有这些:

白a

黑色 b

白色 d

橙色 c

代码无法正常工作。

干杯

4

1 回答 1

0

您可以使用正则表达式,它能够识别是否找到了带有空格、行首或行尾围绕它的字符串。像这样的东西。

Dim regex As Object, str As String
Set regex = CreateObject("VBScript.RegExp")

With regex
  .Pattern = "(^|[[:blank:]])[" + :: VALUE FROM SHEET 1:: + "]($|[[:blank:]])"
  .Global = True
End With

val = ::value of cell you are evaluating::
newVal = regex.Replace(val , "")

然后只需将 newVal 放入您正在评估的单元格中。我在工作,所以我无法测试这个,但希望这能让你走上正确的道路。

于 2016-04-08T14:33:19.757 回答