Страницы: 1
RSS
Функция "Объединение диапазонов без дубликатов", а не процедура, возможно?
 
Помогите пожалуйста, если это вообще возможно, написать функцию, аналогичную процедуре "Объединение диапазонов без дубликатов" из PLEX'а, но что б именно функция, и что б диапазонов сколько угодно.
 
Позвольте узнать, а чем отличается процедура от функции?  
 
Что эта функция должна возвращать?
 
Функция, грубо говоря, это динамическая процедура, используется в формулах, так же как и созданные разпаботчиками Excel'я (например IF, SUM и т.д.).  
Возвращать она должна значения диапазона без дубликатов, по одному в ячейку, предполагается использовать как формулу массива, с вводом сразу в диапазон (CTRL+SHIFT+ENTER)
 
Если Вам нужно что бы формула выдавала массив уникальных данных из нескольких диапазонов то вот файл. У меня такая же потребность но формулу сделал только для двух диапазонов сейчас думаю над тем как ее доработать что бы диапазонов можно было указывать неограниченное количество. Пока не получается.    
Есть у меня подозрения что я как всегда иду сложным путем ;).Так что если кто наставит на путь истинный буду премного благодарен.
 
Отличный пример, спасибо.  
Действительно было здорово не ограничеваться двумя исходными массивами, а сделать как в некоторых стандартных функциях, когда через мастер функции вносятся значения аргументов, и при выборе последнего аргумента, появляется ещё один дополнительный.
 
В формуле первый елемент обязательный - порядковый номер значения в массиве, количество диапазонов неограниченно но они должны быть одномерными и вертикальными (один столбец).
 
Вот более короткая версия той же функции:  
 
Function Otbor(m As Long, ParamArray arglist() As Variant) As Variant  
   Dim coll As New Collection: On Error Resume Next  
   For Each ra In arglist  
       For Each cell In ra.Cells: coll.Add cell, CStr(cell): Next cell  
   Next ra  
   If m <= coll.Count Then Otbor = coll(m) Else Otbor = CVErr(xlErrNA)  
End Function  
 
 
Проверил - выдаёт тот же самый результат.
 
Вариант функции Otbor от Alexander_V работает надёжно и при переносе всех диапазонов в другое место на листе и при сортировке.  
В варианте от EducatedFool при сортировке одного из массивов в результат не охватывает всех значений.  
 
В любом случае, парни, спасибо огромное. Для топика Otbor от Alexander_V то что нужно.
 
Alexander_V,  
Могли бы вы сделать из функции Otbor такую, которая бы возвращала кол-во дубликатов в диапазоне, указанного критерия?
 
Отмена аварии, CountByMask из PLEX'a подошла полностью.
 
{quote}{login=}{date=31.01.2010 11:37}{thema=}{post}Отмена аварии, CountByMask из PLEX'a подошла полностью.{/post}{/quote}  
А как использовать эту функцию? Нигде не нашел описания.
Страницы: 1
Читают тему
Наверх