Страницы: 1
RSS
Текст по столбцам - наоборот
 
Добрый день.  
Вопрос из разряда: может я что нибуть пропустил.  
В екселе есть стандартное разделение текста по столбцам, очень удобно, никто не спорит. Но может я не нашел (а может и нету) такой примочки чтобы собрать данные из набора ячеек, через разделитель. Ясное дело это можно сделать УДФ-кой, или длинной СЦЕПИТЬ, &, но вопрос именно по стандарной утилите.
Редко но метко ...
 
{quote}{login=The_Prist}{date=01.03.2011 09:42}{thema=}{post}Стандартного средства нет. Это факт. Только макросы(UDF и прочее, прочее).{/post}{/quote}  
 
Почему то и ожидал такого ответа, а жаль. Просто не понятно почему сделали разделить по столбцам, а собрать нет ?? Ведь тоже удобная штука ). Недавно Серж поднимал живообсуждаемый вопрос, где все чуть не пересорились, по поводу ВБА и Ексель, так вот, насчет утилиты собрать из диапазона через разделитель - по моему ее надо было вставить в стандартные, что бы не плодить УДФ -ки.
Редко но метко ...
 
Счас тогда и себе такую буду делать. А то срочно понадобилось - а в стандарных нет ((
Редко но метко ...
 
Ну, чтобы закрыть тему, предложу такой вариант  
 
Function Сцепить_ячейки(Rng As Range, Sep As String) As String  
Dim iCell As Range  
   For Each iCell In Rng  
       Сцепить_ячейки = Сцепить_ячейки & iCell.Value & Sep  
   Next iCell  
  If Right(Сцепить_ячейки, Len(Sep)) = Sep Then Сцепить_ячейки = Left(Сцепить_ячейки, Len(Сцепить_ячейки) - Len(Sep))  
End Function  
 
 
В ячейку вводить так  
 
=Сцепить_ячейки(A1:A4;",")
 
{quote}{login=Windows7}{date=01.03.2011 03:04}{thema=}{post}Ну, чтобы закрыть тему, предложу такой вариант  
 
Function Сцепить_ячейки(Rng As Range, Sep As String) As String  
...{/post}{/quote}  
 
Простой и доступный для понимания, вариант. Правда не учитывает некоторые мои потребности, но для сцепления простого диапазона, самое то ). Закрываем тему.
Редко но метко ...
 
Я себе так наваял  
Function A_СЦЕПДИАП(Диапазон As Range, Optional Разделитель = " ", Optional ПоСтолбцам As Boolean) As String  
'---------------------------------------------------------------------------------------  
' : Сцепляет текст ячеек из заданного диапазона  
' : Разделитель может иметь несколько знаков  
' : Возможен просмотр по строкам(умолчание) и по столбцам  
'---------------------------------------------------------------------------------------  
   Dim i&, j&, c  
   On Error Resume Next  
   If ПоСтолбцам Then  
       For i = Диапазон.Column() To Диапазон.Column() + Диапазон.Columns.Count - 1  
           For j = Диапазон.Row() To Диапазон.Row() + Диапазон.Rows.Count - 1  
               A_СЦЕПДИАП = A_СЦЕПДИАП & Разделитель & Cells(j, i)  
           Next j  
       Next i  
   Else  
       For Each c In Диапазон  
           A_СЦЕПДИАП = A_СЦЕПДИАП & Разделитель & c  
       Next  
   End If  
   A_СЦЕПДИАП = Right(A_СЦЕПДИАП, Len(A_СЦЕПДИАП) - Len(Разделитель))  
End Function
Страницы: 1
Читают тему
Наверх