Страницы: 1
RSS
Сделать из списка по строкам список через запятую
 
Есть некий список, к примеру:  
 
Малиновые сливки карамель  
Мультяшка карамель  
Пломбир карамель  
Пташечка карамель  
 
и т.д.  
надо получить напротив каждого из названий по нарастающей тот же список, но через запятую то есть так:  
 
Малиновые сливки карамель,    
Мультяшка карамель, Малиновые сливки карамель,  
Пломбир карамель, Мультяшка карамель, Малиновые сливки карамель,    
Пташечка карамель, Пломбир карамель, Мультяшка карамель, Малиновые сливки карамель,  
 
   
Как это можно сделать с помощью формулы, которую просто вставляешь напротив первого элемента списка а потом растягиваешь вниз?  
 
Получилось сделать только так, что количество запятых в конце постоянно растет...  
для последнего элемента из приведенных названий получается по моей формуле так:  
 
Пташечка карамель, Пломбир карамель, Мультяшка карамель, Малиновые сливки карамель, , , ,    
 
Файл-пример прилагаю  
Да, еще момент... Моя формула делает как бы "задом наперед", то есть то что было последним становится первым...  
Можно ли еще сделать, чтобы порядок сохранился, то есть так:  
 
Малиновые сливки карамель,    
Малиновые сливки карамель, Мультяшка карамель,    
Малиновые сливки карамель, Мультяшка карамель, Пломбир карамель  
Малиновые сливки карамель, Мультяшка карамель, Пломбир карамель, Пташечка карамель
 
с3=ЕСЛИ(C2="";B3&".";ЛЕВСИМВ(C2;ДЛСТР(C2)-1)&", "&B3&".")  
так? в конце точка.
 
для 4-го элемента списка Ваша формула выглядит так:  
=ЕСЛИ(C5="";B6&".";ЛЕВСИМВ(C5;ДЛСТР(C5)-1)&", "&B6&".")  
 
и возвращает:  
Пломбир карамель, Мультяшка карамель, Малиновые сливки карамель, , ,, Пташечка карамель.  
 
Как бы не совсем то...  
)  
Ведь имелось ввиду, что запятая между элементами списка будет единственной...
 
извиняюсь, все нормально...  
просто поставил Вашу формулу в соседний столбец...  
поэтому она отработала неверно..  
 
ваша формула работает так как надо, если ее поместить вместо моей первой по счету формулы и растянуть вниз, Спасибо!  
 
Однако, если в чью-либо голову придет более изящное решение, было интерсно с ним ознакомится..  
:)
 
Так?
 
Вы что то не так ввели. Формула работает корректно+я добавил точку в конце. Так же я не понял, нужна ли точка/запятая в конце, т к в вашем "то есть так" запятая в первых двух строках есть, в последних двух нету.  
Если в конце ничего не нужно, то так c3=ЕСЛИ(C2="";B3;ЛЕВСИМВ(C2;ДЛСТР(C2)-1)&", "&B3)  
Если нужна запятая, то так: =ЕСЛИ(C2="";B3&", ";C2&B3&", ")  
см. файл, там первый вариант.
 
{quote}{login=Владимир}{date=16.10.2009 06:19}{thema=}{post}Так?{/post}{/quote}  
 
да, в общем то так конечно! красиво, даже очень, если бы ни одно НО...  
первая формула (по сути, так сказать) отличается от остальных..  
 
:)
 
{quote}{login=Саша}{date=16.10.2009 06:23}{thema=}{post}Вы что то не так ввели.... {/post}{/quote}  
 
Да, да, я же потом извинился, все нормально! )
 
{quote}{login=Excel-Ok}{date=16.10.2009 06:23}{thema=Re: }{post}{quote}{login=Владимир}{date=16.10.2009 06:19}{thema=}{post}Так?{/post}{/quote}  
 
да, в общем то так конечно! красиво, даже очень, если бы ни одно НО...  
первая формула (по сути, так сказать) отличается от остальных..  
 
:){/post}{/quote}  
 
Да, именно так. Вначале захватывает даныые из столбца В, а потом ссылается уже на С.
 
Excl Ok. запоздалый вопрос: Вам нужен список в одной ячейке? Почему спрашиваю - хочу предложить пользовательскую функцию Couple:  
 
Function Couple(Diapazon, Delimiter As String)  
' Функция объединения данных, содержащихся в ячейках диапазона  
' iCell - текущая ячейка  
Dim iCell As Variant  
For Each iCell In Diapazon  
' Собираются данные только непустых значимых ячеек  
 If IsEmpty(iCell) <> True Then  
'Добавление значения ячейки к результирующей строке  
   If Couple = "" Then  
    Couple = iCell  
   Else  
     If iCell.Value <> "" Then  
      Couple = Couple & Delimiter & iCell  
     End If  
  End If  
End If  
Next  
 
End Function
Страницы: 1
Читают тему
Наверх