【问题标题】:Find all values with in a range and then offset查找范围内的所有值,然后偏移
【发布时间】:2020-04-29 10:04:36
【问题描述】:

我正在尝试编写在 BI 列中查找术语“drek”的 vba 代码。如果该术语存在于单元格中,它将偏移 (0,1) 值“1”。

我使用了下面的代码,但是它只会找到并偏移第一个“drek”然后停止。我需要它,所以它会用它找到的每一个“drek”来做到这一点。

我该怎么做?

Sub find_drek()
    Dim rng As Range
    Dim cl As Range
    Dim sFind As String

    sFind = "drek"
    Set rng = Range("BI2", Range("BI65536").End(xlUp))
    Set cl = rng.find(sFind, LookIn:=xlValues)
    If Not cl Is Nothing Then cl.Offset(0, 1).Value = "1"
End Sub

【问题讨论】:

  • 我认为您需要将for each cell in rng 放在Set rng 行之后,将Set cl and if not 行更改为if cell.value=sFind then cell.offset(0,1).value="1" 然后将Next 放在End Sub 之前

标签: excel vba loops offset


【解决方案1】:

你可以试试这个:

Dim rng As Range
Dim sFind As String

sFind = "drek"

For Each rng In Range("BI2", Range("BI65536").End(xlUp))
    If Not rng.Find(sFind, LookIn:=xlValues) Is Nothing Then
        rng.Offset(0, 1).Value = "1"
    End If
Next rng

因此,您不需要另一个范围对象。

【讨论】:

  • 感谢完美,另外一件事 - sFind 是否可以是多个值,即“drek”、“dorm”、“drab”等?
  • 当然,您可以为此使用字符串数组,参见。 [stackoverflow.com/questions/4228137/… 我可以在数组上使用 for each 循环吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多