Страницы: 1
RSS
Собрать данные в нужном формате
 
Добрый день.
Помогите как можно быстренько сделать .

Есть 2-а файла "Выгрузка" и "Как нужно".
Нужно из вертикального значения переделать под горизонтальное - как в файле "Как нужно "  
 
Ну пожалуйста (*  
 
Доброе время суток.
Цитата
Alex.Mari написал: Ну пожалуйста
Версия на Power Query.
Успехов.
 
Для начала нужно вытащить уникальные значения. Штатными средствами - Данные --> Дополнительно --> Расширенный фильтр.
А затем простенькая формула пробежала и всё сделала.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Такой вариант не подходит

Цитата
Андрей VG написал: Версия на Power Query.
К сожалению , не смог разобраться как это сделать через Power Query

Уважаемые профессионалы , есть ли еще у кого-то варианты.. очень надо  
 
Цитата
Alex.Mari написал: Такой вариант не подходит
- интересно чем? Результат ведь есть.
Если делать макросом - не будет проще той формулы.
 
Hugo, не подходит т.к формула работает на определенный диапазон ( файл во вложении в 1-ом сообщении )

Человек , который написал эту формулу, запросил достаточно большую сумму , что бы подогнать ее под диапазон больше . Считаю ,что оно тог не стоит .

Да и формула , очень трудна доя понимания..
 
Цитата
Alex.Mari написал:
как это сделать через Power Query
А в чём проблема? На листе "asfdfasfa" заполняете таблицу данных. На листе "Результат" ПКМ на таблице - Обновить.
 
Андрей VG, а.... понятно ) Теперь штучка стала универсально ))) Спасибо!  
 
Ну и для почти комплекта (SQL не хватает...) :)
Код
Option Explicit

Sub Redizainer() 'коллекция в словаре
    Dim a, i&, t$, Dic As Object
    Dim el, col, sh As Object, x&
    
    Application.ScreenUpdating = False
    
    a = Range("F2", Cells(Rows.Count, "B").End(xlUp)).Value
    With CreateObject("Scripting.Dictionary"): .CompareMode = 1
        For i = 1 To UBound(a)
            t = a(i, 1)
            If Not .exists(t) Then .Add t, New Collection
            .Item(t).Add a(i, 4) & "|" & a(i, 5)
        Next
    
    Set sh = Workbooks.Add(1).Sheets(1): i = 0
    For Each el In .keys
        i = i + 1: x = 2
        sh.Cells(i, 1) = el
        For Each col In .Item(el)
            sh.Cells(i, x).Resize(, 2) = Split(col, "|"): x = x + 2
        Next
    Next
    End With

Application.ScreenUpdating = True
End Sub
 
Hugo,Спасибо !
Страницы: 1
Наверх