程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了VBA 的 Replace() 函数在嵌套在 IF() 函数内部的 INDIRECT() 函数前面添加了@字符,在复杂情况下打破了整个公式大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决VBA 的 Replace() 函数在嵌套在 IF() 函数内部的 INDIRECT() 函数前面添加了@字符,在复杂情况下打破了整个公式?

开发过程中遇到VBA 的 Replace() 函数在嵌套在 IF() 函数内部的 INDIRECT() 函数前面添加了@字符,在复杂情况下打破了整个公式的问题如何解决?下面主要结合日常开发的经验,给出你关于VBA 的 Replace() 函数在嵌套在 IF() 函数内部的 INDIRECT() 函数前面添加了@字符,在复杂情况下打破了整个公式的解决方法建议,希望对你解决VBA 的 Replace() 函数在嵌套在 IF() 函数内部的 INDIRECT() 函数前面添加了@字符,在复杂情况下打破了整个公式有所启发或帮助;

假设我的 Excel 工作簿包含三个名为 Object1Object2Calculations 的工作表。

  • 在工作表 Object1 中,单元格 A1 被称为 Object1_Beginning 并且 包含值 250
  • 在工作表 Object2 中,单元格 B1 被称为 Object2_Beginning 并包含值 750

在工作表 Calculations 中,单元格 A1 包含以下形式的公式:

=IF(INDIRECT(CONCAT("'Object1'!",ADDRESS(ROW(Object1!Object1_Beginning),ColUMN(Object1_Beginning)))) < 500,1,0)

(我不知道为什么 Excel 在 '=ROW() 函数中写入名称时有时会删除 =ColUMN() 字符,但效果很好。我也知道在这种情况下实际上不需要同时使用 =INDIRECT()=CONCAT(),但我有一个更复杂的公式在工作,需要以与此示例中所示类似的方式进行。)

然后,我决定编写一个宏,将 Object1 公式中的字符串 'Calculations'!A1 替换为 Object2,这样结果应该是这样的:

=IF(INDIRECT(CONCAT("'Object2'!",ADDRESS(ROW(Object2!Object2_Beginning),ColUMN(Object2_Beginning)))) < 500,0)

用于此目的的宏代码编写如下:

ThisWorkbook.Sheets("Calculations").Range("A1").Formula = Replace(ThisWorkbook.Sheets("Calculations").Range("A1").Formula,"Object1","Object2",vbTextCompare)

然而,结果看起来是这样的:

=IF(@INDIRECT(CONCAT("'Object2'!",0)

我无法使用 VBA 中的 @ 函数删除 =INDIRECT() 函数之前的附加 Replace() 字符。在这种简单的情况下,公式仍然有效并且可以计算出正确的结果。然而,在更复杂的情况下,情况并非如此。只有当我手动删除所有 @ 字符时,修改后的公式的计算才能正常工作。

我能做什么?我想这与嵌套在 =INDIRECT() 函数中的 =IF() 函数有关,但我不知道如何解决这个问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的VBA 的 Replace() 函数在嵌套在 IF() 函数内部的 INDIRECT() 函数前面添加了@字符,在复杂情况下打破了整个公式全部内容,希望文章能够帮你解决VBA 的 Replace() 函数在嵌套在 IF() 函数内部的 INDIRECT() 函数前面添加了@字符,在复杂情况下打破了整个公式所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: