Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Объединение строк, исходя из данных в одной колонке.
 
Всем здравствуйте. Помогите пож-та разобраться с задачей объединения строк. Чтобы было более понятно "до" и "после" прикрепляю документ.

Спасибо.
Изменено: dadaaahm - 3 Мар 2015 16:54:48
 
Ищите в копилке (тут: http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=2&TID=10&TITLE_SEO=10 )
Код
=VLOOKUPCOUPLE($B$3:$C$12,2,K3,1,",")
А для остального ВПР().
Уникальные item извлекаете вручную удалением дубликатов.
Изменено: Hugo - 3 Мар 2015 17:05:03
 
Мне, быть честным, ничего не дало ваше сообщение, так как я в Excel-е не разбираюсь. Могу сказать лишь, что "вручную" что-то делать не вариант - данных огромное кол-во в файле, где это надо сделать.
Изменено: dadaaahm - 3 Мар 2015 17:14:20
 
Если вручную не вариант - ждите может кто макрос напишет.
Кстати, и огромное количество можно вручную за десяток секунд обработать на удаление дубликатов. Вот с формулами будет дольше...
Если вообще ничего не разбираетесь и не стремитесь разобраться - может сменить работу?...
Я кстати там выше добавил линк на тему с кодом.
 
dadaaahm, это цитата? Прошу вернуться в сообщение и исправить.
На будущее: не жмите кнопку просто так.
 
Цитата
Hugo написал: Кстати, и огромное количество можно вручную за десяток секунд обработать на удаление дубликатов.
Не подскажите тогда более подробно что такое =VLOOKUPCOUPLE($B$3:$C$12,2,K3,1,",") и ВПР() и как это использовать?
Цитата
может сменить работу?
А может моя работа просто совершенно не связанна с подобным? ;) Это не для работы.
 
Вот и макрос:
Код
Sub foo()
Dim rng As Range
Set rng = Application.InputBox("Enter some range", Type:=8).CurrentRegion

Dim cell As Range
Dim counter&, c&
For Each cell In rng.Columns(2).Cells
    counter = counter + 1
    c = 2
    If Not cell = vbNullString Then
    Do While cell = cell(c, 1)
    
        cell(1, 0) = cell(1, 0) & "," & cell(c, 0)
        rng.Rows(counter + c - 1).Clear
        c = c + 1
    Loop
    End If
Next cell
rng.SpecialCells(xlCellTypeBlanks).Delete xlUp

End Sub
Делал, ради упражнения. Жаль, что нет даже попыток сделать что-то. :(
С уважением,
Федор/Все_просто
 
Если делать вручную и функцией - там выше есть ссылка на тему с кодом - это код функции пользователя, с помощью которой можно собрать эти "2,3,4,5".
Как использовать  - читать http://www.planetaexcel.ru/techniques/3/59/ (вторая половина темы).
ВПР() может быть и не нужна - кажется там при удалении дубликатов можно расширить диапазон, но я точно не помню, у меня тут 2003 где нет этого функционала.

Т.е. в итоге так - копируете свою таблицу на другой лист, удаляете дубликаты по итемам (все лишние строки своей таблицы), затем собираете номера из оригинальной таблицы в эту урезанную с помощью функции пользователя.
Код конечно заранее нужно поместить  модуль этой книги или надстройки или в персональную книгу макросов.
Пример не покажу, нет сейчас возможности.
 
Все_просто, спасибо. Всё работает. А касательно "попыток", в данном случае вы не правы, их было предостаточно для того, чтобы задать вопрос знающим людям.

Hugo, спасибо. Ради интереса, тоже попробую сделать, как вы написали. Только в силу своей excel-неграмотности, боюсь, что может не получиться.
Изменено: dadaaahm - 3 Мар 2015 17:51:28
 
Макросы уже используете - теперь ещё нужно освоить использование UDF. И пойдёт дело :)
 
Формулами и 2-мя доп. столбцами (не выкидывать же :( )
 
Спасибо, что тоже откликнулись. Надеюсь, что те способы, которые все предложили - ещё кому-нибудь пригодятся, кроме меня.
Страницы: 1
Читают тему (гостей: 1)