gpt4 book ai didi

vba - 如果单元格在 vba 中包含特定字符串,如何循环并创建一个新行?

转载 作者:行者123 更新时间:2023-12-04 22:03:21 25 4
gpt4 key购买 nike

我想遍历 A 列中包含内容的所有单元格,如果它包含特定字符串,则在单元格上方创建一个新行。这是我到目前为止的代码:

 Dim rng_cell As Range

For Each rng_cell In Range(Range("A1"), Range("A1").End(xlDown))

If rng_cell.Value = "string" Then
rng_cell.EntireRow.Insert xlUp
End If

Next rng_cell

知道为什么这不起作用以及如何解决吗?

最佳答案

假设您的 Excel 工作表包含以下内容:

   A
1 hello
2 moon
3 rich
4 dells
5 cat

您的宏没有按预期工作的原因是因为您成功创建了一个新行,然后宏立即下降到下一行并找到相同的匹配项,并添加一个新的空行,然后转到下一行找到相同的匹配......等等。

如果我们想在带有 rich 的行上方输入一个新行,这样的宏可能会更好:
Sub macro1()
Range("A1").Select

' remember the last row that contains a value
Dim LastRow As Integer
Dim CurrentRow As Integer
LastRow = Range("A1").End(xlDown).Row
CurrentRow = 1

' keep on incrementing the current row until we are
' past the last row
Do While CurrentRow <= LastRow

' if the desired string is found, insert a row above
' the current row
' That also means, our last row is going to be one more
' row down
' And that also means, we must double-increment our current
' row
If Range("A" & CurrentRow).Value = "rich" Then
Range("A" & CurrentRow).EntireRow.Insert xlUp
LastRow = LastRow + 1
CurrentRow = CurrentRow + 1
End If

' put the pointer to the next row we want to evaluate
CurrentRow = CurrentRow + 1

Loop

End Sub

运行后,输出将如下所示:
   A
1 hello
2 moon
3
4 rich
5 dells
6 cat

试一试,看看它是如何为您工作的。随意调整它以适应您的场景。

关于vba - 如果单元格在 vba 中包含特定字符串,如何循环并创建一个新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30114576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com