Как получить номер столбца из имени столбца в Excel с помощью макроса Excel?
Думаю, ты хочешь этого?
Имя столбца для столбца
Sub Sample()
ColName = "C"
Debug.Print Range(ColName & 1).Column
End Sub
Изменить. Также включите обратное, что вы хотите
Номер столбца для имени столбца
Sub Sample()
ColNo = 3
Debug.Print Split(Cells(, ColNo).Address, "$")(1)
End Sub
FOLLOW UP
Как если бы у меня было поле зарплаты на самом верху, скажем, в ячейке C (1,1) теперь, если я изменю файл и сдвиг столбца зарплаты в какое-то другое место скажу F (1,1), тогда мне придется изменить код, поэтому я хочу, чтобы код проверялся на зарплату и находил номер столбца, а затем выполнял остальные операции в соответствии с этим номером столбца.
В таком случае я бы рекомендовал использовать .FIND
См. этот пример ниже
Option Explicit
Sub Sample()
Dim strSearch As String
Dim aCell As Range
strSearch = "Salary"
Set aCell = Sheet1.Rows(1).Find(What:=strSearch, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then
MsgBox "Value Found in Cell " & aCell.Address & _
" and the Cell Column Number is " & aCell.Column
End If
End Sub
СНАПШОТ
Пока вы искали решение VBA, это был мой лучший результат в google при поиске решения формулы, поэтому я добавлю это для всех, кто пришел сюда для этого, как я:
Формула Excel возвращает номер из столбца (из комментария @A. Klomp выше), где ячейка A1 содержит ваши столбцовые письма:
= столбец (непрямой (А1 & "1" ))
Поскольку косвенная функция является изменчивой, она пересчитывается всякий раз, когда изменяется какая-либо ячейка, поэтому, если у вас их много, это может замедлить работу вашей книги. Рассмотрим другое решение, такое как функция "code", которая дает вам номер для символа ASCII, начиная с "A" в 65. Обратите внимание, что для этого вам нужно будет проверить, сколько цифр указано в имени столбца, и изменить результат в зависимости от "A", "BB" или "CCC".
Формула Excel, чтобы вернуть букву столбца из числа (из этого предыдущего вопроса Как преобразовать номер столбца (например, 127) в столбец Excel (например, AA), на который отвечает @Ian), где A1 содержит номер столбца:
= запасной (адрес (1, A1,4), "1", "")
Обратите внимание, что оба этих метода работают независимо от количества букв в имени столбца.
Надеюсь, это поможет кому-то еще.
Запишите и запустите следующий код в окне Immediate Window
?cells(,"type the column name here").column
Например, ?cells(,"BYL").column
вернется в 2014 году. Код нечувствителен к регистру, поэтому вы можете написать ?cells(,"BYL").column
, а вывод все равно будет таким же.
Вы можете пропустить все это и просто поместить свои данные в таблицу. Затем обратитесь к таблице и заголовку, и она будет полностью динамичной. Я знаю, что это с 3 лет назад, но кто-то все еще может найти это полезным.
Пример кода:
Activesheet.Range("TableName[ColumnName]").Copy
Вы также можете использовать:
activesheet.listobjects("TableName[ColumnName]").Copy
Вы даже можете использовать эту систему ссылок в формулах рабочих таблиц. Это очень динамично.
Надеюсь, это поможет!
На мой взгляд, самый простой способ получить номер столбца: Sub Sample()
ColName = ActiveCell.Column
MsgBox ColName
End Sub