Как по имени столбца vba excel

While you were looking for a VBA solution, this was my top result on google when looking for a formula solution, so I’ll add this for anyone who came here for that like I did:

Excel formula to return the number from a column letter (From @A. Klomp’s comment above), where cell A1 holds your column letter(s):

=column(indirect(A1&»1″))

As the indirect function is volatile, it recalculates whenever any cell is changed, so if you have a lot of these it could slow down your workbook. Consider another solution, such as the ‘code’ function, which gives you the number for an ASCII character, starting with ‘A’ at 65. Note that to do this you would need to check how many digits are in the column name, and alter the result depending on ‘A’, ‘BB’, or ‘CCC’.

Excel formula to return the column letter from a number (From this previous question How to convert a column number (eg. 127) into an excel column (eg. AA), answered by @Ian), where A1 holds your column number:

=substitute(address(1,A1,4),»1″,»»)

Note that both of these methods work regardless of how many letters are in the column name.

Hope this helps someone else.

I am trying to copy specific columns by the column name and copy it to a new worksheet. I found this code online but I would like to have the cloumn names in the vba code instead of having a textbox pop up and me writing each one in at a time.

Sub copycolumns()

 Dim strColRng As String
 Dim strSheetName As String
 Dim intNoofCols As Integer
 Dim strColName() As String
 Dim strCurSheetName As String

 'To get the No. of Columns Available to Search
 intRng = 65

 'To get the No. of Columns to copy and paste
 intNoofCols = 10

 'To set size of the Array
 ReDim Preserve strColName(intNoofCols)
 For i = 0 To intNoofCols - 1
     'To Get the Column Name to Search
    strColName(i) = Array(Array("POS", "POS"), Array("Product Code", "Product Code"), Array("Product Name", "Product Name"), Array("Currency", "Currency"), Array("Nominal Source", "Nominal Source"), Array("Maturity Date", "Maturity Date"), Array("Nominal USD", "Nominal USD"), Array("BV Source", "BV Source"), Array("ISIN", "ISIN"), Array("Daily NII USD", "Daily NII USD"))
   ' InputBox("Enter the Column Name to Copy?", "Column Name")


 Next

'To get the Sheet Name to paste the content
 strSheetName = InputBox("Enter the Sheet Name to Paste?", "Sheet Name")

 'To store the Current Sheet Name where to copy

 strCurSheetName = ActiveSheet.Name

 For j = 0 To intNoofCols - 1 'To get the Column Names from the Array

       For i = 1 To intRng

             'To Select the Sheet which column to copy
             Sheets(strCurSheetName).Select

               'Store the Cell Value
             strVal = Cells(1, i)

             'Check the Value with the User given column name
             If UCase(strVal) = UCase(Trim(strColName(j))) Then

                     'Select and Copy
                      Cells(1, i).Select
                      Range(Selection, Selection.End(xlDown)).Select
                      Selection.Copy

                     'Select and Paste
                     Sheets(strSheetName).Select
                     Cells(1, j + 1).Select
                     Range(Selection, Selection.End(xlDown)).PasteSpecial xlPasteValues
                '     ActiveSheet.Paste
              End If
       Next
  Next

I appreciate any help. Thanks!

Содержание

  1. Vba excel столбец по имени
  2. Номер столбца Excel из имени столбца
  3. VBA Колонны — Как использовать свойство столбцов в Excel VBA? (Примеры)
  4. Свойство столбцов Excel VBA
  5. Как использовать свойство столбцов в Excel VBA?
  6. Пример # 1 — Выбор столбца с использованием свойства столбцов VBA
  7. Пример № 2 — столбцы VBA как функция рабочего листа
  8. Пример # 3 — свойство столбцов VBA для выбора диапазона ячеек
  9. То, что нужно запомнить
  10. Рекомендуемые статьи

Vba excel столбец по имени

Добрый день уважаемые форумчане!

Опыт написания каких либо макросов на VBA у меня очень маленький (редко возникает необходимость) по этому сильно не пинайте.

Вопрос вот в чем. Надо перенести в пределах одной книги с одного листа (таблицы) на другой некие данные.
Понятное дело пользователь может наплодить в таблице своих столбцов и тогда жесткая привязка к определенным ячейкам сломает всю таблицу.
Выход из положения вижу один. Присвоил диапазонам ячеек в столбце определенные имена. Но вот как воспользоваться никак не могу понять.
Сейчас делаю вот так:

