按行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。