【发布时间】:2019-10-30 13:25:06
【问题描述】:
我正在尝试编写一个宏来整理和询问从某些分析仪器导出的原始数据。我希望它浏览所有行的一列(样本名称)并查找特定样本类型的指标,例如重复。找到这些指标我想插入一行,并在新插入的行中根据上面的两行做一些简单的计算。现在我会很高兴让行插入工作。
我可以让它找到关键字并插入 1 行,但它找到第一个并停止。我的数据中有多个这些关键字的实例,我想在每个实例下方插入一行
'original code - finds first keyword, inserts row and stops
Sub dup_finder()
Dim colHeader As Range
Set colHeader = Range("B1:B500")
Dim currCell As Range
Set currCell = Cells.Find("*_dup")
If Not currCell Is Nothing Then currCell.Offset(1, 0).EntireRow.Insert Shift:=xlDown
End Sub
'my attempt to include loop - inserts 500 rows below keyword! stops
after first instance
Sub dup_finder()
Dim colHeader As Range
Dim row As Long
Dim currCell As Range
Set colHeader = Range("B1:B500")
Set currCell = Cells.Find("_dup")
For row = 1 To 500
If Not currCell Is Nothing Then currCell.Offset(1, 0).EntireRow.Insert Shift:=xlDown
Next row
End Sub
【问题讨论】:
-
您的意思是要在 B 列中找到“_dup”的每个实例并在每个实例下插入一行?
-
在循环和添加(或删除)行时,通常最好从底部开始向上工作,原因是当您添加一行时,原来的第 2 行现在是第 3 行,而是第 500 行现在是第 501 行(在您的循环范围之外)。因此,请尝试从 500 步变为 1 步 -1,看看是否能获得更好的结果。
-
我想你要找的是
FindNext。网上有很多这样的例子 -
感谢您的帮助 - 不知道如何回复特定回复.. 但我会查找“FIndNext”和“您的意思是要在列中查找“_dup”的每个实例B 并在每个下插入一行? – SJR 7 分钟前” - 是的,正是这个!然后我想在该新行中包含一个简单的计算,但首先要做的是。
标签: excel vba loops if-statement