[英]How to use the column number to reference an Excel column instead of the column letter
[英]Get Excel Cell by row NUMBER and column LETTER
在 VB.NET 中,使用 Interop.Excel,我需要根據行號和列字母訪問一個單元格。 我試試運氣...
pages.title = DirectCast(wksht.Cells(rows, "D"), Excel.Range).Value
由於參數采用 object 類型,我認為這可能可行,但沒有運氣。 我還想過將每個字母枚舉為一個數字,但電子表格中的列並不正常。 意思是,他們不是
AB C DEFG
他們其實...
AB C DET AZ
我不知道這是否會影響列的編號。 這個問題應該很明顯,但只是重申一下,如何根據行號和列字母獲取單元格?
使用字符的 ASCII 值作為“基礎”系統
“A” = 1 = A 的 ASCII 值 - A 的 ASCII 值 + 1
"AA" = 27 = (A 的 ASCII 值 - A 的 ASCII 值 +1)* 26 + (A 的 ASCII 值 - A 的 ASCII 值 +1)
"BA" = (B 的 ASCII 值 - A 的 ASCII 值 + 1) * 26 + (A 的 ASCII 值 - A 的 ASCII 值 + 1)
等等,乘以 26 的(數字 -1)的冪
Function GetIndex(ByVal str As String) As Integer
Dim i As Integer
str = str.ToUpper()
GetIndex = 0
For i = str.Length - 1 To 0 Step -1
GetIndex = GetIndex + (26 ^ (str.Length - i - 1)) * (Asc(str(i)) - Asc("A") + 1)
Next
End Function
嘗試這個:
Dim oWorksheet as Worksheet : Set oWorksheet = ActiveSheet
Dim iRow As Integer : iRow = 10
Dim strColumn as String : strColumn = "AZ"
Dim oCell as Range
Set oCell = oWorksheet.Cells(iRow, 1).Range(strColumn & "1")
oWorksheet.Cells(iRow, 1)
為您提供所需行上的第一個單元格,並且.Range(strColumn & "1")
為您提供基於列字母的水平偏移量。
編輯:請參閱 Lance Roberts 的答案以獲得更簡單的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.