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-Only 解决方案。看看这个公式:

=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 回答