2012-07-02 16 views
1

我试图创建债券评级“AAA,AA +,AA,AA-,...”到等效数值“-29,-28,-27,-26,...的映射。 ..“标签与Excel中的值

我想单元格的值不同于标签。例如,我希望一个标签为AAA的单元格的基础值为-29。这将使我能够使用excel过滤来选择债券评级> [阈值]的行。数值等价/映射为我提供了一种方法。

在Excel中,这种值/标签的区别是否可能?如果没有,如果我希望通过我自己的自定义排名来应用过滤,我的一些选择是什么?

+3

我认为你最好的选择是为数值添加一个单独的列,并使用vlookup()来填充它。 –

回答

0

我个人会和Tim William一起使用VLookup的解决方案,因为它是最简单的。 或者,在使用VBA时,通过将单独的列加​​载到二维数组中并在循环数组时通过设置条件语句来检索“标签”。

只是试图回答你的问题,你可以给细胞(或范围)一个“名字”,这是litterally为什么他们被称为“命名范围”。
理论上您可以给一个单元格的值为-29,并根据其值检索范围的名称。 请注意,命名范围只允许使用字母,数字(不以数字开头)和下划线,因此您需要使用名称,如“AA_PLUS”或“AA_MINUS”。 试想一下,你添加姓名“AA”在表单元格(1,1)(1)工作簿中,您检索命名范围:

dim sName as string 

sName = thisworkbook.sheets(1).cells(1,1).name.name 
debug.print sName 

排序值后,名称仍然正确检索如果愿意,可以将它们加载到数组中。 虽然好处是您不需要预留工作表空间来添加额外的列,并且它增加了灵活性(名称范围可以放在任何地方,因为名称粘贴到单元格),但我不会推荐这种方法,重新处理大量的数据。

一般而言,它们的使用方式与我刚才解释的方式相反。 首先你为一个范围定义一个名称,而不是你检索它的值而不是其他方式(虽然没有规则禁止它并且代码可用)。 命名范围提供了灵活性,并且通常是使工具动态化的必要条件。我的意思是说,范围可以移动,而VBA仍然会正确地检索它们的值。那么,另一个“标签类型解决方案”就是给每个单元添加注释(其内容可以被设置并获得编程),但是我再也没有使用过这种方法,对于长数据结构我不会' t推荐它。

sName = thisworkbook.sheets(1).cells(1,1).comment.text