Note: The other languages of the website are Google-translated. Back to English

 Как выбрать столбец на основе заголовка столбца в Excel?

Предположим, у вас есть большой рабочий лист, содержащий несколько столбцов, и теперь вы хотите выбрать конкретный столбец на основе имени заголовка столбца. Чтобы найти столбец за столбцом на большом листе, потребуется много времени, в этой статье я представлю быстрый метод решения этой задачи в 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)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Это здорово, но что, если я хочу скопировать, скажем, CustomerName, OrderNumber, OrderDate, FulfillmentDate, OrderStatus из Sheet1 со многими другими столбцами.
Как указать только те столбцы, которые необходимо скопировать на другой лист? Кажется, это указывает только один столбец.
Я пробовал некоторые вещи, но проблема заключается в том, что столбцы не обязательно находятся в том же порядке на исходном листе. Исходные данные в Sheet1 вставляются из буфера обмена Windows на лист Excel.

Это может быть CustomerName, OrderDate, OrderNumber, OrderStatusm FulfillmentDate или какой-либо другой заказ.

Мне нужно, чтобы они были скопированы на новый лист в определенном порядке, так как на Листе2 есть формулы, которые применяются к тому, что копируется с Листа1 на Лист2.

Кроме смещения столбцов после вставки из буфера обмена Windows, я не могу этого понять.

Пожалуйста, помогите, если это возможно.

Тем не менее, большое спасибо за вышеизложенное.
Этот комментарий был сведен к минимуму модератором на сайте
Dim xRg как диапазон
Dim xRgUni как диапазон
Dim xFirstAddress как строка
Dim xStr как строка

Объявляются ли переменные.

Следовательно, чтобы снова использовать приведенный выше код для другого столбца, вам придется объявить новые переменные.

Dim xRg2 как диапазон
Dim xRgUni2 как диапазон
Dim xFirstAddress2 как строка
Dim xStr2 как строка

И замените каждый экземпляр xRg на xRg2 в коде и т. Д. Имеет ли это смысл?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, выглядит отличная работа. Но я получаю сообщение об ошибке компиляции: аргумент не является обязательным при выделении «. Union». Что я должен делать?
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо - сначала вроде сработало, но потом я заметил, что он не включал первый найденный столбец - он начинался со второго и так далее.

Что объяснимо: два раза выставляешь xRg, а первый не включаешь.

ТБХ: сначала я думал, что это работает нормально, но потом появилась эта «ошибка», и мне пришлось выяснить, почему...

Я исправил это следующим образом: (в Excel комментарии станут зелеными и покажут мои правки: '***)



Sub FindAddressColumn ()

'Обновление от Extendoffcie

Dim xRg как диапазон

Dim xRgUni как диапазон

Dim xFirstAddress как строка

Dim xStr как строка

On Error Resume Next
xStr = "Имя"
Установите xRg = Range("A1:P1").Find(xStr, , xlValues, xlPart, , , True)

Если не xRg - ничто, то

xFirstAddress = xRg.Address

Do

Если xRgUni ничто, то

Установите xRgUni = Range(xFirstAddress) '*** Используя первый найденный диапазон

Еще

Установить xRgUni = Application.Union(xRgUni, xRg)

End If



Установить xRg = Range("A1:P1").FindNext(xRg) '*** Теперь ищем вторые/следующие



Цикл while (Not xRg Is Nothing) и (xRg.Address <> xFirstAddress)

End If

xRgUni.EntireColumn.Select

End Sub




Теперь это работает для меня, но я надеюсь узнать от вас, если я что-то упустил.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Можете ли вы предложить макрос для проблемы, упомянутой ниже Шоном
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо, что спасли мой день!
Здесь еще нет комментариев
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL