При копировании данных(Лист2),нужно вставить данные( в Лист1) таким образом: в диапазон (А7;С7)и(Е7;А7) (I7;J7), но не вставлять в ячейки (G7;H7)и в ячейку D7. Обьём данных очень большой, поэтому вручную или через ВПР не вариант.
При копировании данных(Лист2),нужно вставить данные( в Лист1) таким образом: в диапазон (А7;С7)и(Е7;А7) (I7;J7), но не вставлять в ячейки (G7;H7)и в ячейку D7. Обьём данных очень большой, поэтому вручную или через ВПР не вариант.Dasha23
Добавьте на Лист2 пустые столбцы D, G H Скопируйте на Лист 2 диапазон А1:J1 Перейдите на Лист1, встаньте в ячейку Правая кнопка мыши - Специальная вставка - поставьте галку "Пропускать пустые ячейки" (можно еще поставить точку на "Значения") - ОК Вставятся только те ячейки, который заполнены на Лист2
Добавьте на Лист2 пустые столбцы D, G H Скопируйте на Лист 2 диапазон А1:J1 Перейдите на Лист1, встаньте в ячейку Правая кнопка мыши - Специальная вставка - поставьте галку "Пропускать пустые ячейки" (можно еще поставить точку на "Значения") - ОК Вставятся только те ячейки, который заполнены на Лист2_Boroda_
Я написала, что очень большой обьем данных. то что я вложила лишь часть таблицы.В ней более 1000 столбцов и более 1000 строк.Вы думаете поставить в каждом столбце "=" это вариант?
Я написала, что очень большой обьем данных. то что я вложила лишь часть таблицы.В ней более 1000 столбцов и более 1000 строк.Вы думаете поставить в каждом столбце "=" это вариант?Dasha23
Правила форума - "При этом старайтесь сохранить структуру, расположение таблиц, имена листов - аналогично оригиналу"
1. В сводную можно просто вставить пустые поля таким образом, чтобы результат по расположению совпадал с нужной таблицей 2. Если Вы все равно пытаетесь вручную копировать, то почему не вставить скопированное рядом как значения, добавить нужные столбцы, снова скопировать и вставить уже в нужное место с использованием методики из поста 3 3. Если Вы все равно пытаетесь вручную копировать, то почему не сделать это в три этапа - сначала один блок столбцов, затем второй, затем третий. По-любому быстрее, чем все эти пляски, предложенные выше 4. Макрос посоветовать? Вряд ли. А вот написать можно. Но как писать с таким примером? Впустую работать неохота, вдруг потом снова появится "На самом деле ..."? 5. Пропустил пост с "В ней более 1000 столбцов и более 1000 строк", как раз подтверждающий слова про "работать впустую". Но вот в этом случае как раз самый логичный способ предложен boa - один раз все настроить и дальше просто наслаждаться. А макрос в этом случае будет простой, но очеь длинный, Вы можете сами записать его макрорекодером и подправить потом немного ручками. А если писать его покороче, то нужно знать логику расположения столбцов (или должно быть точное соответствие их названий), тогда можно циклом
*. Вы хотите сказать, что у Вас сводная таблица в 1000 столбцов? Какая прелесть! Если Вы макросами не владеете, то сколько же времени Вы потратили на ее создание?
Правила форума - "При этом старайтесь сохранить структуру, расположение таблиц, имена листов - аналогично оригиналу"
1. В сводную можно просто вставить пустые поля таким образом, чтобы результат по расположению совпадал с нужной таблицей 2. Если Вы все равно пытаетесь вручную копировать, то почему не вставить скопированное рядом как значения, добавить нужные столбцы, снова скопировать и вставить уже в нужное место с использованием методики из поста 3 3. Если Вы все равно пытаетесь вручную копировать, то почему не сделать это в три этапа - сначала один блок столбцов, затем второй, затем третий. По-любому быстрее, чем все эти пляски, предложенные выше 4. Макрос посоветовать? Вряд ли. А вот написать можно. Но как писать с таким примером? Впустую работать неохота, вдруг потом снова появится "На самом деле ..."? 5. Пропустил пост с "В ней более 1000 столбцов и более 1000 строк", как раз подтверждающий слова про "работать впустую". Но вот в этом случае как раз самый логичный способ предложен boa - один раз все настроить и дальше просто наслаждаться. А макрос в этом случае будет простой, но очеь длинный, Вы можете сами записать его макрорекодером и подправить потом немного ручками. А если писать его покороче, то нужно знать логику расположения столбцов (или должно быть точное соответствие их названий), тогда можно циклом
*. Вы хотите сказать, что у Вас сводная таблица в 1000 столбцов? Какая прелесть! Если Вы макросами не владеете, то сколько же времени Вы потратили на ее создание?_Boroda_
Sub CopyUserRange() '' Author: boa '' Written: 05.12.2018
Dim RunTimes As Date: RunTimes = Time Dim Start!: Start = Timer
Dim shOut As Worksheet: Set shOut = ThisWorkbook.Sheets("Лист2") ' Лист с которого копируем Dim shIn As Worksheet: Set shIn = ThisWorkbook.Sheets("Лист1") ' Лист в который копируем
Dim ArrColumnsOut(): ArrColumnsOut = Array(1, 2, 3, 4, 5, 6, 7) ' колонки для копирования Dim ArrColumnsIn(): ArrColumnsIn = Array(1, 2, 3, 5, 6, 9, 10) ' колонки куда вставляем If UBound(ArrColumnsOut) <> UBound(ArrColumnsIn) Then Exit Sub ' массивы с номерами колонок должны быть одинакового размера.
Dim firstRowOut&: firstRowOut = 1 ' первая строка листа с которого копируем Dim firstRowIn&: firstRowIn = 7 ' первая строка листа куда вставляем
Dim LastRow&: LastRow = shOut.Cells.SpecialCells(xlLastCell).Row ' последняя строка копируемого диапазона
With Application: .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False: End With 'отключаем пересчет, обновление экрана и т.п.
Dim i&: For i = LBound(ArrColumnsOut) To UBound(ArrColumnsOut) With shOut .Range(.Cells(firstRowOut, ArrColumnsOut(i)), .Cells(LastRow, ArrColumnsOut(i))).Copy shIn.Cells(firstRowIn, ArrColumnsIn(i)) End With Next i
With Application: .ScreenUpdating = True: .EnableEvents = True: .DisplayAlerts = True: End With
Sub CopyUserRange() '' Author: boa '' Written: 05.12.2018
Dim RunTimes As Date: RunTimes = Time Dim Start!: Start = Timer
Dim shOut As Worksheet: Set shOut = ThisWorkbook.Sheets("Лист2") ' Лист с которого копируем Dim shIn As Worksheet: Set shIn = ThisWorkbook.Sheets("Лист1") ' Лист в который копируем
Dim ArrColumnsOut(): ArrColumnsOut = Array(1, 2, 3, 4, 5, 6, 7) ' колонки для копирования Dim ArrColumnsIn(): ArrColumnsIn = Array(1, 2, 3, 5, 6, 9, 10) ' колонки куда вставляем If UBound(ArrColumnsOut) <> UBound(ArrColumnsIn) Then Exit Sub ' массивы с номерами колонок должны быть одинакового размера.
Dim firstRowOut&: firstRowOut = 1 ' первая строка листа с которого копируем Dim firstRowIn&: firstRowIn = 7 ' первая строка листа куда вставляем
Dim LastRow&: LastRow = shOut.Cells.SpecialCells(xlLastCell).Row ' последняя строка копируемого диапазона
With Application: .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False: End With 'отключаем пересчет, обновление экрана и т.п.
Dim i&: For i = LBound(ArrColumnsOut) To UBound(ArrColumnsOut) With shOut .Range(.Cells(firstRowOut, ArrColumnsOut(i)), .Cells(LastRow, ArrColumnsOut(i))).Copy shIn.Cells(firstRowIn, ArrColumnsIn(i)) End With Next i
With Application: .ScreenUpdating = True: .EnableEvents = True: .DisplayAlerts = True: End With
_Boroda_,если вам впустую работать неохота, так и не помогайте.Форум создан для помощи, а не для высказывания негатива и негодования.Да, и к вашему сведению я владею макросами!!! P.S Спасибо пользователю boa, всё отлично получилось :ok:
_Boroda_,если вам впустую работать неохота, так и не помогайте.Форум создан для помощи, а не для высказывания негатива и негодования.Да, и к вашему сведению я владею макросами!!! P.S Спасибо пользователю boa, всё отлично получилось :ok:Dasha23
Dasha23, зря вы так, Александр, многим, и часто, и регулярно помогает, при чем безвозмездно! А то, что я подобрал универсальное решение для вашей ситуации, так это у меня, наверное, сегодня звезды были иначе расположены, и время было. [p.s.]Вы путаете помощь с создданием готового решения. Помощь, это когда вы что-то сделали и уперлись в какой-то "затык", а вам помогли разобраться в деталях и/или направили в нужную сторону. А не когда за вас сделали готовое решение.[/p.s.]
Dasha23, зря вы так, Александр, многим, и часто, и регулярно помогает, при чем безвозмездно! А то, что я подобрал универсальное решение для вашей ситуации, так это у меня, наверное, сегодня звезды были иначе расположены, и время было. [p.s.]Вы путаете помощь с создданием готового решения. Помощь, это когда вы что-то сделали и уперлись в какой-то "затык", а вам помогли разобраться в деталях и/или направили в нужную сторону. А не когда за вас сделали готовое решение.[/p.s.]boa
Сообщение отредактировал boa - Среда, 05.12.2018, 20:57