На листе «График» есть столбец, в нем части ячеек из таблицы присвоено имя (Например «Расход» =График!$Y$9:$Y$1895).
Как вытащить из этого имени номер/имя столбца?
[moder]Прочитайте Правила форума
Приложите пример в Excel

Добрый день уважаемые форумчане!

Опыт написания каких либо макросов на VBA у меня очень маленький (редко возникает необходимость) по этому сильно не пинайте.

Вопрос вот в чем. Надо перенести в пределах одной книги с одного листа (таблицы) на другой некие данные.
Понятное дело пользователь может наплодить в таблице своих столбцов и тогда жесткая привязка к определенным ячейкам сломает всю таблицу.
Выход из положения вижу один. Присвоил диапазонам ячеек в столбце определенные имена. Но вот как воспользоваться никак не могу понять.
Сейчас делаю вот так:

На листе «График» есть столбец, в нем части ячеек из таблицы присвоено имя (Например «Расход» =График!$Y$9:$Y$1895).
Как вытащить из этого имени номер/имя столбца?
[moder]Прочитайте Правила форума
Приложите пример в Excel keeper

Сообщение Добрый день уважаемые форумчане!

Опыт написания каких либо макросов на VBA у меня очень маленький (редко возникает необходимость) по этому сильно не пинайте.

Вопрос вот в чем. Надо перенести в пределах одной книги с одного листа (таблицы) на другой некие данные.
Понятное дело пользователь может наплодить в таблице своих столбцов и тогда жесткая привязка к определенным ячейкам сломает всю таблицу.
Выход из положения вижу один. Присвоил диапазонам ячеек в столбце определенные имена. Но вот как воспользоваться никак не могу понять.
Сейчас делаю вот так:

На листе «График» есть столбец, в нем части ячеек из таблицы присвоено имя (Например «Расход» =График!$Y$9:$Y$1895).
Как вытащить из этого имени номер/имя столбца?
[moder]Прочитайте Правила форума
Приложите пример в Excel Автор — keeper
Дата добавления — 22.01.2015 в 09:24

Источник

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

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

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

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

Изменить. Также включите обратное, что вы хотите

Номер столбца для имени столбца

FOLLOW UP

Как если бы у меня было поле зарплаты на самом верху, скажем, в ячейке C (1,1) теперь, если я изменю файл и сдвиг столбца зарплаты в какое-то другое место скажу F (1,1), тогда мне придется изменить код, поэтому я хочу, чтобы код проверялся на зарплату и находил номер столбца, а затем выполнял остальные операции в соответствии с этим номером столбца.

В таком случае я бы рекомендовал использовать .FIND См. этот пример ниже

Пока вы искали решение VBA, это был мой лучший результат в google при поиске решения формулы, поэтому я добавлю это для всех, кто пришел сюда для этого, как я:

Формула Excel возвращает номер из столбца (из комментария @A. Klomp выше), где ячейка A1 содержит ваши столбцовые письма:

Поскольку косвенная функция является изменчивой, она пересчитывается всякий раз, когда изменяется какая-либо ячейка, поэтому, если у вас их много, это может замедлить работу вашей книги. Рассмотрим другое решение, такое как функция “code”, которая дает вам номер для символа ASCII, начиная с “A” в 65. Обратите внимание, что для этого вам нужно будет проверить, сколько цифр указано в имени столбца, и изменить результат в зависимости от “A”, “BB” или “CCC”.

Формула Excel, чтобы вернуть букву столбца из числа (из этого предыдущего вопроса Как преобразовать номер столбца (например, 127) в столбец Excel (например, AA), на который отвечает @Ian), где A1 содержит номер столбца:

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

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

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

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

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

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

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

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

На основании ответа Анастасии. Я думаю, что это самая короткая команда VBA:

Предостережение: единственное условие для работы этого кода – активная рабочая таблица, поскольку Columns эквивалентны ActiveSheet.Columns . 😉

Здесь чисто решение VBA, потому что Excel может содержать соединенные ячейки:

По сути, эта функция работает так же, как любая функция Hex to Dec, за исключением того, что она принимает только алфавитные символы (A = 1, B = 2,…).
Самый правый символ считается одинарным, каждый символ слева в 26 раз больше символа справа от него (что составляет AA = 27 [1 + 26], AAA = 703 [1 + 26 + 676]).
Использование UCase() делает эту функцию без учета регистра.

