大佬教程收集整理的这篇文章主要介绍了VBA 的 Replace() 函数在嵌套在 IF() 函数内部的 INDIRECT() 函数前面添加了@字符,在复杂情况下打破了整个公式,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我的 Excel 工作簿包含三个名为 Object1
、Object2
和 Calculations
的工作表。
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,请注明来意。