Получить ячейку Excel по строке NUMBER и столбцу LETTER - PullRequest
3 голосов
/ 20 июля 2011

В VB.NET, используя Interop.Excel, мне нужно получить доступ к ячейке на основе номера строки и буквы столбца.Я попытал счастья с ...

pages.title = DirectCast(wksht.Cells(rows, "D"), Excel.Range).Value

Поскольку параметры принимали тип объекта, я подумал, что это может сработать, но не повезло.Я также думал о перечислении каждой буквы в число, но столбцы в электронной таблице не так, как обычно.Это означает, что они не

ABCDEFG

Они на самом деле ...

ABCDET AZ

Я не знаю, имеет ли это значениев нумерации столбцов.Вопрос должен быть очевидным, но, повторюсь, как получить ячейку на основе номера строки и буквы столбца?

Ответы [ 3 ]

7 голосов
/ 20 июля 2011

Для одной ячейки:

wksht.Range(colLetter + rows)

ссылка MSDN

3 голосов
/ 20 июля 2011

Используйте значения ASCII символов в качестве "базовой" системы

"A" = 1 = ASCII-значение A - ASCII-значение A + 1

"AA"= 27 = (ASCII-значение A - ASCII-значение A +1) * 26 + (ASCII-значение A - ASCII-значение A +1)

" BA "= (ASCII-значение B - ASCIIзначение A + 1) * 26 + (ASCII-значение A - ASCII-значение A + 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
2 голосов
/ 20 июля 2011

Попробуйте:

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") дает горизонтальное смещение оттуда на основе буквы (ей) столбца.


РЕДАКТИРОВАТЬ : См. Ответ Ланса Робертса для более простого решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...