繁体   English   中英

=INDEX(PeriodList,MonthNo) 在工作簿中创建 _xlfn.SINGLE 名称

[英]=INDEX(PeriodList,MonthNo) creating _xlfn.SINGLE name in workbook

我希望有人能够帮助解决最近 Excel 更新中出现的问题。

如果我在 Excel 工作表中定义两个范围名称,然后通过 UI 在单元格 A13 中输入 =Index(PeriodList,MonthNo),我发现 VBA 中的 Thisworkbook.Names.Count 报告 2 - 正如预期的那样。 但是,如果我在 VBA 中执行 Activesheet.Range("A13").Formula = "=Index(PeriodList,MonthNo)",Thisworkbook.Names.Count 报告 3,我发现创建了一个无法删除的新名称。 名称是 _xlfn.SINGLE。 此名称的存在对于大量广泛分布的 Excel 模板来说是一个问题,这些模板在尝试删除此名称时会失败。 这只是在最近的 Excel 更新后才成为一个问题。

问题似乎与 MonthNo 元素有关,因为“=Index(PeriodList,1)”不会生成 _xlfn.SINGLE 名称。

谁能确定如何在不创建不受欢迎的 _xlfn.SINGLE 名称的情况下在 VBA 中输入与“=Index(PeriodList,MonthNo)”等效的内容?

如果该功能过去对你有用,但最近才成为问题,你应该与你的 IT 部门联系,因为它指出了正在使用的 Excel 版本的问题。

当正在运行的 Excel 版本不支持动态数组函数时,将显示 _xlfn.SINGLE。

https://support.office.com/zh-cn/article/issue-an-xlfn-prefix-is-displayed-in-front-of-a-formula-882f1ef7-68fb-4fcd-8d54-9fbb77fd5025

有许多可用的动态数组 VBA 解决方案,例如此处。 https://bettersolutions.com/vba/arrays/dynamic-size.htm

使用此代码在 UI 名称管理器中显示所有定义的名称。 然后您可以删除您选择的命名范围,包括之前隐藏的范围。

Sub ShowAllDefinedNames()

'Source: https://professor-excel.com/named-ranges-excel-hidden-names/

        Dim tempName As Variant

        'Unhide all names in the currently open Excel file

        For Each tempName In ActiveWorkbook.Names

            tempName.Visible = True

    Next

End Sub

经过进一步调查后,我在https://support.office.com/en-gb/article/index-function-a5dcf0dd-996d-40a4-a822-b56b061328bd上发现了说明,这表明公式现在需要输入数组使用 CTRL+SHIFT+ENTER。 现在不再创建 _xlfn.SINGLE 名称。 问题解决了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM