есть массив в первом и втором столбце на первом листе. нужно перенести данные на второй лист : первая колонка с первого листа переносится на второй лист и удаляются дубликаты (остаются только уникальные значения) данные из второй колонки первого листа нужно перенести на второй лист но разбить по колонкам (то есть все данные для уникальной записи из первой колонки из строчного варианта преобразуются в колонки)
я настроил функции НО у меня более 500 000 строк и уникальная запись из первой колонки (первого листа) может иметь больше 400 признаков и отработка одной колонки требует более 10 минут !!!! поэтому прошу спецов помочь с кодом VBA.
есть массив в первом и втором столбце на первом листе. нужно перенести данные на второй лист : первая колонка с первого листа переносится на второй лист и удаляются дубликаты (остаются только уникальные значения) данные из второй колонки первого листа нужно перенести на второй лист но разбить по колонкам (то есть все данные для уникальной записи из первой колонки из строчного варианта преобразуются в колонки)
я настроил функции НО у меня более 500 000 строк и уникальная запись из первой колонки (первого листа) может иметь больше 400 признаков и отработка одной колонки требует более 10 минут !!!! поэтому прошу спецов помочь с кодом VBA.cOBA43
Приношу свои извинения - упустил, что у вас 2007. Power Query появился в 2010. Вариант на Microsoft Query. Файл сохранить в c:\path. Есть проблема. Есть ограничение по числу полей свёртки. На усечённом примере с 10 столбцами - отработал. На 79, как в исходнике - нет.
Приношу свои извинения - упустил, что у вас 2007. Power Query появился в 2010. Вариант на Microsoft Query. Файл сохранить в c:\path. Есть проблема. Есть ограничение по числу полей свёртки. На усечённом примере с 10 столбцами - отработал. На 79, как в исходнике - нет.anvg
Файл сохранить в c:\path. Есть проблема. Есть ограничение по числу полей свёртки.
Доброго дня у меня Офис 2016 (работаю в экселе и БД) и Power Query с Power BI можно запустить НО я не работал в этих продуктах(( и поэтому не представляю что делать. Поэтому и прошу подсказать толковое руководство ,а то как баран на новые ворота смотрю и облизываюсь.
Файл сохранить в c:\path. Есть проблема. Есть ограничение по числу полей свёртки.
Доброго дня у меня Офис 2016 (работаю в экселе и БД) и Power Query с Power BI можно запустить НО я не работал в этих продуктах(( и поэтому не представляю что делать. Поэтому и прошу подсказать толковое руководство ,а то как баран на новые ворота смотрю и облизываюсь.cOBA43
Сообщение отредактировал cOBA43 - Среда, 18.09.2019, 09:22
спасибо - пока пол книги прочел но решения еще не увидел я так понял что вместо Power Query можно применить сводные таблицы (еще бы разобраться как настроить вывод по колонкам (( )
спасибо - пока пол книги прочел но решения еще не увидел я так понял что вместо Power Query можно применить сводные таблицы (еще бы разобраться как настроить вывод по колонкам (( )cOBA43
Если Ваши 500000 артикулов удалить дубликаты, то сколько останется? И сколько моделей м.б. максимум в одном артикуле? ориентировочно Разовая задача? [p.s.]Скульптор данных в Excel с Power Query - тоже начал было читать. Что-то не очень. Т.е. книжка как как книжка, а вот PQ не очень )[/p.s.]
Если Ваши 500000 артикулов удалить дубликаты, то сколько останется? И сколько моделей м.б. максимум в одном артикуле? ориентировочно Разовая задача? [p.s.]Скульптор данных в Excel с Power Query - тоже начал было читать. Что-то не очень. Т.е. книжка как как книжка, а вот PQ не очень )[/p.s.]nilem
Если Ваши 500000 артикулов удалить дубликаты, то сколько останется? И сколько моделей м.б. максимум в одном артикуле? ориентировочно
Это не прокатит так как для каждого значения из первой колонки нужны все критерии из второй !!! в БД это реализовать можно без проблем через ID но мне нужна инфа в экселе ((
Если Ваши 500000 артикулов удалить дубликаты, то сколько останется? И сколько моделей м.б. максимум в одном артикуле? ориентировочно
Это не прокатит так как для каждого значения из первой колонки нужны все критерии из второй !!! в БД это реализовать можно без проблем через ID но мне нужна инфа в экселе ((cOBA43
Ведь у Вас в примере (1-е сообщение) в результате только уникальные артикулы. Почему не прокатит?
на первом листе исходная выгрузка из БД ,а на втором пример как преобразовать массив. то есть копируем первую колонку с первого листа на второй и удаляем для нее дубликата - так получаем колонку уникальных данных без дубликатов , и вот к этим данным нужно привязать все свойства второй колонки (разносим по колонкам)
Ведь у Вас в примере (1-е сообщение) в результате только уникальные артикулы. Почему не прокатит?
на первом листе исходная выгрузка из БД ,а на втором пример как преобразовать массив. то есть копируем первую колонку с первого листа на второй и удаляем для нее дубликата - так получаем колонку уникальных данных без дубликатов , и вот к этим данным нужно привязать все свойства второй колонки (разносим по колонкам)cOBA43
Макрос в стандартный модуль, запускать при активном листе Лист1 [vba]
Код
Sub iArticul() Dim i As Long Dim n As Long Dim iLastRow As Long Dim iLR As Long Dim FoundCell As Range Dim FAdr As String Application.ScreenUpdating = False iLastRow = Cells(Rows.Count, "A").End(xlUp).Row With Worksheets("Лист2") .Cells.ClearContents Range("A1:A" & iLastRow).AdvancedFilter xlFilterCopy, , .Range("A1"), True iLR = .Cells(.Rows.Count, "A").End(xlUp).Row For i = 2 To iLR n = 0 Set FoundCell = Columns(1).Find(.Cells(i, "A"), , xlValues, xlWhole) If Not FoundCell Is Nothing Then FAdr = FoundCell.Address Do .Cells(i, 2 + n) = Cells(FoundCell.Row, "B") Set FoundCell = Columns(1).FindNext(FoundCell) n = n + 1 Loop While FoundCell.Address <> FAdr End If Next End With Application.ScreenUpdating = True End Sub
[/vba]
Макрос в стандартный модуль, запускать при активном листе Лист1 [vba]
Код
Sub iArticul() Dim i As Long Dim n As Long Dim iLastRow As Long Dim iLR As Long Dim FoundCell As Range Dim FAdr As String Application.ScreenUpdating = False iLastRow = Cells(Rows.Count, "A").End(xlUp).Row With Worksheets("Лист2") .Cells.ClearContents Range("A1:A" & iLastRow).AdvancedFilter xlFilterCopy, , .Range("A1"), True iLR = .Cells(.Rows.Count, "A").End(xlUp).Row For i = 2 To iLR n = 0 Set FoundCell = Columns(1).Find(.Cells(i, "A"), , xlValues, xlWhole) If Not FoundCell Is Nothing Then FAdr = FoundCell.Address Do .Cells(i, 2 + n) = Cells(FoundCell.Row, "B") Set FoundCell = Columns(1).FindNext(FoundCell) n = n + 1 Loop While FoundCell.Address <> FAdr End If Next End With Application.ScreenUpdating = True End Sub