【问题标题】:Looping through the rows until last row循环遍历行直到最后一行
【发布时间】:2020-07-03 06:54:47
【问题描述】:

您好,我是 VBA 新手,我有一个如下图所示的 excel 表,我想遍历每一行直到最后一行以删除“/”前面的字符。

以下是我的 VBA 代码。但是,我的代码目前只能在一个单元格上运行,我不确定如何将其更改为 For 循环以遍历所有行,直到最后一行。此外,有些单元格不包含“/”,我只是希望它是一个空单元格。我需要一些帮助来解决这个问题?如果有人能够帮助我,非常感谢您。

Sub String()
' String
Dim stringOriginal As String
stringOriginal = Range("A2").Value

Dim indexOfThey As Integer
indexOfThey = InStr(1, stringOriginal, "/")

Dim finalString As String
finalString = Right(stringOriginal, Len(stringOriginal) - indexOfThey)

Range("A2").Value = finalString

End Sub

【问题讨论】:

  • @braX 您好,您提供的示例由行和列组成,但我只需要它来遍历特定列,我将如何做到这一点?
  • 这里还有很多其他的例子。您是否尝试过自己先搜索?
  • 不需要VBA代码...听说过Text To Columns吗?
  • 如果你想要 VBA 代码,那么你可以简单地使用 Text To Columns 记录一个宏。顺便说一句,来自 ABC/DEF 你想要什么? ABC 还是 DEF?对于 123,我猜你想要一个空白?

标签: excel vba


【解决方案1】:

试试下面的子

Sub StringOperation()
Dim lRow As Long
Dim Rng As Range

lRow = Cells(Rows.Count, 1).End(xlUp).Row

For Each Rng In Range("A1:A" & lRow)
    If (InStr(1, Rng, "/")) > 0 Then
        Rng = Right(Rng, Len(Rng) - InStr(1, Rng, "/"))
    End If
Next

End Sub

编辑:要清空不包含/ 的单元格,请使用以下代码。

Sub StringOperation()
Dim lRow As Long
Dim Rng As Range

lRow = Cells(Rows.Count, 1).End(xlUp).Row
    For Each Rng In Range("A1:A" & lRow)
        If (InStr(1, Rng, "/")) > 0 Then
            Rng = Right(Rng, Len(Rng) - InStr(1, Rng, "/"))
              Else
            Rng = ""
        End If
    Next
End Sub

【讨论】:

  • 您好,如果原始单元格不包含“/”字符,我想将单元格设为空,我该怎么做?
  • 这就是他的例子向你展示的......看看他是如何使用Instr函数的?
  • @JinWei 您只需将Else 分支添加到IF 语句,如Else Rng = ""。请参阅编辑后的答案。
  • 好的,谢谢。另一个问题是,如果我想在我拥有的当前字符串前面添加“测试”,我该怎么做?对于那些空单元格,它仍然是空的。
  • @JinWei 然后把这行Rng = Right(Rng, Len(Rng) - InStr(1, Rng, "/"))改成Rng = "Test" & Right(Rng, Len(Rng) - InStr(1, Rng, "/"))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多