使用VBA查找并替换列

时间:2016-09-30 00:26:01

标签: excel vba find

我想知道是否有办法完成这项任务。我有列A和B.列A1包含文本值"共享服务"。列B1包含文本值"共享"。

我想要做的是删除"共享" “共享服务”的一部分"所以剩下的就是"服务"。我需要在A / B列中为许多不同的值执行此操作。

有没有简单的方法来实现自动化?它基本上只是一个质量查找并替换为空白值,它只需要基于B列中的值。

更新:

感谢您的回复,但这些解决方案假设列并排排列。为了澄清,我需要在B列中查找所有值,并从A列中删除所有值。所以" vat"线将成为""在这个例子中(它从B列中找到" vat"值并从A中删除它)。这必须使用1000个不同的值来完成。

here

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

我可能错了,但听起来你可能想要一个集合。我认为这是一个起点:

Sub RemoveWords(DeleteFromCol As Range, FindCol As Range)

  Dim words As New Collection
  Dim r As Range
  Dim word As Variant

  For Each r In FindCol
    words.Add (r.Value2)
  Next r

  For Each r In DeleteFromCol
    For Each word In words
      r.Value2 = Replace(r.Value2, word, "")
    Next word
  Next r

End Sub

然后你可以在你的例子中用任意范围调用它:

RemoveWords Range("A1:A11"), Range("B1:B8")

我猜这可能不是100%,因为在你的例子中我会在某些情况下清除两个单词,因为它们存在于“一个单词”列表中。你可以随心所欲地处理它。