我有一张工作表,其中“A”列包含值。我想在新表中收集行号,其中找到字符串“Code:”。 我想编写VBA代码来实现这一目标。 例如:
Sheet1:
RowNo | Column A
------|---------
1 | Hello World
2 | Good morning
3 | Code: 46904A65
4 | Excuse
5 | Code: 4523S45
输出表:
RowNo | Column A
------|---------
1 | 3
2 | 5
说明:在表1的第3行和第4行中找到字符串“代码:”。因此输出表中包含那些行号。
以下代码无效:
Set stTempData = Sheets("Output Sheet")
stTempData.Select
Set mainsheet = Sheets("Sheet1")
mainsheet.Select
k = Range("a65536").End(xlUp).Row
i = 1
Do While i < k
Set r = stTempData.Range("a65536").End(xlUp).Offset(1, 0)
If InStr(ActiveSheet.Cells(i, 0).Value, "Code:") > 0 Then
r.Offset(i, 0).Value = ActiveCell.Row - 1
j = i
r.Offset(j + 1, 1).Value = ActiveCell.Row - 2
End If
i = i + 1
Loop
答案 0 :(得分:2)
将其放在输出表中的A1中:
=IFERROR(AGGREGATE(15,6,ROW(Sheet1!$A$1:$A$5)/(ISNUMBER(SEARCH("Code",Sheet1!$A$1:$A$5))),ROW(1:1)),"")
然后抄下来直到你得到空白。
关于你的代码:
没有列0因此您的Cells()需要更改为1.此外,您不希望偏移r
。还有一件事你有activesheet和activecell将它扔掉了。:
Set stTempData = Sheets("Output Sheet")
stTempData.Select
Set mainsheet = Sheets("Sheet1")
mainsheet.Select
k = Range("a65536").End(xlUp).Row
i = 1
Do While i <= k
Set r = stTempData.Range("a65536").End(xlUp).Offset(1, 0)
If InStr(mainsheet.Cells(i, 1).Value, "Code:") > 0 Then
r.Value = mainsheet.Cells(i, 1).Row
End If
i = i + 1
Loop