VBA 难度的 Excel 公式

VBA 难度的 Excel 公式

我有一个公式,我想在 VBA 中生成并放入单元格中。最终公式是:

=IF(ISNA(MATCH(B6670,ProcMIRs!B1:B235,0)),"","Found in ProcMIRs row " & MATCH(B6670,ProcMIRs!B1:B235,0))

当我将其输入到单元格中时,它可以正常工作,返回消息或不返回任何内容。

在 VBA 中,我有:

rToMIRs.Offset(0, 18).Formula = "=IF(ISNA(MATCH(RC[-17],ProcMIRs!B1:B" & Sheets("ProcMIRs").Range("B1048576").End(xlUp).Row & ",0)),"""",""Found in ProcMIRs row "" & MATCH(RC[-17],ProcMIRs!B1:B" & Sheets("ProcMIRs").Range("B1048576").End(xlUp).Row & ",0))"

当我在即时窗口中弹出字符串时,它正是我想要的,但是当我将它分配给工作表时,我得到:

=IF(ISNA(MATCH(B6673,ProcMIRs!'B1':'B235',0)),"","Found in ProcMIRs row " & MATCH(B6673,ProcMIRs!'B1':'B235',0))

那么在 ProcMIRs 工作表引用的范围周围插入单引号到底是什么B1:B235?如果我在单元格中删除它们,公式当然可以正常运行。我花了 30 分钟尝试先将其分配给字符串变量等操作,但都没有成功。

任何想法,将不胜感激。

答案1

您的公式不一致,您在一个地方使用 R1C1 标记,然后在另一个地方切换到 A1。选择一个并坚持下去。

rToMIRs.Offset(0, 18).FormulaR1C1 = _ 
 "=IF(ISNA(MATCH(RC[-17],ProcMIRs!R1C2:R" & Sheets("ProcMIRs").Range("B1048576").End(xlUp).Row & _
 "C2,0)),"""",""Found in ProcMIRs row "" & MATCH(RC[-17],ProcMIRs!R1C2:R" & _
 Sheets("ProcMIRs").Range("B1048576").End(xlUp).Row & "C2,0))"

未经测试,我现在面前没有 Excel,抱歉。)

相关内容