Excel vba выбирает ячейки по условию

Обновлено: 20.11.2024

невозможно выбрать ячейку, если этот конкретный рабочий лист не отображается/не активен??

Выбор отдельных ячеек

Если использование записи Range("An") неудобно, вместо этого можно использовать Cells(rows,columns).
Индексы строк и столбцов начинаются с 1 для Cells(row, column)
Также можно использовать диалоговое окно GoTo .

Приложение.Перейти

Этот метод аналогичен методу выбора, за исключением того, что диапазон передается в качестве параметра
Если диапазон находится на другом листе, этот лист будет выбран автоматически.
Переход – это метод, который заставляет Excel выбирать диапазон ячеек и активировать соответствующую книгу.
Он принимает необязательный параметр объекта (строка или диапазон).
Он также принимает необязательный второй параметр объекта, для которого можно установить значение True, чтобы указать, хотите ли вы Excel, чтобы прокрутить окно так, чтобы выделение оказалось в верхнем левом углу.

Также есть необязательный параметр прокрутки??
Следующая строка кода не разрешена.

Выбор диапазона (или нескольких ячеек)

Вы также можете использовать следующую аббревиатуру, хотя это не рекомендуется:

Выделение всего рабочего листа

Выбор другого листа

Следующая строка кода не будет работать, если в данный момент не выбран Sheet1.

Вы должны сначала выбрать рабочий лист, а затем выбрать диапазон.

Выбор с использованием текущего выбора

Использование объекта Selection выполняет операцию над текущими выделенными ячейками.
Если диапазон ячеек не был выбран до этой команды, используется активная ячейка.

Выбор с помощью активной ячейки

Часто используется ActiveCell, который относится к ячейке, выбранной в данный момент.
Вы также можете легко получить адрес активной ячейки.

Выбор CurrentRegion или UsedRange

Настройка свойства CurrentRegion состоит из прямоугольного блока ячеек, окруженного одной или несколькими пустыми строками или столбцами.
Используемый диапазон – это диапазон всех непустых ячеек.

Выбор с использованием относительных ссылок

Вы можете использовать свойство Range объекта Range для создания относительной ссылки на объект Range (например, Range("C3")).Range("B2") = D4).
Если вы используете Range ("A4".Cells(2,2)) для получения относительной ссылки немного быстрее использовать Range("A4")(2,2).

Выбор строк и столбцов

Выбор всех непустых

Эквиваленты нажатия клавиш

Запись макросов не записывает нажатия клавиш, которые вы используете для выбора диапазона ячеек.
Эта строка кода эквивалентна нажатию (Ctrl + Shift + 8).

Несколько выбранных диапазонов

Объект Range может состоять из нескольких отдельных диапазонов.
Большинство свойств и методов, ссылающихся на объект Range, учитывают только первую прямоугольную область диапазона.
Свойство Areas можно использовать для определить, содержит ли диапазон несколько областей

Excel фактически позволяет сделать несколько выделений одинаковыми.
Вы можете, удерживая нажатой клавишу Ctrl, щелкнуть ячейку "A1" пять раз.
Выделение будет состоять из пяти одинаковых областей.

Диалоговое окно «Перейти»

Если Type имеет значение xlCellTypeConstants или xlCellTypeFormulas, этот аргумент используется для определения того, какие типы ячеек следует включить в результат.
Эти значения можно сложить вместе, чтобы получить более одного типа.
Значение по умолчанию заключается в выборе всех констант или формул, независимо от их типа.

В Microsoft Excel вы можете выбирать ячейки в диапазоне либо вручную, либо с помощью простого кода Microsoft Visual Basic для приложений. В этой статье приведены примеры, которые можно использовать для выбора диапазона ячеек.

Дополнительная информация

Примеры выделения ячеек вручную

Чтобы вручную выбрать все данные в столбце, выберите первую ячейку и нажмите CTRL+SHIFT+СТРЕЛКА ВНИЗ.

