我的问题是关于语法/概念:我想用一个for循环创建一个列表,其中包含一个根据循环函数改变列输入的公式。
我能找到的最接近的:Excel VBA Loop on columns
我尝试的特定方法提取列(t,u,v.)中的“第一个not-NA()”索引位置,即C6,C7,C8相对于列N,我想要我的结果)。
想要的结果是,这段代码应该由for循环中的单个表达式运行:
Range("N109").Select
ActiveCell.Formula2R1C1 = "=MATCH(TRUE,INDEX(R[-103]C[6]:R[3769]C[6]<>0,),0)"
Range("N110").Select
ActiveCell.Formula2R1C1 = "=MATCH(TRUE,INDEX(R[-104]C[7]:R[3768]C[7]<>0,),0)"
Range("N111").Select
ActiveCell.Formula2R1C1 = "=MATCH(TRUE,INDEX(R[-105]C[8]:R[3767]C[8]<>0,),0)"
...
我的尝试:
For i = 1 To 40
Dim x, y, z As Variant '(or Integer, neither works)
x = -102 - i
y = 5 + i
z = 3770 - i
Range("N" & (108 + i)).Select
'A1 and A2 are two different attempts to make this work
A1: ActiveCell.Formula2R1C1 = "=MATCH(TRUE,INDEX(R[x]C[y]:R[z]C[y]<>0,),0)"
A2: ActiveCell.value = WorksheetFunction.Match(TRUE,INDEX(R[x]C[y]:R[z]C[y]<>0,),0)"
我尝试(在for循环之外),将其中一个范围直接写入函数,但是这给出了一个错误代码。
A3: ActiveCell.Formula2R1C1 = "=MATCH(TRUE,INDEX(Range("T6:T3878"))<>0,),0)"
2条答案
按热度按时间ndasle7k1#
为了在公式R1C1中应用变量,你必须以特定的方式编写它,例如:
我希望这能帮助你,
问候
3ks5zfa02#
我不太熟悉“相对重复”的语法,所以我没有得到你的建议卢卡斯工作,我想我犯了更多的错误...然而,我现在使用了“绝对的,细胞级的”参考系统(我现在已经学会了语法):