2016-11-29 79 views
3

我需要獲取我在Excel表格中創建的邏輯列的字母。獲取邏輯列字符

當我點擊一個單元格時,假設H7有數據23,我可以得到Te excel列H,但出於某種商業目的我想要A,即第5行中的字母對應於一個單元格如果假設它是56,我想B。

圖2顯示了爲什麼我希望B代替excel列I,這是因爲如果我插入一列,我的Excel列信將改變,但對應的數字B中的邏輯列字母只保留在B中。 我可以使用代碼來獲取Excel列字母:

Public Function ColumnLetters(rInput As Range) As String 
ColumnLetters = Split(rInput.Address, "$") (1) 
End Function 

如果提取的列字母爲H,我需要的是在第5排它下面這是一個價值和等等。對於我它是B,等等。

我這樣做是爲了插入附加列,excel列的字母會改變,但它不會改變我的邏輯列字母。

請問有人可以幫忙嗎? image1image2

+0

你能想出一個例子,它不會改變你的邏輯列字母? – Vityata

+0

我不明白你想要實現什麼? –

+0

我想引用我的目標單元格列,所以我的數據總是可以通過對應於第5行的邏輯列字母來引用。即使我在我之前插入列,並且我在excel列中變爲J,我的字母B I第五排將完好無損。這就是爲什麼我試圖獲取我在第五行創建的列字母而不是excel列字母 –

回答

2

正如FDavidov說 - 你可以使用命名範圍實現這如果我們正確理解你的問題。

在下面顯示的示例中,我突出顯示了列A,並在Name Box(紅色正方形)中鍵入名稱RefThisColumn。我也選擇了A1單元格,並在Name Box中輸入RefThisCell

我可以在VBA中使用這些命名範圍,而無需更新引用。
插入移動我的命名範圍列到列E(綠色方塊)後,我跑了完全相同的代碼,並得到了完全相同的結果:
enter image description here

0

你只是想將列號轉換成一個字母,對嗎?

在您的Vba代碼上,使用Chr()。這會將您輸入的數字轉換爲字符。

如果你把Chr(65)它會返回「A」。你只需要現在添加你的計算來達到你想要的字母。

我不明白你想要什麼,但作爲一個例子,可以說col是你的列號變量。

Chr(64+col)將返回一個作爲第1列

不過,如果你想返回一個5列,你會調整它像Chr(60+col)

+0

我添加了圖片和說明。請參考我編輯的問題。我希望你現在就明白。 :( –