Номер столбца Excel из имени столбца

55

Как получить номер столбца из имени столбца в Excel с помощью макроса Excel?

  • 1
    взгляните на этот вопрос: stackoverflow.com/q/22708/390819 Там тоже есть решение VBA
  • 1
    Название столбца как в письме или как в заголовке?
Показать ещё 2 комментария
Теги:
excel-vba
excel

5 ответов

141
Лучший ответ

Думаю, ты хочешь этого?

Имя столбца для столбца

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

СНАПШОТ

Изображение 3745

  • 2
    +1 Отличный взгляд на детали, как обычно :)
  • 0
    например, если у меня есть поле зарплаты в самом верху, скажем, теперь в ячейке C (1,1), теперь, если я изменю файл и переместу столбец зарплаты в другое место, скажем, F (1,1), тогда мне придется изменить код так, я хочу, чтобы код проверял зарплату и находил номер столбца, а затем выполнял остальные операции в соответствии с этим номером столбца.
Показать ещё 6 комментариев
5

Пока вы искали решение 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", "")

Обратите внимание, что оба этих метода работают независимо от количества букв в имени столбца.

Надеюсь, это поможет кому-то еще.

  • 0
    @ExcelHero Вы упускаете суть вышесказанного - в моих решениях ячейка A1 содержит столбец Буква / Число. Ваше решение жестко кодирует решение для преобразования «А» в 1 или 1 в «А». Моя версия просто показывает, как сделать это динамически (хотя, если вы хотите жестко закодировать, да, это тоже возможно). Пожалуйста, войдите и попробуйте сами, так как я подтвердил, что они работают.
0

Запишите и запустите следующий код в окне Immediate Window

?cells(,"type the column name here").column

Например, ?cells(,"BYL").column вернется в 2014 году. Код нечувствителен к регистру, поэтому вы можете написать ?cells(,"BYL").column, а вывод все равно будет таким же.

0

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

Пример кода:

Activesheet.Range("TableName[ColumnName]").Copy

Вы также можете использовать:

activesheet.listobjects("TableName[ColumnName]").Copy

Вы даже можете использовать эту систему ссылок в формулах рабочих таблиц. Это очень динамично.

Надеюсь, это поможет!

-1

На мой взгляд, самый простой способ получить номер столбца:
Sub Sample() ColName = ActiveCell.Column MsgBox ColName End Sub

Ещё вопросы

Сообщество Overcoder
Наверх
Меню