Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Собрать данные из ячейки по признаку в другой ячейке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Собрать данные из ячейки по признаку в другой ячейке (Формулы/Formulas)
Собрать данные из ячейки по признаку в другой ячейке
sanders Дата: Понедельник, 17.03.2014, 10:46 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
поиском искал. но даже не пойму как вопрос задать
в обшем задача такая
в столбец Размер подставить в скобки, через запятую все числа из стобца - Наименование артикула.
Но привязка должна быть к стобцу - Наименование.
То есть, следующее - Наименование - будет отличаться стобец - Размер, так как в первом случает - Наименование артикула
- 6 позиций, во втором 4.
а вообще таких строк в базе несколько тысяч
спасибо
К сообщению приложен файл: __excel.xlsx (9.1 Kb)


Сообщение отредактировал sanders - Понедельник, 17.03.2014, 13:12
 
Ответить
Сообщениепоиском искал. но даже не пойму как вопрос задать
в обшем задача такая
в столбец Размер подставить в скобки, через запятую все числа из стобца - Наименование артикула.
Но привязка должна быть к стобцу - Наименование.
То есть, следующее - Наименование - будет отличаться стобец - Размер, так как в первом случает - Наименование артикула
- 6 позиций, во втором 4.
а вообще таких строк в базе несколько тысяч
спасибо

Автор - sanders
Дата добавления - 17.03.2014 в 10:46
китин Дата: Понедельник, 17.03.2014, 10:51 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7016
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
даже не пойму как вопрос задать

как тогда понимать нам?а вот был бы файлик типа что есть-что хочу,было бы гораздо проще всем. deal


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
даже не пойму как вопрос задать

как тогда понимать нам?а вот был бы файлик типа что есть-что хочу,было бы гораздо проще всем. deal

Автор - китин
Дата добавления - 17.03.2014 в 10:51
sanders Дата: Понедельник, 17.03.2014, 13:14 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
как тогда понимать нам?а вот был бы файлик типа что есть-что хочу,было бы гораздо проще всем.


извиняюсь. файлик почему то сразу не прикрутился к сообщению.
 
Ответить
Сообщение
как тогда понимать нам?а вот был бы файлик типа что есть-что хочу,было бы гораздо проще всем.


извиняюсь. файлик почему то сразу не прикрутился к сообщению.

Автор - sanders
Дата добавления - 17.03.2014 в 13:14
Hugo Дата: Понедельник, 17.03.2014, 13:26 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Есть решение с помощью UDF:
Код
="{" & VLOOKUPCOUPLE($A$2:$B$13,1,A2,2,",") & "}"

Код в модуль файла или надстройки:
[vba]
Код
Function VLOOKUPCOUPLE(Table As Variant, _
                          SearchColumnNum As Integer, _
                          SearchValue As Variant, _
                          RezultColumnNum As Integer, _
                          Separator_ As String, _
                          Optional BezPovtorov As Boolean = True)

'Table - таблица, где ищем
'SearchColumnNum - столбец, где ищем
'SearchValue - данные, которые ищем
'RezultColumnNum - колонка, откуда берём результат
'Separator_ - разделитель, желательно вводить с пробелом в конце
'BezPovtorov - если поставить 0, то будут выведены все повторяющиеся совпадения

       Dim i As Long, tmp As String, vlk

       If TypeName(Table) = "Range" Then Table = Intersect(Table.Parent.UsedRange, Table).Value
       If BezPovtorov Then
           With CreateObject("Scripting.Dictionary")
               For i = 1 To UBound(Table)
                   If Table(i, SearchColumnNum) = SearchValue Then
                       tmp = Table(i, RezultColumnNum)
                       If tmp <> "" Then
                           If Not .Exists(tmp) Then
                     .Add tmp, 0&
                     vlk = vlk & Separator_ & Table(i, RezultColumnNum)
                           End If
                       End If
                   End If
               Next i
           End With
       Else
           For i = 1 To UBound(Table)
               If Table(i, SearchColumnNum) = SearchValue Then
                   vlk = vlk & Separator_ & Table(i, RezultColumnNum)
               End If
           Next i
       End If
       If vlk > 0 Then vlk = Mid(vlk, Len(Separator_) + 1) Else vlk = ""
       VLOOKUPCOUPLE = vlk
End Function
[/vba]

Там, где нужны пустые ячейки - или формулу не протягивать, или позже удалить, или добавить доп.проверку наличия данных с ЕСЛИ().
Код
=IF(LEN(A2),"{" & VLOOKUPCOUPLE($A$2:$B$13,1,A2,2,",") & "}","")


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЕсть решение с помощью UDF:
Код
="{" & VLOOKUPCOUPLE($A$2:$B$13,1,A2,2,",") & "}"

