Страницы: 1
RSS
Копирование структуры таблицы в столбец, Необходимо повторить структуру таблицы но копировать определенные столбцы.
 
Здравствуйте гуру.

Такая проблема. Имеется файл было.xlsx  В нем такая структура таблицы, A1:C7 - это неизменная часть (выделил зеленым), которую нужно скопировать вниз столько раз сколько есть "желтых" столбцов, в моём примере 4 раза, начиная с столбца E (количество может быть разным)
Далее необходимо скопировать в столбец D каждый из желтых столбцов. Т.е должна получиться таблица с дублированным зеленым массивом и единым столбцом D.
Для наглядности сварганил как должно получиться в итоге - файл стало.xlsx

Помогите пожалуйста. Таблицы бываю очень большие, я задолбался делать это ручным копированием. По поиску ничего толкового найти не могу (даже не совсем понимаю как правильно задать поисковую фразу).
 
Доброе время суток.
Судя по версии Excel, Power Query вполне доступен.
 
В стандартный модуль книги "Было". Надеюсь больше 100 столбцов у вас не бывает.
Запускать при активном листе1
Код
Sub iCopy()
Dim iLastRow As Long
Dim iLR As Long
Dim iLastCol As Integer
Dim rng As Range
Dim j As Integer
  iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
    Set rng = Range(Cells(1, 1), Cells(iLastRow, 100))
  iLastCol = rng.Find("*", rng(1, 1), xlValues, , xlByColumns, xlPrevious).Column
      Set rng = Range(Cells(1, 1), Cells(iLastRow, 3))
    For j = 5 To iLastCol
      iLR = Cells(Rows.Count, "A").End(xlUp).Row + 1
        rng.Copy Cells(iLR, "A")
      Range(Cells(1, j), Cells(iLastRow, j)).Cut Cells(iLR, "D")
    Next
End Sub
 
Цитата
Kuzmich написал: Запускать при активном листе1
Попробовал запустить на "боевом" файле и получил ошибку про недостаток памяти.
https://yadi.sk/d/e1OGg2TwM-JSwg - актуальный файл.

Цитата
Андрей VG написал:  Power Query вполне доступен.
Спасибо за подсказку, но не смог разобраться в шагах, как я понял это то что нужно, но адаптировать к своему файлу не получилось.
 
Дмитрий, написал
Цитата
Попробовал запустить на "боевом" файле и получил ошибку про недостаток памяти.
Так у вас 7000 строк в диапазоне столбцов A:L это и есть неизменная часть (выделил зеленым) ?
А единый столбец - это столбец М ?
А что делать, если некоторые столбцы после М будут пустыми?
 
Kuzmich, Единый столбец  - М

Цитата
Kuzmich написал:
А что делать, если некоторые столбцы после М будут пустыми?
Их нужно тоже переносить в единый столбец М без изменений.
 
7020 строк и порядка 100 столбцов - вот памяти и не хватает.
Попробуйте так, если и пустые столбцы надо переносить
Код
Sub iCopy()
Dim iLastRow As Long
Dim iLR As Long
Dim iLastCol As Integer
Dim rng As Range
Dim j As Integer
Application.ScreenUpdating = False
  iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
      Set rng = Range(Cells(2, 1), Cells(iLastRow, "L"))          'неизменная часть
      iLastCol = Cells(1, Columns.Count).End(xlToLeft).Column     'последний столбец
    For j = 14 To iLastCol    'от столбца N и до последнего       'единый столбец - столбец М
'      If WorksheetFunction.CountA(Range(Cells(2, j), Cells(iLastRow, j))) <> 0 Then
       iLR = Cells(Rows.Count, "A").End(xlUp).Row + 1
         rng.Copy Cells(iLR, "A")
         Range(Cells(2, j), Cells(iLastRow, j)).Cut Cells(iLR, "M")
'      End If
    Next
Application.ScreenUpdating = True
End Sub
Изменено: Kuzmich - 15.06.2020 14:15:45
 
Два варивнта формулами
Изменено: jakim - 15.06.2020 19:28:59
 
Kuzmich, jakim, Андрей VG,Спасибо большое за отклик, проблему решил с Вашей помощью.
Страницы: 1
Наверх