我有一个公式,我想在 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,抱歉。)