Источник

VBA Колонны — Как использовать свойство столбцов в Excel VBA? (Примеры)

Свойство столбцов Excel VBA

Нам всем хорошо известен тот факт, что рабочая таблица Excel организована в столбцы и строки, и каждое пересечение строк и столбцов рассматривается как ячейка. Всякий раз, когда мы хотим сослаться на ячейку в Excel через VBA, мы можем использовать свойства Range или Cells. Что если мы хотим сослаться на столбцы из таблицы Excel? Есть ли какая-либо функция, которую мы можем использовать для ссылки на то же самое? Ответ большой ДА!

Да, в VBA есть свойство под названием «Столбцы», которое помогает вам ссылаться, а также возвращать столбец из данной таблицы Excel. Мы можем ссылаться на любой столбец на листе, используя это свойство, и можем манипулировать им.

Синтаксис столбцов VBA:

Синтаксис для свойства столбцов VBA показан ниже:

  • RowIndex — представляет номер строки, из которой должны быть получены ячейки.
  • ColumnIndex — представляет номер столбца, который находится на пересечении с соответствующими строками и ячейками.

Очевидно, какой столбец необходимо включить / использовать для дальнейшего разбирательства, используется этими двумя аргументами. Оба являются необязательными и, если они не предоставлены по умолчанию, будут рассматриваться как первая строка и первый столбец.

Как использовать свойство столбцов в Excel VBA?

Ниже приведены различные примеры использования свойства столбцов в Excel с использованием кода VBA.

Вы можете скачать этот шаблон Excel столбцов VBA здесь — Шаблон Excel столбцов VBA

Пример # 1 — Выбор столбца с использованием свойства столбцов VBA

Мы увидим, как можно выбрать столбец на листе, используя свойство VBA Columns. Для этого выполните следующие шаги:

Шаг 1: Вставьте новый модуль в Visual Basic Editor (VBE), где вы можете написать блок кодов. Нажмите на вкладку « Вставка » и выберите « Модуль» на панели VBA.

Шаг 2: Определите новую подпроцедуру, которая может содержать макрос, который вы собираетесь написать.

Код:

Шаг 3: Используйте свойство Columns.Select из VBA, чтобы выбрать первый столбец на рабочем листе. Это на самом деле по-разному, вы можете использовать Columns (1). Выберите изначально. Смотрите скриншот ниже:

Код:

Свойство Columns в этом небольшом фрагменте кода указывает номер столбца, а свойство Select позволяет VBA выбирать столбец. Поэтому в этом коде столбец 1 выбран на основе заданных входных данных.

Шаг 4: Нажмите F5 или нажмите кнопку «Выполнить», чтобы запустить этот код и увидеть результат. Вы можете видеть, что столбец 1 будет выбран в вашем листе Excel.

Это один из способов использования свойства столбцов для выбора столбца на листе. Мы также можем использовать имена столбцов вместо номеров столбцов в коде. Ниже код также дает тот же результат.

Код:

Пример № 2 — столбцы VBA как функция рабочего листа

Если мы используем свойство Columns без какого-либо спецификатора, оно будет работать только на всех активных рабочих листах, присутствующих в рабочей книге. Однако, чтобы сделать код более безопасным, мы можем использовать спецификатор рабочего листа со столбцами и сделать наш код более безопасным. Следуйте инструкциям ниже:

Шаг 1: Определите новую подпроцедуру, которая может содержать макрос под модулем.

Код:

Теперь мы будем использовать свойство Worksheets.Columns для выбора столбца из указанного листа.

Шаг 2: Начните вводить квалификатор Worksheets под данным макросом. Этому классификатору нужно имя листа, укажите имя листа как « Пример 2 » (не забудьте добавить скобки). Это позволит системе получить доступ к рабочему листу с именем Пример 2 из текущей рабочей книги.

Код:

Шаг 3: Теперь используйте свойство Columns, которое позволит вам выполнять различные операции над столбцами на выбранном листе. Я выберу 4- й столбец. Я могу выбрать его, написав индекс как 4 или указав алфавит столбца «D».

Код:

