3

私はいくつかのデータを処理するためにEXCEL VBAを使用していますが、ここに私が作りたいものがあります:

薄緑色の領域の値を計算できる関数を開発したい

このシートでは、行が値を持つ最初の日付を自動的に計算できる関数「GetDebutDate」を作成したいと考えています。

たとえば、「Mark」の行で、最初に値を取得するのは Aug-05 で、数値は「4」です。

私は VBA についてほとんど知りませんが、検索した結果For ... Each、範囲内でループできることがわかりました。しかし、各ループで「v」のインデックスを取得するにはどうすればよいですか? そのインデックスを取得した後、先頭行の Date の値を取得するにはどうすればよいですか?

Function Get_Board_Count(range As range)
  For Each v In range
    ....
  Next
  Get_Board_Count = ....
End Function
4

3 に答える 3

7
Function Get_Board_Count(range As range)
    dim i as integer
    i = 1

    for each v in Range
       ...
       i = i + 1
    next


  Get_Board_Count = i 'Index of the item where cell is found.
End Function
于 2013-07-11T07:52:09.190 に答える
4

を使用する場合For Each、オブジェクトを取得する順序について仮定することはお勧めできません。以降の Excel バージョンで、またはセッションごとに変更される可能性があります。

ただし、v範囲自体への参照であるため、それを介して Excel.Range のプロパティとメソッドにアクセスできます。v.Column を使用して、特定の列vが参照している列を抽出します。これは、対応する日付を含む列になります。

于 2013-07-11T07:55:44.627 に答える
2

または、VBA プログラミングを必要としない Excel 専用ソリューションを使用することもできます。この式を見てください:

=INDIRECT(ADDRESS(1,MATCH(TRUE,INDEX(A2:E2>0,0),0)))

MATCH(TRUE,INDEX(A2:E2>0,0),0)0 より大きく、null でない最初の値を検索し、この値の現在の列インデックスを返します。数式の残りの部分は、日付を含む行を参照して、参照ごとに目的の日付を取得します。私の場合、それは最初の行です...

于 2013-07-11T08:19:15.347 に答える