簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM