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

Вход

Регистрация

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

 

= Мир MS Excel/преобразовать двухмерный массив в новом листе в колонки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » преобразовать двухмерный массив в новом листе в колонки (Макросы/Sub)
преобразовать двухмерный массив в новом листе в колонки
cOBA43 Дата: Вторник, 17.09.2019, 11:20 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
есть массив в первом и втором столбце на первом листе.
нужно перенести данные на второй лист :
первая колонка с первого листа переносится на второй лист и удаляются дубликаты (остаются только уникальные значения)
данные из второй колонки первого листа нужно перенести на второй лист но разбить по колонкам (то есть все данные для уникальной записи из первой колонки из строчного варианта преобразуются в колонки)

я настроил функции НО у меня более 500 000 строк и уникальная запись из первой колонки (первого листа) может иметь больше 400 признаков и отработка одной колонки требует более 10 минут !!!!
поэтому прошу спецов помочь с кодом VBA.
К сообщению приложен файл: 2961154.xlsx (86.5 Kb)
 
Ответить
Сообщениеесть массив в первом и втором столбце на первом листе.
нужно перенести данные на второй лист :
первая колонка с первого листа переносится на второй лист и удаляются дубликаты (остаются только уникальные значения)
данные из второй колонки первого листа нужно перенести на второй лист но разбить по колонкам (то есть все данные для уникальной записи из первой колонки из строчного варианта преобразуются в колонки)

я настроил функции НО у меня более 500 000 строк и уникальная запись из первой колонки (первого листа) может иметь больше 400 признаков и отработка одной колонки требует более 10 минут !!!!
поэтому прошу спецов помочь с кодом VBA.

Автор - cOBA43
Дата добавления - 17.09.2019 в 11:20
anvg Дата: Вторник, 17.09.2019, 13:12 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток.
Версия на Power Query
К сообщению приложен файл: 7251067.xlsx (88.2 Kb)
 
Ответить
СообщениеДоброе время суток.
Версия на Power Query

Автор - anvg
Дата добавления - 17.09.2019 в 13:12
cOBA43 Дата: Вторник, 17.09.2019, 15:18 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Версия на Power Query


