Excel VBA在一列中查找一系列相同的值

我需要编写一个macros来查找基于一个值的单元格区域。 一列中的行会有相同的值,我需要找出在一行中具有相同值的第一列和最后一列是什么。 在这里输入图像说明

所以macros需要find“Jill Cross”范围是a4到a9

到目前为止,我没有太多的东西,有办法find价值的第一次出现

Function GetFirstCell(CellRef As Range) Dim l As Long l = Application.WorksheetFunction.Match(CellRef.Value, Range("A1:A10000"), 0) GetFirstCell = l End Function 

现在我需要以某种方式循环下一行来返回一个事件的最后一行

如果你有你的第一个单元格在一个sorting列表中,一个countif函数将给你最后一个单元格很容易。

  Function GetFirstCell(CellRef As Range) as long Dim l As Long l = Application.WorksheetFunction.Match(CellRef.Value, Range("A1:A10000"), 0) GetFirstCell = l End Function function GetLastCell(cellRef as range, lFirstCell as long) Dim l As Long l = Application.WorksheetFunction.countif(Range("A1:A10000"), CellRef.Value) GetLastCell = lFirstCell+l-1 End Function 

这将工作,虽然它有它的限制(例如,如果姓名不sorting,并且你正在寻找的名字是分隔在你的范围内的多个地方…)。 当然,你需要用你想要检查的范围来replace这个范围,并且用你想找的任何名字来“bob”。 此外,该列是静态的,所以你可能想改变这个部分。 这是一个数组公式,所以你需要按下公式栏中的[ctrl] + [shift] + [enter]来执行它。

="A"&MIN(IF(ROW(A1:A6)*(A1:A6="bob")=0, 99999999, ROW(A1:A6)*(A1:A6="bob")))&":A"&MAX(SI(ROW(A1:A6)*(A1:A6="bob")=0, -99999999, ROW(A1:A6)*(A1:A6="bob")))