0

現在、シート2の列Aの値を調べるこのVBAコードを使用しており、見つかった場合はシート1の列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 には次のものがあります。

a

b

d

c

VBA を実行すると、結果として、これらの値が Sheet2 にあるため、a、b、c、d なしで、白、黒、オレンジ、白になります。

しかし、これらが 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 に答える