在VB.NET中,使用Interop.Excel,我需要根据行号和列字母访问一个单元格。我试着运气......
pages.title = DirectCast(wksht.Cells(rows, "D"), Excel.Range).Value
由于参数采用了类型对象,我想也许这样可行,但没有运气。我还想过将每个字母枚举为一个数字,但电子表格中的列并不正常。意思是,他们不是
A B C D E F G
他们实际上是......
A B C D E T AZ
我不知道这是否会对列的编号产生影响。问题应该是显而易见的,但重申一下,如何根据行号和列字母获取单元格?
答案 0 :(得分:7)
答案 1 :(得分:3)
将字符的ASCII值用作“基础”系统
“A”= 1 = A的ASCII值 - A + 1的ASCII值
“AA”= 27 =(A的ASCII值 - A +的ASCII值)* 26 +(A的ASCII值 - A +1的ASCII值)
“BA”=(B的ASCII值 - A + 1的ASCII值)* 26 +(A的ASCII值 - A + 1的ASCII值)
等,乘以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
答案 2 :(得分:2)
试试这个:
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对更简单解决方案的回答。