【问题标题】:Code To Add INDEX-MATCH Dynamic Range Formula To Workbook Named Ranges?将 INDEX-MATCH 动态范围公式添加到工作簿命名范围的代码?
【发布时间】:2021-03-02 01:58:42
【问题描述】:

我的工作簿名称管理器中有以下命名范围(其中一些是 INDEX/MATCH 动态范围)及其随附的公式:

  • Q1_BusinessWorkd_ID ='Q1 数据'!$C$35:INDEX('Q1 数据'!$G$35:$G$1048576,MATCH("zzzzz",'Q1 数据'!$C$35:$C$1048576,1) -1)
  • Q1_Data ='Q1 数据'!$B$35:INDEX('Q1 数据'!$CF$35:$CF$1048576,MATCH("zzzzz",'Q1 数据'!$C$35:$C$1048576,1) )
  • Q1_Data_Start ='Q1 数据'!$B$35
  • Q1_Row1_Column_Formulas ='Q1 数据'!$H$35:$CF$35
  • Q1_Vlookup_Data ='Q1 数据'!$C$35:INDEX('Q1 数据'!$CF$35:$CF$1048576,MATCH("zzzzz",'Q1 数据'!$C$35:$C$1048576,1) )

可以使用以下 VBA 代码将不包含 INDEX 和 MATCH 语句的公式添加到工作簿的命名范围:

ActiveWorkbook.Names.Add Name:="Q1_Data_Start", RefersTo:="='Q1 Data'!$B$35"
ActiveWorkbook.Names.Add Name:="Q1_Row1_Column_Formulas", RefersTo:="='Q1 Data'!$H$35:$CF$35"

但是,包含 INDEX 和 MATCH 语句的公式会产生编译语法错误。我不知道如何更正 INDEX - MATCH 公式的语法以不产生语法错误。

有人知道如何解决这个问题吗?

【问题讨论】:

  • 您需要通过将字符串中的任何双引号加倍来转义它们,因此(例如)MATCH("zzzzz", 应该是 MATCH(""zzzzz"",
  • 谢谢,蒂姆!我忘记了这一切。这正是调试器报告的问题,我将尝试使用双引号并报告回来。
  • Tim - 您的解决方案完美运行。如果你想用你的评论来回答这个问题,我会把答案奖励给你。感谢您的帮助。

标签: excel vba excel-2019


【解决方案1】:

您需要通过将字符串中的任何双引号加倍来转义它们(例如)

...MATCH("zzzzz", ...

应该是

...MATCH(""zzzzz"", ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    相关资源
    最近更新 更多