Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VBA中为每个循环获取索引(使用Excel编程)?_Vba_Excel - Fatal编程技术网

如何在VBA中为每个循环获取索引(使用Excel编程)?

如何在VBA中为每个循环获取索引(使用Excel编程)?,vba,excel,Vba,Excel,我正在使用EXCEL VBA处理一些数据,下面是我想要做的: 在这个工作表中,我想创建一个函数“GetDebtDate”,它可以自动计算行有值的第一个日期 例如,在“标记”行中,第一次获取值是编号为“4”的Aug-05 我对VBA知之甚少,在四处搜索后,我发现我可以使用来。。。每个在一个范围内循环。但是如何获得每个循环中“v”的索引呢?在我得到那个索引之后,我如何得到首行中日期的值 Function Get_Board_Count(range As range) For Each v In

我正在使用EXCEL VBA处理一些数据,下面是我想要做的:

在这个工作表中,我想创建一个函数“GetDebtDate”,它可以自动计算行有值的第一个日期

例如,在“标记”行中,第一次获取值是编号为“4”的Aug-05

我对VBA知之甚少,在四处搜索后,我发现我可以使用
来。。。每个
在一个范围内循环。但是如何获得每个循环中“v”的索引呢?在我得到那个索引之后,我如何得到首行中日期的值

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

当为每个使用
时,最好不要对获取对象的顺序进行任何假设:它可能会在后续Excel版本中更改,甚至在会话之间更改


但是,
v
是对范围本身的引用,因此您可以通过它访问Excel.range的属性和方法。使用v.Column提取特定
v
所指的列;这将是包含相应日期的列。

您也可以使用仅Excel的解决方案,它不需要VBA编程。看看这个公式:

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

MATCH(TRUE,索引(A2:E2>0,0),0)
查找第一个大于0且不为null的值,并返回该值的当前列索引。公式的其余部分引用带有日期的行,以获得每个引用所需的日期。在我的例子中,它是第一行…

您希望在工作表中使用哪个范围作为函数
范围参数
?哪一个对你最好?你为什么不使用一个公式?@brettdj我不知道什么公式可以做到这一点。有什么答案可以帮助你解决问题吗?如果是,请将其标记为已接受。+1表示不需要VBA的答案。但是请注意,间接函数是一个不稳定的函数。好的,谢谢你的建议。在这种情况下,你知道间接函数的更好的解决方案或替代方案吗?什么是“易失性函数”-我以前从未听说过这个概念。我搜索了一下,但发现大多数结果都是C/C++相关的东西。不严格地说,volatile函数是一个,因为它的输出不是输入的确定函数,所以每次计算工作簿时都必须重新计算它。今天和兰德是两个熟悉的例子。谢谢!我熟悉JavaScript,但对VBA非常不熟悉。有没有类似于(VARI=0)的
之类的东西,在这种情况下可能不存在。范围不一定是一个向量,甚至不一定是一个连续的块。
=INDIRECT(ADDRESS(1,MATCH(TRUE,INDEX(A2:E2>0,0),0)))