Код в модуль файла или надстройки:
[vba]
Код
Function VLOOKUPCOUPLE(Table As Variant, _
                          SearchColumnNum As Integer, _
                          SearchValue As Variant, _
                          RezultColumnNum As Integer, _
                          Separator_ As String, _
                          Optional BezPovtorov As Boolean = True)

'Table - таблица, где ищем
'SearchColumnNum - столбец, где ищем
'SearchValue - данные, которые ищем
'RezultColumnNum - колонка, откуда берём результат
'Separator_ - разделитель, желательно вводить с пробелом в конце
'BezPovtorov - если поставить 0, то будут выведены все повторяющиеся совпадения

       Dim i As Long, tmp As String, vlk

       If TypeName(Table) = "Range" Then Table = Intersect(Table.Parent.UsedRange, Table).Value
       If BezPovtorov Then
           With CreateObject("Scripting.Dictionary")
               For i = 1 To UBound(Table)
                   If Table(i, SearchColumnNum) = SearchValue Then
                       tmp = Table(i, RezultColumnNum)
                       If tmp <> "" Then
                           If Not .Exists(tmp) Then
                     .Add tmp, 0&
                     vlk = vlk & Separator_ & Table(i, RezultColumnNum)
                           End If
                       End If
                   End If
               Next i
           End With
       Else
           For i = 1 To UBound(Table)
               If Table(i, SearchColumnNum) = SearchValue Then
                   vlk = vlk & Separator_ & Table(i, RezultColumnNum)
               End If
           Next i
       End If
       If vlk > 0 Then vlk = Mid(vlk, Len(Separator_) + 1) Else vlk = ""
       VLOOKUPCOUPLE = vlk
End Function
[/vba]

Там, где нужны пустые ячейки - или формулу не протягивать, или позже удалить, или добавить доп.проверку наличия данных с ЕСЛИ().
Код
=IF(LEN(A2),"{" & VLOOKUPCOUPLE($A$2:$B$13,1,A2,2,",") & "}","")

Автор - Hugo
Дата добавления - 17.03.2014 в 13:26
sanders Дата: Понедельник, 17.03.2014, 13:32 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Код в модуль файла или надстройки:

ого. спасибо. пошёл домой разбираться
 
Ответить
Сообщение
Код в модуль файла или надстройки:

ого. спасибо. пошёл домой разбираться

Автор - sanders
Дата добавления - 17.03.2014 в 13:32
sanders Дата: Суббота, 22.03.2014, 10:14 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
так и не разобрался. признаться тёмный лес эти надстройки. установил её. формула выше написаная - ошибку выдаёт
 
Ответить
Сообщениетак и не разобрался. признаться тёмный лес эти надстройки. установил её. формула выше написаная - ошибку выдаёт

Автор - sanders
Дата добавления - 22.03.2014 в 10:14
shurikus Дата: Воскресенье, 23.03.2014, 20:18 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 198
Репутация: 44 ±
Замечаний: 0% ±

Excel 2007
В своем файле открываете редактор VB, создаете модуль и вставляете код, написанный в сообщении 4 Hugo, затем в ячейку где должны начаться объединенные значения вставляете вторую формулу из того же значения и растягиваете ее до конца. Сама по себе формула работать не будет, поскольку не знает подобной функции VLOOKUPCOUPLE.
К сообщению приложен файл: vlookupcoople.xlsm (17.2 Kb)


Сообщение отредактировал shurikus - Воскресенье, 23.03.2014, 20:20
 
Ответить
СообщениеВ своем файле открываете редактор VB, создаете модуль и вставляете код, написанный в сообщении 4 Hugo, затем в ячейку где должны начаться объединенные значения вставляете вторую формулу из того же значения и растягиваете ее до конца. Сама по себе формула работать не будет, поскольку не знает подобной функции VLOOKUPCOUPLE.

Автор - shurikus
Дата добавления - 23.03.2014 в 20:18
sanders Дата: Понедельник, 24.03.2014, 11:48 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
спасибо за помощь. всё работает. супер.
нашёл этот форум ради пары вопросов. решил поиском. но вот и своя тема пригодилась
отличный ресурс информации!
 
Ответить
Сообщениеспасибо за помощь. всё работает. супер.
нашёл этот форум ради пары вопросов. решил поиском. но вот и своя тема пригодилась
отличный ресурс информации!

Автор - sanders
Дата добавления - 24.03.2014 в 11:48
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Собрать данные из ячейки по признаку в другой ячейке (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!