按行NUMBER和列LETTER获取Excel单元格
在VB.NET中,使用Interop.Excel,我需要访问基于行号和列字母的单元格。 我试着运气…
pages.title = DirectCast(wksht.Cells(rows, "D"), Excel.Range).Value
由于参数采取types对象,我想这可能会工作,但没有运气。 我也想过把每个字母都列举成一个数字,但是电子表格中的列是不正常的。 意思是,他们不是
ABCDEFG
他们其实是…
ABCDET AZ
我不知道这是否会影响列的编号。 这个问题应该是显而易见的,但只是重申一下,我怎么能得到一个基于行号和列字母的单元格?
对于单个单元格:
wksht.Range(colLetter + rows)
MSDN链接
使用字符的ASCII值作为“基本”系统
“A”= 1 = A的ASCII值 – A + 1的ASCII值
“AA”= 27 =(A的ASCII值 – A +1的ASCII值)* 26 +(A的ASCII值 – A + 1的ASCII值)
“BA”=(B的ASCII值 – A + 1的ASCII值)* 26 +(A的ASCII值 – A + 1的ASCII值)
(数字-1)的功率乘以26,
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")
会根据列字母为您提供一个水平偏移量。
编辑 :请参阅兰斯罗伯茨的答案更简单的解决scheme。