我正在使用EXCEL VBA来处理一些数据,这就是我想要做的:
在这个工作表中,我想创建一个函数“GetDebutDate”,它可以自动计算该行具有值的第一个日期。
例如,在“Mark”行中,第一次获取值是05年8月,数字为“4”。
我对VBA知之甚少,在搜索后我发现我可以使用For ... Each
在一个范围内循环。但是如何在每个循环中获得“v”的索引?获得该索引后,如何获得头行中Date的值?
Function Get_Board_Count(range As range)
For Each v In range
....
Next
Get_Board_Count = ....
End Function
答案 0 :(得分:4)
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
答案 1 :(得分:2)
使用For Each
时,对获取对象的顺序做出任何假设都不是一个好主意:它可能会在后续Excel版本中更改,甚至可能会在会话之间发生变化。
但是,v
是对范围本身的引用,因此您可以通过它访问Excel.Range的属性和方法。使用v.Column提取特定v
所引用的列;这将是包含相应日期的列。
答案 2 :(得分:1)
您也可以使用不需要VBA编程的Excel-Only解决方案。看看这个公式:
=INDIRECT(ADDRESS(1,MATCH(TRUE,INDEX(A2:E2>0,0),0)))
MATCH(TRUE,INDEX(A2:E2>0,0),0)
查找第一个大于0且不为null的值,并返回该值的当前列索引。公式的其余部分引用具有日期的行,以获得每个引用的所需日期。在我的情况下,它是第一行......