На данный момент мы выбрали рабочий лист с именем Пример 2 и получили доступ к столбцу D из него. Теперь нам нужно выполнить некоторые операции со столбцом, к которому осуществляется доступ.

Шаг 4. Используйте свойство Выбрать после столбцов, чтобы выбрать столбец, указанный в текущем рабочем листе.

Код:

Шаг 5: Запустите код, нажав клавишу F5 или нажав кнопку воспроизведения.

Пример # 3 — свойство столбцов VBA для выбора диапазона ячеек

Предположим, мы хотим выбрать диапазон ячеек в разных столбцах. Мы можем комбинировать свойство Range и Columns для этого. Следуйте инструкциям ниже:

Предположим, что у нас есть данные, распределенные между B1 и D4 на листе, как показано ниже:

Шаг 1: Определите новую подпроцедуру для хранения макроса.

Код:

Шаг 2: Используйте квалификатор « Рабочие листы», чтобы получить доступ к рабочему листу с именем « Пример 3 », где у нас есть данные, показанные на снимке экрана выше.

Код:

Шаг 3: Используйте свойство Range, чтобы установить диапазон для этого кода от B1 до D4. Используйте следующий диапазон кодов («B1: D4») для того же.

Код:

Шаг 4: Используйте свойство Columns для доступа ко второму столбцу из выбора. Используйте код как Столбцы (2) для доступа ко второму столбцу из доступного диапазона.

Код:

Шаг 5: Теперь самая важная часть. Мы получили доступ к рабочему листу, диапазону и столбцу. Однако, чтобы выбрать доступный контент, нам нужно использовать свойство Select в VBA. Смотрите скриншот ниже для макета кода.

Код:

Шаг 6: Запустите этот код, нажав F5 или кнопку Run, и посмотрите результат.

Вы можете видеть, что код выбрал Столбец C на листе Excel, хотя вы установили значение столбца как 2 (что означает второй столбец). Причина этого в том, что мы выбрали диапазон B1: D4 в этом коде. Который состоит из трех столбцов B, C, D. Во время выполнения столбец B считается первым столбцом, C — вторым, а D — третьим столбцом вместо их фактических положений. Функция диапазона уменьшила область действия этой функции только для B1: D4.

То, что нужно запомнить

  • Мы не видим список свойств IntelliSense, когда работаем над столбцами VBA.
  • Это свойство относится к категории свойства листа в VBA.

Рекомендуемые статьи

Это руководство к колонкам VBA. Здесь мы обсудим, как использовать свойство столбцов в Excel с помощью кода VBA, а также на практических примерах и загружаемом шаблоне Excel. Вы также можете просмотреть наши другие предлагаемые статьи —

  1. VBA Вставить столбец
  2. Группировка столбцов в Excel
  3. VBA Удалить столбец
  4. Переключение столбцов в Excel

Источник

Medison1

5 / 2 / 1

Регистрация: 04.03.2012

Сообщений: 28

1

10.03.2018, 05:32. Показов 37811. Ответов 5

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Добрый день.
На листе имеется умная таблица с заголовками.
При работе с ней макросами, я обращаюсь к ней так:

Visual Basic
1
2
3
4
WTName = "UT"
Set WS = ThisWorkbook.Worksheets("Лист1")
Set WT = WS.ListObjects(WTName)
WT.Range(i1, 3)

Последняя строка, мне не нравится, т.к. при добавлении столбца в начало таблицы. Формула «поедет». Т.к. нужно будет брать уже 4ый столбец и т.д.
Можно ли строку задавать переменной, а столбец задавать так как он назван в самой таблице? Чтобы не быть привязанным к порядку столбцов в таблице.

Что-то вроде:

Visual Basic
1
WT.Range(i1, WTName & "[Столбец3]")



0



1234 / 671 / 239

Регистрация: 22.12.2015

Сообщений: 2,093

10.03.2018, 08:09

2

Лучший ответ Сообщение было отмечено Medison1 как решение

Решение

Цитата
Сообщение от Medison1
Посмотреть сообщение

WT.Range(i1, WTName & «[Столбец3]»)

Полагаю, range возвращает обычный диапазон, для которого доступно свойство cells. Не очень понял, что такое i3 — если это число, равное номеру строки, то код будет (например, что-бы выделить ячейку)

Код

WT.Range(WTName & "[Столбец3]").Cells(i1,1).Select

или

Код

WT.Range(WTName & "[Столбец3]").Rows.Item(i1).Select



1



ji2n

39 / 37 / 13

Регистрация: 08.10.2016

Сообщений: 171

10.03.2018, 12:31

3

Так формула не «поедет» :

Visual Basic
1
2
3
Dim R As Range
'...
Set R =WT.Range(i1, 3)

Иными словами R -становится указателем на на искомый диапазон.
Дальше просто работаем с ней как заблагорассудится



0



Medison1

5 / 2 / 1

Регистрация: 04.03.2012

Сообщений: 28

10.03.2018, 12:51

 [ТС]

4

Dinoxromniy,
Хорошие варианты визуально, но по какой-то причине не работают.
Ошибка: #5 invalid procedure call or argument

Пробовал еще так:

Visual Basic
1
WT.Range(WTName & "[Столбец3]",i1)

Ошибка: #13 Type mismatch

Вот этот вариант оказался рабочим. Не нужно было писать перед этим «WT.»

Visual Basic
1
String1 = Range(WTName & "[Столбец3]").Cells(i1,1)

ji2n,
Спасибо. Но немного не то. В данном случае искомый диапазон зависит от константы «3». А мне необходимо уйти от этой константы к названию столбца умной таблицы. Т.к. столбцы могут изменять порядок и в какой-то момент нужный столбец будет к примеру не 3им, а 4ым или 5ым и т.д.



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

10.03.2018, 13:31

5

Medison1, весь столбец (включая заголовок и ячейку из строки итогов)

Visual Basic
1
wt.listcolumns("заголовок_столбца").range

Только столбец с данными например так

Visual Basic
1
wt.ListColumns("заголовок_столбца").DataBodyRange

Хорошая шпаргалка по тому, как обращаться к разным частям умной таблицы: https://www.thespreadsheetguru… cel-tables



2



1234 / 671 / 239

Регистрация: 22.12.2015

Сообщений: 2,093

10.03.2018, 13:57

6

Цитата
Сообщение от Medison1
Посмотреть сообщение

по какой-то причине не работают.

Да, разумеется в обоих случаях должно быть WS вместо WT. Тут обращение происходит со стороны листа рабочей книги, а не через саму умную таблицу (последний случай смотрите у Казанский).



0



Предположим, у вас есть большой рабочий лист, содержащий несколько столбцов, и теперь вы хотите выбрать конкретный столбец на основе имени заголовка столбца. Чтобы найти столбец за столбцом на большом листе, потребуется много времени, в этой статье я представлю быстрый метод решения этой задачи в Excel.

Выберите столбец на основе имени заголовка столбца с кодом VBA


Выберите столбец на основе имени заголовка столбца с кодом VBA

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

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

Код VBA: выберите столбец на основе имени заголовка столбца:

Sub FindAddressColumn()
'Updateby Extendoffcie
    Dim xRg As Range
    Dim xRgUni As Range
    Dim xFirstAddress As String
    Dim xStr As String
    On Error Resume Next
    xStr = "Name"
    Set xRg = Range("A1:P1").Find(xStr, , xlValues, xlWhole, , , True)
    If Not xRg Is Nothing Then
        xFirstAddress = xRg.Address
        Do
            Set xRg = Range("A1:P1").FindNext(xRg)
            If xRgUni Is Nothing Then
                Set xRgUni = xRg
            Else
                Set xRgUni = Application.Union(xRgUni, xRg)
            End If
        Loop While (Not xRg Is Nothing) And (xRg.Address <> xFirstAddress)
    End If
    xRgUni.EntireColumn.Select
End Sub

Внимание: В приведенном выше коде A1: P1 — это диапазон заголовков, из которых вы хотите выбрать столбцы, и «Имя и фамилия»В сценарии xStr = «Имя» — это имя заголовка, на основе которого вы хотите выбрать столбцы. Пожалуйста, измените их по своему усмотрению.

3. После копирования и вставки кода нажмите F5 ключ для запуска этого кода, и все столбцы с определенным именем заголовка были выбраны сразу, см. снимок экрана:


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (6)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • Как по имени листа excel получить лист в 1с
  • Как по другому называется если то в excel
  • Как по дате определить день недели в excel по дате
  • Как по дате выбирать данные excel
  • Как по графику в excel определить координаты точки на графике