Как перейти от строки, столбца к Excel A1? - PullRequest
8 голосов
/ 12 июля 2009

С учетом строки и столбца (как долго), как вы можете определить нотацию электронной таблицы, используя VBA в Excel (2007):

например:.

(R, C) = (1, 1) -> "A1"
(R, C) = (2, 1) -> "A2"
(R, C) = (2, 2) -> "B2"

Таким образом, если у вас была функция:

Function CellRef(R As Long, C As Long) As String

, который предоставил эту функциональность, вы могли бы сделать что-то вроде:

Worksheet.Range(CellRef(R1, C1) + ":" + CellRef(R2, C2)).Copy

Небольшая предыстория, на случай, если это неправильный подход: цель этого в том, чтобы у меня был мастер-лист, который описывает другие таблицы в таблице:

WorksheetName, Range etc....

Этот мастер-лист управляет преобразованиями на листе, но значение «Диапазон» явно в нотации Excel для удобного последующего использования в ссылках на диапазон. Однако подпрограмма для управления этой таблицей, создания отчетов об исключениях и обеспечения согласованности действительно получает данные из других листов в строке и столбце, поэтому, например, она получает строку и столбец, в которых она знает, что что-то начинается и заканчивается.

Вот функция, с которой я закончил:

Private Function CellRef(R As Long, C As Long) As String
    CellRef = vbNullString
    On Error GoTo HandleError:
    CellRef = Replace(Mid(Application.ConvertFormula("=R" & R & "C" & C, XlReferenceStyle.xlR1C1, XlReferenceStyle.xlA1), 2), "$", "")
    Exit Function
HandleError:
End Function

Ответы [ 4 ]

4 голосов
/ 12 июля 2009

Может быть это это то, что вы ищете?

3 голосов
/ 12 июля 2009

Номера столбцов в буквы

Колонка Буквы в цифры

Хороший материал в комментариях

1 голос
/ 12 марта 2014

http://support.microsoft.com/kb/833402 - решение Microsoft для преобразования цифр в буквы (сложная часть преобразования из 1,1 в А1). Это на самом деле имеет возможность работать в других приложениях, отличных от Excel, поскольку основывается на базовом VBA.

Затем вы добавляете:

' Converts row and column index to Excel notation, ie (3, 2) to B3.
Private Function generateExcelNotation(row As Integer, column As Integer) As String
    ' error handling of your choice, I go for returning an empty string
    If (row < 1 Or column < 1) Then
        generateExcelNotation = ""
        Exit Function
    End If
    generateExcelNotation = ConvertToLetter(column) & row
End Function
0 голосов
/ 18 января 2019

Выражение 'rngTemp.Address (False, False,,, .Cells (1, 1))' будет отображать адрес диапазона rngTemp в нотации A1, который не содержит $ s для обозначения абсолютного адреса. Чтобы получить абсолютный адрес, замените «False, False» на «,».

...