【发布时间】:2020-12-06 21:24:21
【问题描述】:
我正在将许多表单(可能最终有几十个,一个主模板的所有变体)编码到单独的平面数据库中。每个表单都有超过 2 - 300 个字段,它们是唯一的条目。
在为所有这些字段分配范围名称后,当我使用 Formulas->Use in Formula->Paste Names->List 获得范围名称列表时,我得到了所有命名范围,但它们按字母顺序排序。我需要它们按照它们在数据输入表单中出现的顺序,按行排序,然后按列排序。
通过使用 Right() 和 Left() 函数,我可以从 Range Name Address 中提取行和列值,然后按 Row 和 Column 排序,现在我对 Range Names 进行了排序,以便可以按顺序输入放入一个数组,然后我用它来创建数据库工作表列。
有没有更快的方法来获得这个排序列表结果,而不是将整个过程编码为一个过程?无论是作为公式还是 VBA 函数都没有关系。
非常感谢您提前提供任何帮助。
【问题讨论】:
-
你能分享你试过的代码吗?另外,您能否更准确地解释您想要的结果是字符串(名称)数组还是范围数组?
-
工作簿中是否只有您需要的范围名称或其他名称?
-
很抱歉,除了我所描述的之外,我还没有“尝试过”任何代码。数据输入表单包含大约 300 个命名范围,每个单元格。它们有 OpStartDD、OpStartMMM、OpstartYYYY 等名称。 - 表单中的第一个字段。当我从名称管理器中获得所有命名范围的列表时,它会按字母顺序排列。我使用 =RIGHT(AD3,LEN(AD3)-FIND("$",AD3)) 和 =LEFT(AE3,LEN(AE3)-FIND("$",AE3)) 来提取 Row 和 Column 值,然后将整个列表排序为那些列。现在命名范围按工作表中的顺序排序。我在问是否存在更简单的方法
标签: excel vba sorting named-ranges