Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2011, 17:54   #1
gsg
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 108
По умолчанию Вычитание диапазонов

Здравствуйте.
Насколько я понял, функции, обратной Union, к сожалению, не существует.

Хотелось бы услышать совет, в каком направлении думать, чтобы оперативнее решить такой вопрос:

допустим, задан диапазон
Range(a1:a20)

из него необходимо исключить диапазоны
Range(a5:a8) и Range(a14:a18)

чтобы получить в конечном итоге диапазон
Range(a1:a4,a9:a14,a19:a20)
-Возьмите лучших их лучщих!
-Лучшие из лучших зализывают раны...
-Тогда, возьмите лучших из худших!
gsg вне форума Ответить с цитированием
Старый 22.06.2011, 19:54   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Решение "в лоб" - перебрать ячейки:
Код:
Function Exclude(rFrom As Range, rWhat As Range) As Range
Dim c As Range
If rFrom.Parent Is rWhat.Parent Then
    For Each c In rFrom
        If Intersect(c, rWhat) Is Nothing Then
            If Exclude Is Nothing Then Set Exclude = c Else Set Exclude = Union(Exclude, c)
        End If
    Next
Else
    Set Exclude = rFrom
End If
End Function
Попробуйте в окне Immediate:
Код:
?exclude(range("A1:A20"),range("A5:A8,A14:A18")).Address
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 23.06.2011, 09:18   #3
gsg
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 108
По умолчанию

спасибо! То, что нужно.

а что означает

Код:
rFrom.Parent Is rWhat.Parent
-Возьмите лучших их лучщих!
-Лучшие из лучших зализывают раны...
-Тогда, возьмите лучших из худших!
gsg вне форума Ответить с цитированием
Старый 23.06.2011, 09:42   #4
Watcher_1982
Пользователь
 
Регистрация: 23.06.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от gsg Посмотреть сообщение
Здравствуйте.
Насколько я понял, функции, обратной Union, к сожалению, не существует.

Хотелось бы услышать совет, в каком направлении думать, чтобы оперативнее решить такой вопрос:

допустим, задан диапазон
Range(a1:a20)

из него необходимо исключить диапазоны
Range(a5:a8) и Range(a14:a18)

чтобы получить в конечном итоге диапазон
Range(a1:a4,a9:a14,a19:a20)
Я бы попробовал диапазон загнать (в данном примере) в одномерный массив, и те значения которые надо исключить, сделал бы нулями.
А потом уже пройдясь по этому массиву получил бы диапазоны....
Надеюсь понятно изложил мое видение
Watcher_1982 вне форума Ответить с цитированием
Старый 23.06.2011, 09:58   #5
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

А ничего, что загонять пришлось бы по одной ячейке, как массив, так и исключения? И что это даст, по сравнению со способом, предложенным Казанским, кроме траты времени на дополнительную обработку еще и массива в памяти? Вы выложите код, мож тогда понятней станет.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 23.06.2011, 10:04   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Цитата:
Сообщение от gsg Посмотреть сообщение
спасибо! То, что нужно.

а что означает
Код:
rFrom.Parent Is rWhat.Parent
Проверка того, что диапазоны находятся на одном листе. Если аргументами Intersect являются диапазоны с разных листов, возникает ошибка.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 23.06.2011, 14:46   #7
Ищущий ответа
Пользователь
 
Регистрация: 23.06.2011
Сообщений: 14
По умолчанию

Здравствуйте! Помогите пож. разобраться с задачкой, а точнее с эффективным использованием функции Count_CellColor....)

Имеется таблица.....В колонке A наименование объектов. В колонке A между наименованиями иеются пустые ячейки колонки A. в колонке B указаны значения площадей и пустых ячеек нет.В колонке В определенные значения выделены красным цветом и разбросаны по колонке B. В колонке С результат работы функции Count_CellColor....Как можно просчитать количество выделенных ячеек красным цветом между наименованиями и проставить результат в колонке С напротив наименования

Заранее примного благодарен........)
Ищущий ответа вне форума Ответить с цитированием
Старый 23.06.2011, 15:37   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ищущий ответа давно бы уже получил ответ, если бы открыл свою тему с примером, а не встревал (извините, другого слова не подобрал) 3 раза с этим вопросом в чужие темы.
Тем более, что UDF Count_CellColor не у всех есть...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запуталась с адресацией диапазонов на листе samoa Microsoft Office Excel 14 09.11.2010 23:27
Работа с именами диапазонов rick1177 Microsoft Office Excel 5 01.08.2010 12:38
Необходимо создать списки из диапазонов IP Azz100 JavaScript, Ajax 0 26.05.2010 23:51
Сложение Диапазонов valerij Microsoft Office Excel 19 02.04.2009 13:52
Выбор диапазонов диаграмм apfu00 Microsoft Office Excel 4 03.02.2009 17:04