спасибо ,попробую с целым файлом!!!
с Power Query не работал((
можете посоветовать толковую книгу ?

я так понял что нужно делать по принципу сводных таблиц только сообразить с наскока не могу - не делал такого .


Сообщение отредактировал cOBA43 - Вторник, 17.09.2019, 15:41
 
Ответить
Сообщение
Версия на Power Query


спасибо ,попробую с целым файлом!!!
с Power Query не работал((
можете посоветовать толковую книгу ?

я так понял что нужно делать по принципу сводных таблиц только сообразить с наскока не могу - не делал такого .

Автор - cOBA43
Дата добавления - 17.09.2019 в 15:18
anvg Дата: Вторник, 17.09.2019, 20:34 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Power Query не работал((
Приношу свои извинения - упустил, что у вас 2007. Power Query появился в 2010.
Вариант на Microsoft Query. Файл сохранить в c:\path. Есть проблема. Есть ограничение по числу полей свёртки. На усечённом примере с 10 столбцами - отработал. На 79, как в исходнике - нет.
К сообщению приложен файл: database.xlsx (35.4 Kb)
 
Ответить
Сообщение
Power Query не работал((
Приношу свои извинения - упустил, что у вас 2007. Power Query появился в 2010.
Вариант на Microsoft Query. Файл сохранить в c:\path. Есть проблема. Есть ограничение по числу полей свёртки. На усечённом примере с 10 столбцами - отработал. На 79, как в исходнике - нет.

Автор - anvg
Дата добавления - 17.09.2019 в 20:34
cOBA43 Дата: Среда, 18.09.2019, 09:17 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Файл сохранить в c:\path. Есть проблема. Есть ограничение по числу полей свёртки.


Доброго дня
у меня Офис 2016 (работаю в экселе и БД) и Power Query с Power BI можно запустить НО я не работал в этих продуктах(( и поэтому не представляю что делать.
Поэтому и прошу подсказать толковое руководство ,а то как баран на новые ворота смотрю и облизываюсь.


Сообщение отредактировал cOBA43 - Среда, 18.09.2019, 09:22
 
Ответить
Сообщение
Файл сохранить в c:\path. Есть проблема. Есть ограничение по числу полей свёртки.


Доброго дня
у меня Офис 2016 (работаю в экселе и БД) и Power Query с Power BI можно запустить НО я не работал в этих продуктах(( и поэтому не представляю что делать.
Поэтому и прошу подсказать толковое руководство ,а то как баран на новые ворота смотрю и облизываюсь.

Автор - cOBA43
Дата добавления - 18.09.2019 в 09:17
Pelena Дата: Среда, 18.09.2019, 09:32 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19159
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
можете посоветовать толковую книгу ?

Скульптор данных в Excel с Power Query


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
можете посоветовать толковую книгу ?

Скульптор данных в Excel с Power Query

Автор - Pelena
Дата добавления - 18.09.2019 в 09:32
cOBA43 Дата: Четверг, 19.09.2019, 15:37 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Скульптор данных в Excel с Power Query

спасибо - пока пол книги прочел но решения еще не увидел
я так понял что вместо Power Query можно применить сводные таблицы (еще бы разобраться как настроить вывод по колонкам (( )
 
Ответить
Сообщение
Скульптор данных в Excel с Power Query

спасибо - пока пол книги прочел но решения еще не увидел
я так понял что вместо Power Query можно применить сводные таблицы (еще бы разобраться как настроить вывод по колонкам (( )

Автор - cOBA43
Дата добавления - 19.09.2019 в 15:37
nilem Дата: Четверг, 19.09.2019, 17:11 | Сообщение № 8
Группа: Авторы
Ранг: Старожил
Сообщений: 1612
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Если Ваши 500000 артикулов удалить дубликаты, то сколько останется?
И сколько моделей м.б. максимум в одном артикуле? ориентировочно
Разовая задача?
[p.s.]Скульптор данных в Excel с Power Query - тоже начал было читать. Что-то не очень. Т.е. книжка как как книжка, а вот PQ не очень )[/p.s.]


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеЕсли Ваши 500000 артикулов удалить дубликаты, то сколько останется?
И сколько моделей м.б. максимум в одном артикуле? ориентировочно
Разовая задача?
[p.s.]Скульптор данных в Excel с Power Query - тоже начал было читать. Что-то не очень. Т.е. книжка как как книжка, а вот PQ не очень )[/p.s.]

Автор - nilem
Дата добавления - 19.09.2019 в 17:11
cOBA43 Дата: Пятница, 20.09.2019, 11:16 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Если Ваши 500000 артикулов удалить дубликаты, то сколько останется?
И сколько моделей м.б. максимум в одном артикуле? ориентировочно


Это не прокатит так как для каждого значения из первой колонки нужны все критерии из второй !!!
в БД это реализовать можно без проблем через ID но мне нужна инфа в экселе ((
 
Ответить
Сообщение
Если Ваши 500000 артикулов удалить дубликаты, то сколько останется?
И сколько моделей м.б. максимум в одном артикуле? ориентировочно


Это не прокатит так как для каждого значения из первой колонки нужны все критерии из второй !!!
в БД это реализовать можно без проблем через ID но мне нужна инфа в экселе ((

Автор - cOBA43
Дата добавления - 20.09.2019 в 11:16
nilem Дата: Пятница, 20.09.2019, 12:56 | Сообщение № 10
Группа: Авторы
Ранг: Старожил
Сообщений: 1612
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Ведь у Вас в примере (1-е сообщение) в результате только уникальные артикулы. Почему не прокатит?
Ну ладно...


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеВедь у Вас в примере (1-е сообщение) в результате только уникальные артикулы. Почему не прокатит?
Ну ладно...

Автор - nilem
Дата добавления - 20.09.2019 в 12:56
cOBA43 Дата: Понедельник, 23.09.2019, 14:52 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Ведь у Вас в примере (1-е сообщение) в результате только уникальные артикулы. Почему не прокатит?


на первом листе исходная выгрузка из БД ,а на втором пример как преобразовать массив.
то есть копируем первую колонку с первого листа на второй и удаляем для нее дубликата - так получаем колонку уникальных данных без дубликатов , и вот к этим данным нужно привязать все свойства второй колонки (разносим по колонкам)
 
Ответить
Сообщение
Ведь у Вас в примере (1-е сообщение) в результате только уникальные артикулы. Почему не прокатит?


на первом листе исходная выгрузка из БД ,а на втором пример как преобразовать массив.
то есть копируем первую колонку с первого листа на второй и удаляем для нее дубликата - так получаем колонку уникальных данных без дубликатов , и вот к этим данным нужно привязать все свойства второй колонки (разносим по колонкам)

Автор - cOBA43
Дата добавления - 23.09.2019 в 14:52
Kuzmich Дата: Понедельник, 23.09.2019, 15:53 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 155 ±
Замечаний: 0% ±

Excel 2003
Макрос в стандартный модуль, запускать при активном листе Лист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
[/vba]

Автор - Kuzmich
Дата добавления - 23.09.2019 в 15:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » преобразовать двухмерный массив в новом листе в колонки (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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