Аналогичным образом, чтобы вручную выбрать строку и все столбцы, связанные с этой строкой, нажмите CTRL+SHIFT+СТРЕЛКА ВНИЗ+СТРЕЛКА ВПРАВО. Однако все данные должны быть непрерывными (то есть у вас не может быть пустых строк или столбцов). Кроме того, вы можете выбрать текущую область данных (непрерывные данные, без пустых строк или столбцов), выполнив следующие действия:

В меню "Правка" нажмите "Перейти".

В диалоговом окне "Перейти" нажмите "Специальный".

В диалоговом окне "Перейти к специальному" нажмите "Текущий регион", а затем нажмите
ОК.

Вы также можете выбрать этот диапазон, используя простой код Visual Basic для приложений.

Примечание. Если вы попытаетесь записать эту процедуру с помощью средства записи макросов, вы получите другие результаты.

Примеры использования кода Visual Basic для выбора ячеек в диапазоне

Microsoft предоставляет примеры программирования только для иллюстрации, без явных или подразумеваемых гарантий. Это включает, но не ограничивается, подразумеваемые гарантии товарного состояния или пригодности для конкретной цели.В этой статье предполагается, что вы знакомы с демонстрируемым языком программирования и инструментами, которые используются для создания и отладки процедур. Инженеры службы поддержки Майкрософт могут помочь объяснить функциональность конкретной процедуры, но они не будут изменять эти примеры, чтобы обеспечить дополнительную функциональность или создавать процедуры в соответствии с вашими конкретными требованиями. В следующих примерах кода Visual Basic показано, как выбирать разные диапазоны.

Если вы знаете начальную ячейку (в этом примере начальной ячейкой является ячейка C1) и хотите выбрать последнюю ячейку (в том же столбце), в которой есть данные, но не знаете этот адрес, используйте следующий код:

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

Если ваши данные начинаются в ячейке C1, но не являются смежными в этом столбце, используйте следующий макрос в Microsoft Office Excel 2003 и более ранних версиях Excel:

Поскольку Microsoft Office Excel 2007 поддерживает 1 048 576 строк, используйте следующий макрос в Excel 2007:

Если вы хотите выбрать активную ячейку вниз и все столбцы вправо (при условии, что данные непрерывны во всех строках и столбцах), используйте следующий код:

Если вы знаете начальную ячейку (в этом примере кода начальной ячейкой является D1) и хотите выделить столбец вниз и вправо, используйте следующий код:

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

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

Для получения дополнительной информации о том, как выбирать диапазоны с помощью Visual Basic для приложений (и для более сложных примеров), щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:

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

Начнем со статьи.

Скачать книгу

7 способов выбора диапазона на основе значения ячейки VBA

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

Для этой цели я использовал версию Microsoft Excel 365, вы можете использовать любую другую версию по своему усмотрению.

Метод 1: выбор диапазона на основе другого значения ячейки

Здесь мы выберем диапазон ячеек в столбце "Регион и продажи" на основе строки Apple в столбце "Продукт". Для этого следуйте этому методу.

Шаг 01:
➤Перейдите на вкладку "Разработчик">>Visual Basic Option

Затем откроется редактор Visual Basic.
➤Перейти на вкладку «Вставка»>> «Параметры модуля»

После этого будет создан модуль.

Шаг 02:
➤Напишите следующий код

Сначала мы объявили LR, а x1 и y1 как Long и Range соответственно.

Здесь «другой» — это имя листа, а оператор WITH позволяет указать объект или пользовательский тип один раз для всей серии операторов.

LR предоставит вам последнюю строку таблицы данных, а цикл FOR используется для выполнения действий в диапазоне столбца B.

Мы использовали два цикла ЕСЛИ: один для проверки строки «Apple» в столбце B, а другой — для сохранения диапазона между столбцами C и D, соответствующими ячейкам, содержащим «Apple» в переменной y1.< /p>

Здесь Range("C" & x1.Row).Resize(, 2) указывает на выбор двух столбцов из столбца C, а Union вернет объединение нескольких диапазонов, соответствующих значению ячейки "Apple", и, наконец, диапазоны будет выбран.

➤Нажмите F5

Результат:
Таким образом вы выберете диапазон ячеек в столбце "Регион и продажи", соответствующий значению ячейки Apple в столбце "Продукт". .

Метод 2: изменение цвета диапазона ячеек на основе другого значения ячейки

Если вы хотите изменить цвет диапазона ячеек в столбце "Продажи" на основе значения ячейки Apple в столбце "Продукт", воспользуйтесь этим методом.

Шаг 01:
➤Выполните шаг 01 метода 1
➤Введите следующий код

Сначала мы объявили Lr и n и Rng как Long и Range соответственно.
Lr даст вам последнюю строку вашей таблицы данных, а цикл FOR используется для выполнения действий для строк от 1 до Лр.

Мы использовали два цикла ЕСЛИ: один для проверки строки «Apple» в столбце B для строк с 1 по Lr, а другой — для сохранения диапазона ячеек в столбце D, соответствующих ячейкам со словом «Apple» в переменная Рнг. Здесь Union вернет объединение нескольких диапазонов, соответствующих значению ячейки «Apple», и, наконец, диапазоны будут окрашены в красный цвет.

➤Нажмите F5

Результат:
После этого вы измените цвет диапазона ячеек в столбце "Продажи", соответствующий значению ячейки Apple в столбце "Продукт". .

Способ 3: выбор диапазона на основе одного и того же значения ячейки

Если вы хотите выбрать диапазон ячеек в столбце "Продукт" на основе строки Orange в этом столбце, следуйте этому методу.

Шаг 01:
➤Выполните шаг 01 метода 1
➤Введите следующий код

Сначала мы объявили Lr, n и Rng как Long и Range соответственно.
Lr даст вам последнюю строку вашей таблицы данных, а цикл FOR используется для выполнения действий для строк от 1 до Лр.

Мы использовали два цикла IF: один для проверки строки «оранжевый» в столбце B для строк с 1 по Lr, а другой — для сохранения диапазона ячеек в столбце B, соответствующих ячейкам со значением «оранжевый» в переменная Рнг. Здесь Union вернет объединение нескольких диапазонов, соответствующих значению ячейки «Оранжевый», и, наконец, будут выбраны диапазоны.

➤Нажмите F5

Результат:
После этого вы выберете диапазон ячеек в столбце "Продукт" для значения ячейки Оранжевый в этом столбце.

Метод 4: выбор диапазона на основе нескольких критериев

Если вы хотите выбрать ячейки в столбце "Продажи", значения которых превышают 1 500 долларов США и меньше 2 000 долларов США. Для выбора ячеек на основе этих нескольких критериев вы можете следовать этому методу.

Шаг 01:
➤Выполните шаг 01 метода 1
➤Введите следующий код

Сначала мы объявили Rng1, rng, Minvalue, Maxvalue и Cell как Range, Double и Object соответственно.

Здесь мы использовали две подпроцедуры, одна из которых Callselectrange4() предназначена для вызова другой подпроцедуры selectrange4 и присвоения значения переменных Rng1 как Range("D5:D12"), Minvalue как 1500 и Maxvalue как 2000 соответственно.

Здесь в подпроцедуре selectrange4 используются один цикл FOR и два цикла IF.

➤Нажмите F5

Результат:
Затем вы выберете диапазон ячеек в столбце "Продажи" для ячеек со значениями более 1500,00 долларов США и менее 2000,00 долларов США.

Похожие чтения:

  • VBA для установки диапазона в Excel (7 примеров)
  • Как использовать объект диапазона VBA в Excel (5 свойств)
  • Использовать смещение диапазона VBA (11 способов)
  • VBA для использования диапазона на основе номера столбца в Excel (4 метода)

Метод 5: изменение стиля шрифта диапазона на основе нескольких критериев

Если вы хотите выделить полужирным шрифты ячеек в столбце "Продажи", значения которых превышают 1 500 долларов США и меньше 2 000 долларов США. Для этого на основе этих нескольких критериев вы можете следовать этому методу.

Шаг 01:
➤Выполните шаг 01 метода 1
➤Введите следующий код

Сначала мы объявили Rng1, rng, Minvalue, Maxvalue и Cell как Range, Double и Object соответственно.

