Excel 2013,在一个单元格中搜索部分文本,并在满足条件时覆盖相邻单元格

时间:2016-01-11 15:19:05

标签: excel-vba if-statement filtering vba excel

我需要写一个宏。

我有一个约30000行的工作簿(每天更改)。

  1. 我需要搜索表达式" TRADE"在列(A)

  2. 的单元格中的字符串中
  3. 如果单元格中的字符串包含表达式TRADE我需要将列(B)(相同行)中相关单元格中的字符串更改为表达式" TRADEIN"

  4. 如果不满足条件,则(B)栏中的相关单元格需要保持不变

  5. 到目前为止我学到了什么:

    Git repositories只会相应地更改相邻的单元格值,如果直接放在单元格中并在Excel中复制的话。

    当我尝试将字符串作为结果时,问题就开始了

    Formula =IF(ISNUMBER(FIND("TRADE", A1 )), 1, 2)无法工作 - >错误

    Formula: =IF(ISNUMBER(FIND("TRADE", A1 )), "TRADEIN", "")无法工作 - >错误

    然后,任何试图让我的宏将更复杂的公式插入VBA的单元格中的尝试都失败了,例如:

    以下工作正常:

    Formula: =IF(ISNUMBER(FIND("TRADE", A1 )), ""TRADEIN"", "")

    以下工作没有成功(如果直接放在单元格中,公式也会有效):

    For i=1 to i=NumberOfRows
    
    ActiveSheet.Cells(i, 2).Formula = "= 2+2"
    
    next i
    

    我认为列出我到目前为止失败的所有失败尝试都没有意义(我想要读取大量无用的行),但无论如何 - 如果我错了,请纠正我。 / p>

    我无法找到与我的任务一样具体的解决方案,并且在改变在线发现的问题时会遇到问题,而其他人根本不会为我工作。或许不知道如何以最有效的方式询问我的需求。非常基本,如果可以的话,尽量不要错过任何建议的模块/子的声明 - 在我遵循的几个例子之外,或者选择/使用时,我还不自信地使用和创建对象和方法具有兼容方法/功能等的正确类型的变量。

2 个答案:

答案 0 :(得分:1)

使用VBA这是如何实现目标的。这将找到A列中使用的最后一行来设置要处理的范围。

Sub test()

Dim w As Range
lrow = Range("A1", Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible).Count
For Each w In Range("A1:A" & lrow).Cells
    If w.Value = "trade" Then
        w.Offset(0, 1).Value = "tradein"
    End If
Next w

End Sub

答案 1 :(得分:1)

练习使用自动过滤器,一旦完成,请使用宏录制器来获取代码。

选择列A和转到数据=>过滤器=>文本过滤器=>包含....在框中键入要过滤的单词。

enter image description here