查找包含特定文本的第一行和最后一行

时间:2015-03-12 20:06:40

标签: excel vba

我有一个不同值的长(2,000 +行)列表。我试图找到每个值的第一行和最后一行。作为示例(注意:所有数据都在一列中):

Bats
Bats
Bats
Bats
Bats
Bats
Fun
Fun
Fun
Fun
Bases
Bases
Bases
Bases
Bases
Bases
Bases
Bases
Bases
Bases
Bases
Balls
Balls
Balls
Balls
Balls
Balls
Balls
Balls

如何找到包含每个单词的第一行(从顶部开始)和最后一行。蝙蝠从第1行开始,在第6行结束。乐趣从第7行开始,在第10行结束。

除了我将每个单元格与之前的单元格进行比较的循环之外,还有更快捷的方法可以做到这一点,如果它们不同,可以添加一个行变量吗?

在VBA中查找如何执行此操作。

2 个答案:

答案 0 :(得分:12)

我想通了 - VBA风格。我可以使用find()来帮助:

Dim batStartRow as Long, batEndRow as Long
With Sheets("Sheet1")
    batStartRow = .Range("A:A").Find(what:="bats", after:=.Range("A1")).Row
    batEndRow = .Range("A:A").Find(what:="bats",after:=.Range("A1"), searchdirection:=xlPrevious).Row
End With

然后更换" bats"换句话说,它会起作用。

编辑:您可能还需要添加LookIn:=xlValues限定符,具体取决于搜索的信息/数据。

答案 1 :(得分:7)

如果值已经分组,您可以使用以下内容查找第一个Row事件

=MATCH("Bats",A:A,0)

这是为了找到最后一次出现的行

=(MATCH("Bats",A:A,0)+(COUNTIF(A:A,"Bats"))-1)    

并将“Bats”替换为您要查找的每个不同的值。