【问题标题】:VBA - Find text and replace with adjacent column and repeat for each cellVBA - 查找文本并用相邻列替换并为每个单元格重复
【发布时间】:2015-02-25 03:22:03
【问题描述】:

还有一个 VBA 循环问题。

无法完全弄清楚如何通过我在这里看到的一些不同的循环问题/答案来获得所需的结果。

我有两列。 A 列包含将用于替换 B 列中 URL 的特定部分的文本(类似于:http://www.exampleurlwithTEXTIWANTTOREPLACE.com)。

我可以管理单个细胞更换:

.Range("B1").Replace "TEXTIWANTTOREPLACE", "TEXT2" + .Range("A1")

但我需要循环它...A1 需要替换 B1 中的文本。 A2 需要替换 B2 中的文字。以此类推,直到循环到达 A 列中的一个空单元格。

非常感谢任何帮助!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    如果您对非循环选项感兴趣,可以使用:

    Sub test()
        Sheet1.Range("B2:B25").Formula = "=SUBSTITUTE(A2,""A"",""B"")"
        Sheet1.Range("B2:B25").Value = Sheet1.Range("B2:B25").Value
    End Sub
    

    将 A2 替换为您要开始替换的单元格,将“A”更改为您要查找的文本,将“B”更改为您要替换的文本。确保在查找和替换文本周围留下双引号。调整范围以适合您的情况。应该比循环选项快很多(取决于范围有多大)。

    【讨论】:

      【解决方案2】:

      定义一个范围来表示您的列,并定义一个范围变量来表示单个单元格,然后遍历此列范围内的单元格,并进行替换:

      Dim colRange as Range
      Dim cl as Range
      Set colRange = Range("B1:B100") '# Modify as needed
      For each cl in colRange.Cells
          cl.Replace "TEXTIWANTTOREPLACE", "TEXT2" & cl.Offset(0,-1).Value, xlPart
      Next
      

      【讨论】:

      • 我收到错误“编译错误:预期:=”,用于 cl.Replace 代码行(全部为红色)。
      • 去掉括号,现在试试 :)
      • 太棒了!正是我想要的。我现在可以根据我的需要调整/修改它。另请参阅我需要在 VBA 上改进的地方。非常感谢大卫。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多