Здесь мы использовали две подпроцедуры, одна из которых Callselectrange4() предназначена для вызова другой подпроцедуры selectrange4 и присвоения значения переменных Rng1 как Range("D5:D12"), Minvalue как 1500 и Maxvalue как 2000 соответственно.

Здесь в подпроцедуре selectrange4 используются один цикл FOR и два цикла IF.

➤Нажмите F5

Результат:
Таким образом, вы сможете выделить жирным шрифты диапазона ячеек в столбце "Продажи" для ячеек со значениями более 1500,00 долларов США и менее 2000,00 долларов США.

Метод 6: выбор диапазона на основе пустых ячеек

Здесь у нас есть несколько пустых ячеек (я удалил значения для объяснения этого метода) в столбце «Продажи», и для выбора этих пустых ячеек мы будем использовать код VBA этого метода.

Шаг 01:
➤Выполните шаг 01 метода 1
➤Введите следующий код

Сначала мы объявили Lr, n и Rng как Long и Range соответственно.

Lr предоставит вам последнюю строку вашей таблицы данных, а цикл FOR используется для выполнения действий для строк от 5 до Lr. Здесь 5 соответствует первой строке нашего диапазона.

Мы использовали два цикла ЕСЛИ: один для проверки строки «» (пустой) в столбце D для строк с 1 по Lr, а другой — для сохранения диапазона ячеек в столбце D, соответствующих ячейкам, имеющим пробел в переменная Рнг. Здесь Union вернет объединение нескольких диапазонов, соответствующих пустым ячейкам, и, наконец, диапазоны будут выбраны.

➤Нажмите F5

Результат:
Наконец, вы выделите пустые ячейки в столбце "Продажи".

Метод 7: изменение значения ячейки на основе выбранной ячейки

Предположим, вы хотите получить значение ячеек в первой ячейке столбца «Вывод», которое вы выбираете в столбце «Продукт». Для этого вы можете следовать этому методу.

Шаг 01:
➤Выполните шаг 01 метода 1
➤Введите следующий код

Здесь мы использовали три подпроцедуры, selectrange7 — основная процедура, которая будет вызывать две другие подпроцедуры ShowBcolumn() и ShowActive().

Пересечение дает диапазон, являющийся пересечением двух или более диапазонов, и когда выбранная ячейка в наборе данных пересекается с диапазоном «B5:B12», вызывается ShowBcolumn(). Он вернет значение выбранной ячейки в ячейке E5. В противном случае он вызовет ShowActive(), который вернет значение ячейки B5.

➤Сохраните код.
➤Выберите любую ячейку в столбце "Продукт" (я выбрал ячейку, содержащую Банан)
➤Перейдите на вкладку "Разработчик">>Параметры макросов

Затем откроется мастер макросов.
➤Выберите имя макроса ShowBcolumn, а затем "Выполнить".

Результат:
Затем вы получите значение выбранной ячейки (Банан) в ячейке E5.

Раздел практики

Для самостоятельной практики мы предусмотрели раздел «Практика», как показано ниже, на листе «Практика». Пожалуйста, сделайте это самостоятельно.

Заключение

В этой статье я попытался рассказать о самых простых способах эффективного использования VBA при выборе диапазона на основе значения ячейки. Надеюсь, вы найдете это полезным. Если у вас есть предложения или вопросы, поделитесь ими с нами.

Допустим, у вас есть набор данных с именами в трех столбцах (B, C и D), как показано ниже.

Чтобы выбрать все ячейки, содержащие определенное значение (например, Майкл), выполните следующие действия:

<р>1. На ленте выберите Главная > Найти и выбрать > Найти.

<р>2. В окне "Найти и заменить" (1) введите текст, который нужно найти (Майкл), и (2) нажмите "Найти все".

<р>3. В нижней части окна показаны все ячейки, в которых появляется искомое значение. (1) Выберите одну строку в найденных ячейках, нажмите CTRL + A на клавиатуре, чтобы выбрать все ячейки, и (2) нажмите Закрыть.

В результате будут выбраны все ячейки, содержащие Майкл (B7, C3 и D4).

Примечание. Вы также можете использовать код VBA для поиска и выбора ячеек на основе определенного значения.

Читайте также: