Здравствуйте, уважаемые форумчане.
Одна из задач, которую мне приходилось решать не раз - определить диапазон ячеек, которые входят в два исходных диапазона, за исключением пересекающейся области этих диапазонов. Образно говоря: "Union(x, y) - Intersect(x, y)"
Предлагаю на Ваш суд одно из решений этой задачи:
Пример файла во вложении.
Плюсы:
1. Отсутствие явного перебора ячеек диапазонов. Отсутствие каких-либо циклов.
2. Быстрое получение результата при больших объемах исходных диапазонов.
3. Возможность работы с разрывными (не непрерывными) диапазонами.
Минусы:
1. Невозможность использования условного форматирования в пределах рассматриваемых диапазонов.
2. Невозможность использования в виде функции рабочего листа (из-за применяемого метода "SpecialCells").
Есть ли другие "быстрые" способы решения подобной задачи?
Одна из задач, которую мне приходилось решать не раз - определить диапазон ячеек, которые входят в два исходных диапазона, за исключением пересекающейся области этих диапазонов. Образно говоря: "Union(x, y) - Intersect(x, y)"
Предлагаю на Ваш суд одно из решений этой задачи:
| Код |
|---|
Private Sub qq() Dim x As Range, y As Range, z As Range Set x = [B2:F10] 'Исходный диапазон 1 Set y = [D7:H15] 'Исходный диапазон 2 Set z = Union(x, y) If Not Intersect(x, y) Is Nothing Then z.FormatConditions.Delete z.FormatConditions.Add xlExpression, Formula1:=z.Address = z.Address Intersect(x, y).FormatConditions.Delete Set z = z.SpecialCells(xlCellTypeAllFormatConditions) z.FormatConditions.Delete End If z.Select 'Искомый диапазон End Sub |
Плюсы:
1. Отсутствие явного перебора ячеек диапазонов. Отсутствие каких-либо циклов.
2. Быстрое получение результата при больших объемах исходных диапазонов.
3. Возможность работы с разрывными (не непрерывными) диапазонами.
Минусы:
1. Невозможность использования условного форматирования в пределах рассматриваемых диапазонов.
2. Невозможность использования в виде функции рабочего листа (из-за применяемого метода "SpecialCells").
Есть ли другие "быстрые" способы решения подобной задачи?
Изменено: - 05.12.2018 06:50:37
Чем шире угол зрения, тем он тупее.