[英]Excel VBA find a range of same values in a column
我需要編寫一個宏來查找基於值的單元格范圍。 一列中的行具有相同的值,我需要找出一行中具有相同值的第一列和最后一列。
所以宏需要發現“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
現在我需要以某種方式遍歷下一行以返回事件的最后一行
如果您的第一個單元格在排序列表中,那么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
這將有效但盡管它有其局限性(例如,如果名稱沒有排序,並且您要查找的名稱在您的范圍內的多個位置分開......)。 當然,您需要將范圍替換為您要檢查的范圍,並使用您要查找的名稱替換“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")))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.