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()公式,我想您会发现它不是您所期望的。为什么不使用变量并用不同的匹配结果填充它们呢?然后你只需要在公式中插入变量,代码就更容易排除故障。蒂姆在“壮丽男人”徽章上取得了更大的进步!蒂姆在“伟人”徽章上取得了更大的进步!