VBA:在范围右侧的位置中使用数组索引。公式
大家都知道,此时可以执行以下操作,将公式应用于某个范围,右侧的单元格引用将动态更新:VBA:在范围右侧的位置中使用数组索引。公式,vba,excel,Vba,Excel,大家都知道,此时可以执行以下操作,将公式应用于某个范围,右侧的单元格引用将动态更新: Range("A1:A10").Formula = "=J2+M2" 这不是我要问的。我试图将数组索引传递到范围.Formula的右侧,但没有得到我想要的结果。对于初学者,这里是我的代码,左侧工作正常(请注意xl.是由MS Access启动的): 这一点适用于正确的范围。如果我将“ASD”,“=J2+M2”放在右侧,它会更新正确的范围。当我需要在右侧使用xl.Match(…)作为公式的一部分时,问题就出现了
Range("A1:A10").Formula = "=J2+M2"
这不是我要问的。我试图将数组索引传递到范围.Formula的右侧,但没有得到我想要的结果。对于初学者,这里是我的代码,左侧工作正常(请注意xl.
是由MS Access启动的):
这一点适用于正确的范围。如果我将“ASD”
,“=J2+M2”
放在右侧,它会更新正确的范围。当我需要在右侧使用xl.Match(…)
作为公式的一部分时,问题就出现了
例如:
"=ISBLANK(" & xl.Range(xl.Cells(2, xl.Match("NCode", cols, 0)), xl.Cells(2, xl.Match("NCode", cols, 0))) & ")"
返回1004:应用程序定义或对象定义错误
。这应该在应用范围内返回=ISBLANK(K2)
,=ISBLANK(K3)
,等
只要一个简单的引用应该等于=K2
,=K3
,等
就等于单元格中的值K2
。例如,=14
,并将其应用于整个范围。它甚至不会返回K3
、K4
、等中的值。这是用于以下各项的公式:
"=" & xl.Range(xl.Cells(2, xl.Match("PCode", cols, 0)), xl.Cells(2, xl.Match("PCode", cols, 0)))
我做错了什么?这样做的原因是,我需要引用的列在报告之间发生了更改,但标题名称保持不变。它可以是一个报表中的M列,但在另一个报表中是Z列。到目前为止,我一直在使用进行循环
,但它们速度很慢,希望避免它们
"=ISBLANK(" & xl.Range(xl.Cells(2, xl.Match("NCode", cols, 0)), _
xl.Cells(2, xl.Match("NCode", cols, 0))) & ")"
应该是
"=ISBLANK(" & xl.Cells(2, xl.Match("NCode", cols, 0)).Address(false, false) & ")"
应该是
"=ISBLANK(" & xl.Cells(2, xl.Match("NCode", cols, 0)).Address(false, false) & ")"
Debug.Print
您的ISBLANK()公式,我想您会发现它不是您所期望的。为什么不使用变量并用不同的匹配结果填充它们呢?然后,您只需将变量插入公式,代码就更容易进行故障排除。Debug.Print
ISBLANK()公式,我想您会发现它不是您所期望的。为什么不使用变量并用不同的匹配结果填充它们呢?然后你只需要在公式中插入变量,代码就更容易排除故障。蒂姆在“壮丽男人”徽章上取得了更大的进步!蒂姆在“伟人”徽章上取得了更大的进步!