我有一个不同值的长(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中查找如何执行此操作。
答案 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”替换为您要查找的每个不同的值。