我需要编写一个宏来查找基于值的单元格范围。一列中的行具有相同的值,我需要找出连续具有相同值的第一列和最后一列。
所以宏需要找到“Jill Cross”范围是a4到a9
到目前为止,我没有太多,找到了第一次出现值的方法
Function GetFirstCell(CellRef As Range)
Dim l As Long
l = Application.WorksheetFunction.Match(CellRef.Value, Range("A1:A10000"), 0)
GetFirstCell = l
End Function
现在我需要以某种方式遍历下一行以返回事件的最后一行
答案 0 :(得分:5)
如果您的第一个单元格在排序列表中,则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
答案 1 :(得分:-1)
虽然它有其局限性(例如,如果名称没有排序,并且您要查找的名称在您的范围内的多个位置分开......),这将有效。当然,您需要将范围替换为您要检查的范围,并使用您要查找的名称替换“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")))