Страницы: 1
RSS
Информацию о товаре (перечень аналогов в рамках Кода корзины)
 
Нужно выписать информацию о товаре, в которой, должен находиться перечень аналогов в рамках Кода корзины (D1) для каждого товара, исключая сам товар (естественно). Пример F2 указал в екселе.  
 
А как можно понять, что фильтр 57213145 Almig аналог для KOO010980 Alphabetisch?
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Аналоги обозначены числом в поле "Код корзины", соответственно если строки имеют одинаковое число, например "1" они все друг другу аналоги. Понимаете?
 
Т.е. все 96 фильтров, которые ниже Масляный фильтр 57213145 Almig его аналоги? И все это вы хотите засунуть в одну ячейку?
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Да) в описание)
 
Вариант на Power Query:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Наименование", type text}, {"Код артикула", type any}, {"Бренд", type text}, {"Код корзины", Int64.Type}, {"Тип товара", type text}}),
    #"Вставлено: объединенный столбец" = Table.AddColumn(#"Измененный тип", "Сведено", each Text.Combine({Text.From([Код артикула], "ru-RU"), Text.From([Бренд], "ru-RU")}, " "), type text),
    #"Сгруппированные строки" = Table.Group(#"Вставлено: объединенный столбец", {"Код корзины"}, {{"Таблица", each _, type table}, {"Список1", each _[Сведено], type table}}),
    #"Развернутый элемент Таблица" = Table.ExpandTableColumn(#"Сгруппированные строки", "Таблица", {"Бренд", "Код артикула", "Наименование", "Сведено", "Тип товара"}, {"Бренд", "Код артикула", "Наименование", "Сведено", "Тип товара"}),
    #"Добавлен пользовательский объект1" = Table.AddColumn(#"Развернутый элемент Таблица", "Список", each let A = [Сведено], B = List.Select([Список1], each _ <> A) in B ),
    #"Извлеченные значения" = Table.TransformColumns(#"Добавлен пользовательский объект1", {"Список", each Text.Combine(List.Transform(_, Text.From), ", "), type text}),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Извлеченные значения", "Описание", each [Наименование] & ", аналог для " & [Список]),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Добавлен пользовательский объект",{"Список", "Сведено", "Список1"}),
    #"Переупорядоченные столбцы" = Table.ReorderColumns(#"Удаленные столбцы",{"Наименование", "Код артикула", "Бренд", "Код корзины", "Тип товара", "Описание"})
in
    #"Переупорядоченные столбцы"

Правда исходную таблицу пришлось подрезать, чтобы в 300 Кб уместиться.
Изменено: PooHkrd - 26.06.2018 12:01:05
Вот горшок пустой, он предмет простой...
 
К сожалению я не владею знаниями, как работать в павер куерти =(
https://yadi.sk/d/8hD4IGM03YNXww - могли бы вы отредактировать полный файл и передать мне его, либо также через яндекс диск, либо на почту koshelkov.net@yandex.ru готов сделать комплемент на мобильный телефон)
 
У меня нет выходов на внешние ресурсы для загрузки полной версии.
У вас какой Excel?
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал: У вас какой Excel?
2010
 
Установите надстройку отсюда. Потом откройте мой файл, в исходную (синюю) таблицу вставьте вашу полную таблицу, нажмите правой кнопкой на моей (зеленую) таблице и выберите пункт Обновить. И все у вас получится.
Изменено: PooHkrd - 25.06.2018 16:06:33
Вот горшок пустой, он предмет простой...
 
У меня видимо какой-то не правильный ексель, http://prntscr.com/jz3of9 - при установке выдает такую ошибку..
 
Я ж говорю, нет доступа к внешним ресурсам. Сохраните картинку в .png - она займет мало места, и прикрепите к посту.
Вот горшок пустой, он предмет простой...
 
.
 
Сделали на другом компе - заработало, ждем номер телефона)
 
Смотрите личку, раз так благодарны.
Вот горшок пустой, он предмет простой...
 
Vadgo, оно модератору надо - чистить все Ваши сообщения от бездумного цитирования? Не жмите на копку без толку.
 
Вариант на свежескорректированной UDF:
Код
=ПОДСТАВИТЬ(A2&" "&C2&". Аналог для"&VLOOKUPCOUPLE2col(B:D;3;D2;1;2;" ";", ");B2&" "&C2&",";"";1)

и протянуть вниз. Результат тютелька в тютельку (в отличие от результата на PQ!)
Но работает правда на этом миллионе долго...
Код
Function VLOOKUPCOUPLE2col(Table As Variant, _
                           SearchColumnNum As Integer, _
                           SearchValue As Variant, _
                           RezultColumnNum1 As Integer, _
                           RezultColumnNum2 As Integer, _
                           ColumnSep As String, _
                           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, RezultColumnNum1) & ColumnSep & Table(i, RezultColumnNum2)
                    If Len(tmp) > Len(ColumnSep) Then
                        If Not .Exists(tmp) Then
                            .Add tmp, 0&
                            vlk = vlk & Separator_ & Table(i, RezultColumnNum1) & ColumnSep & Table(i, RezultColumnNum2)
                        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, RezultColumnNum1) & ColumnSep & Table(i, RezultColumnNum2)
            End If
        Next i
    End If
    If vlk > 0 Then vlk = Mid(vlk, Len(Separator_) + 1) Else vlk = ""
    VLOOKUPCOUPLE2col = vlk
End Function

Естественно в csv оно не живёт, но работает, а после можно или пересохранить, или переспецкопипастить.
Скрытый текст
Изменено: Hugo - 26.06.2018 01:39:36
 
Цитата
Hugo написал:
(в отличие от результата на PQ!)
Прошу пардону - вы нашли где-то ошибку в результате или имеется ввиду неполнота данных в примере?
Вот горшок пустой, он предмет простой...
 
Ошибка в том, что в аналогах указан и оригинал (а я его заменой убираю). Ну и мелочь - пробела нет, его вероятно легко добавить.
Изменено: Hugo - 26.06.2018 11:39:17
 
Упс, пропустил условие. Hugo, спасибо огромное.
Vadgo, в посте № 6 исправил код запроса и приложил корректный пример. Убрал из списка сам товар и добавил пробелы.
Изменено: PooHkrd - 26.06.2018 12:03:32
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх