2012-07-02 18 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