【问题标题】:If Loop For Full Column Using Len如果使用 Len 循环整列
【发布时间】:2013-06-21 19:59:19
【问题描述】:

我想做一个 If 语句来测量自动过滤列中的字符数量,如果字符数量 (Len) = 9 或 12,我希望它转到第一列并更改单元格的名称在那一行到“CLO”。我希望它运行整个列(列 M 和 N)。我该怎么做呢?

    Dim count As Integer, myRange As Range, rng As Range
Dim RealRng As Range

Set myRange = Columns("M:M")
count = Application.WorksheetFunction.CountA(myRange)
Set RealRng = ActiveSheet.Range("M2:M+" & count)
For Each rng In RealRng
    If Len(rng) = 9 Or Len(rng) = 12 Then
        rng.Offset(0, -12) = "Bond"
    End If
Next rng

【问题讨论】:

  • 什么语言?这个问题是否有任何实际代码?
  • VBA 宏,我猜你是否需要看看我在做什么。我刚刚添加了在自动过滤器中搜索包含“MBS”的单词的代码,但我所描述的内容相似但完全不同

标签: vba loops


【解决方案1】:

这是一个简单的演示,它将遍历过滤范围,测试长度,如果长度为 9 或 12,则更改下一列。

您需要根据自己的目的进行调整:

Sub Demo()
    Dim filteredRng As Range, rng As Range

    Set filteredRng = Range("A1:A10").SpecialCells(xlCellTypeVisible)

    For Each rng In filteredRng
        If Len(rng) = 9 Or Len(rng) = 12 Then
            rng.Offset(0, 1) = "CLO"
        End If
    Next rng

End Sub

【讨论】:

  • 嗨,Alex,非常感谢您的帮助。这似乎正是我想要它做的。我只需要您发布的代码的一个方面的帮助。无论如何,您是否可以将filteredRng设置为可以计算出M列中有多少行并选择M2:the end,然后继续公式从那里继续?这是我尝试将代码编辑为...您可以在我更新的 OP 中看到它
  • Set rng = Range("A1:A" & Range("A1").End(xlDown).Row) 然后Set filteredRng = rng.SpecialCells(xlCellTypeVisible)。试试看……
猜你喜欢
  • 2020-12-07
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多