宏 - 列出包含值“代码:”的单元格的行数

时间:2016-08-05 19:57:08

标签: excel vba excel-vba macros

我有一张工作表,其中“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

1 个答案:

答案 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