我正在尝试创建从债券评级“AAA、AA+、AA、AA-、...”到等效数字“-29、-28、-27、-26、...”的映射
我希望单元格的值与标签不同。例如,我希望标签为 AAA 的单元格的基础值为 -29。这将使我能够使用 excel 过滤来选择债券评级 > [阈值] 的行。数值等效/映射为我提供了一种方法。
这种值/标签区别在 Excel 中是否可行?如果不是,如果我希望通过我自己的自定义排名应用过滤,我有哪些选择?
我个人会选择 Tim William 的使用 VLookup 的解决方案,因为它是最简单的。或者,当使用 VBA 时,通过在二维数组中加载单独的列并在遍历数组时通过设置条件语句来检索“标签”。
只是为了回答您的问题,您可以给单元格(或范围)一个“名称”,这就是为什么它们被称为“命名范围”的原因。
理论上你可以给一个单元格一个值-29,并根据它的值检索范围的名称。请注意,命名范围仅允许字母、数字(不要以数字开头)和下划线,因此您需要使用诸如“AA_PLUS”或“AA_MINUS”之类的名称。假设您将名称“AA”添加到工作簿的 sheet(1) 中的单元格(1,1),您检索命名范围:
dim sName as string
sName = thisworkbook.sheets(1).cells(1,1).name.name
debug.print sName
对值进行排序后,仍然可以正确检索名称,如果需要,您可以将它们加载到数组中。虽然好处是您不需要为添加额外的列保留工作表空间并且它增加了灵活性(命名范围可以放在任何地方,因为名称粘在单元格上),但我不推荐这种方法当你处理大量数据。
一般来说,它们的使用方向与我刚才解释的方式相反。首先,您为范围定义一个名称,然后检索它的值,而不是相反(尽管没有禁止它的规则并且代码可用)。命名范围提供了灵活性,并且通常是使工具动态化的必要条件。我的意思是范围可以移动,而 VBA 仍将正确检索它们的值。
好吧,另一个“标签类型的解决方案”是为每个单元格添加注释(其中的内容可以通过编程方式设置和获取),但我也从未使用过这种方法,对于长数据结构,我不推荐它。
sName = thisworkbook.sheets(1).cells(1,1).comment.text