Excel VBA - объединение и пересечение

В Excel VBA есть два метода, принадлежащих объекту Application, для управления двумя или более диапазонами: Union и Intersect.

Союз

Метод Union возвращает все ячейки в двух или более диапазонах, переданных в качестве аргумента.

Следующая команда выберет диапазон, показанный на изображении ниже:

1 Союз (Диапазон ("A1: B4"), Диапазон ("B3: C6")). Выберите

Вы можете присвоить любое значение или формулу диапазону, возвращаемому методом Union:

1 Союз (Диапазон ("A1: B4"), Диапазон ("B3: C6")) = 10

Это позволит ввести значение 10 в каждую ячейку Союза.

Вы можете обернуть любую функцию, которая суммирует диапазон, вокруг метода Union. Следующий пример вернет сумму значений в диапазонах A1: B4 и B3: C6:

1 Результат = Application.WorksheetFunction.Sum (union (Range ("A1: B4"), Range ("B3: C6")))

Вы можете быть удивлены, увидев в Результате значение 160! Хотя в Union всего 14 ячеек (8 в каждом диапазоне, 2 являются общими), когда вы смотрите на Selection, Union фактически возвращает 16 ячеек, следовательно, Результат равен 160.

Пересечение

Метод Intersect возвращает только общие ячейки в двух или более диапазонах, переданных в качестве аргумента.

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

1 Пересечение (Диапазон ("A1: B4"), Диапазон ("B3: C6")). Выберите

Использование Intersect

Чаще всего Intersect используется в событиях, связанных с Рабочим листом или Рабочей книгой. Он используется для проверки принадлежности измененных ячеек к интересующему диапазону. Следующий пример с проверкой того, изменились ли ячейки (идентифицированные Target) и Range A1: A10 являются общими, и примите соответствующие меры, если они есть.

Объект Intersect ничего не возвращает, если общих ячеек нет, поэтому Intersect (Target, Range («A1: A10»)) Is Nothing будет True, если общих ячеек нет. Добавление Not к условию делает его истинным только в том случае, если результат теста Intersect (Target, Range («A1: A10»)) Is Nothing является False, другими словами, Target и Range A1: A10 имеют несколько общих ячеек.

12345 Private Sub Worksheet_Change (значение ByVal как диапазон)Если не пересечение (цель, дальность ("A1: A10")) - это ничто, тогда'Выполните желаемое действиеКонец, еслиКонец подписки

Автор сценария: Винамра Чандра

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave