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!
Содержание
- Vba excel столбец по имени
- Номер столбца Excel из имени столбца
- VBA Колонны — Как использовать свойство столбцов в Excel VBA? (Примеры)
- Свойство столбцов Excel VBA
- Как использовать свойство столбцов в Excel VBA?
- Пример # 1 — Выбор столбца с использованием свойства столбцов VBA
- Пример № 2 — столбцы VBA как функция рабочего листа
- Пример # 3 — свойство столбцов VBA для выбора диапазона ячеек
- То, что нужно запомнить
- Рекомендуемые статьи
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. Вы также можете просмотреть наши другие предлагаемые статьи —
- VBA Вставить столбец
- Группировка столбцов в Excel
- VBA Удалить столбец
- Переключение столбцов в Excel
Источник
Medison1 5 / 2 / 1 Регистрация: 04.03.2012 Сообщений: 28 |
||||||||
1 |
||||||||
10.03.2018, 05:32. Показов 37811. Ответов 5 Метки нет (Все метки)
Добрый день.
Последняя строка, мне не нравится, т.к. при добавлении столбца в начало таблицы. Формула «поедет». Т.к. нужно будет брать уже 4ый столбец и т.д. Что-то вроде:
0 |
1234 / 671 / 239 Регистрация: 22.12.2015 Сообщений: 2,093 |
|
10.03.2018, 08:09 |
2 |
Сообщение было отмечено 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 |
|||
Так формула не «поедет» :
Иными словами R -становится указателем на на искомый диапазон.
0 |
Medison1 5 / 2 / 1 Регистрация: 04.03.2012 Сообщений: 28 |
||||||||
10.03.2018, 12:51 [ТС] |
4 |
|||||||
Dinoxromniy, Пробовал еще так:
Ошибка: #13 Type mismatch Вот этот вариант оказался рабочим. Не нужно было писать перед этим «WT.»
ji2n,
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||||||
10.03.2018, 13:31 |
5 |
|||||||
Medison1, весь столбец (включая заголовок и ячейку из строки итогов)
Только столбец с данными например так
Хорошая шпаргалка по тому, как обращаться к разным частям умной таблицы: https://www.thespreadsheetguru… cel-tables
2 |
1234 / 671 / 239 Регистрация: 22.12.2015 Сообщений: 2,093 |
|
10.03.2018, 13:57 |
6 |
по какой-то причине не работают. Да, разумеется в обоих случаях должно быть 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-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (6)
Оценок пока нет. Оцените первым!