Страницы: 1
RSS
Вопрос про Union
 
Доброе всем утро :)  
Подскажите плз, что не так, почему конструкция типа:  
Union(rCell.Offset(, 1), rCell.Offset(, 3), rCell.Offset(, 7), rCell.Offset(, 6), rCell.Offset(, 5), rCell.Offset(, 2))  
 
Делает объединение ячеек не в виде 1-3-7-6-5-2, а просто эти ячейки выбирает и склеивает подряд, получается 1-2-3-5-6-7...
 
Union - объеденить?  
используй или ф-у СЦЕПИТЬ  
или как-то так  
rCell.Offset(, 1) & rCell.Offset(, 3) & rCell.Offset(, 7) & rCell.Offset(, 6) & rCell.Offset(, 5) & rCell.Offset(, 2)
 
{quote}{login=The_Prist}{date=04.12.2009 11:53}{thema=}{post}А кто его знает? Вы как их склеиваете скажите, а там будем разбираться.{/post}{/quote}  
 
Да это Вы их и склеили так в этой теме http://www.planetaexcel.ru/forum.php?thread_id=11701, а я вот до сих пор не могу разобраться как нормально сделать :)  
 
Конструкция с & не работает :(
 
Ну по крайней мере я честно пытался сам что то сделать :)  
Перечитал уже про все эти функции весь msdn :)  
И еще последний тогда вопрос, вот допустив в отчете по палетте 33, формула суммы не работает, она суммирует только одну ячейку, это как то можно исправить?
 
Ну, раз уж тут заговорили про Union, и я задам вопросик (если Вы не возражаете, конечно)  
 
Есть некий диапазон (в переменной типа Range), состоящий из нескольких Areas.  
Отдельные области (Area) этого диапазона пересекаются.  
Нужно до минимума сократить количество Areas и ячеек в каждой из этих областей  
 
 
Пример и ВОПРОС в коде:  
 
Sub test()  
   Dim ra As Range: Set ra = Union([a1:e1], [b1:d2], [c1:c3])
   ra.Select  
   Debug.Print ra.Address, ra.Areas.Count, ra.Cells.Count  
   ' возвращает:  $A$1:$E$1,$B$1:$D$2,$C$1:$C$3      3       14  
 
   Set ra = Intersect(ra, ra)    ' нужно что-то вроде этого  
   ' чтобы до минимума сократить количество Areas и ячеек в каждой из этих областей  
 
   Debug.Print ra.Address, ra.Areas.Count, ra.Cells.Count  
   ' надо, чтобы возвращало:  $A$1:$E$1,$B$2:$D$2,$C$3      3       9  
   ' поскольку ВИДНО, что выделено именно 9, а не 14 ячеек  
End Sub  
 
 
Где-то видел подобную функцию, и она выглядела совсем несложно.  
Конечно, могу написать пользовательскую функцию, которая из диапазона [$A$1:$E$1,$B$1:$D$2,$C$1:$C$3] сделает диапазон [$A$1:$E$1,$B$2:$D$2,$C$3], перебрав все ячейки в цикле,
но, может, есть решение попроще?  ( типа Set ra = Intersect(ra, ra) )
 
Почитайте про Union по ссылке. ZVI и DL давали примеры.  
http://www.planetaexcel.ru/forum.php?thread_id=4095
Страницы: 1
Читают тему
Наверх
Loading...