3

値に基づいてセル範囲を見つけるマクロを作成する必要があります。列は行に同じ値を持ちます。行に同じ値を持つ最初と最後の列を見つける必要があります。ここに画像の説明を入力

したがって、マクロは「ジル クロス」の範囲が 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

次の行を何らかの形でループして、出現の最後の行を返す必要があります

4

2 に答える 2

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
于 2012-11-13T18:31:07.230 に答える
-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")))

于 2012-11-13T18:00:47.390 に答える