【发布时间】: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