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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование столбцов с формулами через заданный интервал - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование столбцов с формулами через заданный интервал (Макросы/Sub)
Копирование столбцов с формулами через заданный интервал
kogotex Дата: Четверг, 04.05.2017, 15:05 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Как сделать копию столбцов с формулами в определенном диапазоне через определенный интервал?

Пример прикреплен: Лист1 - было, а Лист2 – желательный результат.
Столбцов и строк несколько сотен.
В примере, 2 раза копия через один интервал, но так будет не всегда, поэтому важно указание диапазона и возможность поменять шаг копирования.

Есть подобная тема копирование столбцов n-ое кол-во раз, но там данные без формул и привязанное копирование без интервала, хотя можно наверное как-то модифицировать макрос, как?

Или можно ли изменить это макрос интервального дублирования?
[vba]
Код
Sub Макрос()
    Dim lstCol&, copyCol&, n&, m&, i&
    lstCol = 10
    copyCol = 3
    n = 2
    m = 3
    For i = lstCol To 1 Step -m
        Columns(i).Copy
        Columns(i).Offset(, 1).Resize(, n).Insert Shift:=xlToRight
    Next
End Sub
[/vba]

Помогите с макросом кто сможет такое.
К сообщению приложен файл: 4316222.xlsx(13Kb)


Сообщение отредактировал kogotex - Четверг, 04.05.2017, 15:23
 
Ответить
СообщениеКак сделать копию столбцов с формулами в определенном диапазоне через определенный интервал?

Пример прикреплен: Лист1 - было, а Лист2 – желательный результат.
Столбцов и строк несколько сотен.
В примере, 2 раза копия через один интервал, но так будет не всегда, поэтому важно указание диапазона и возможность поменять шаг копирования.

Есть подобная тема копирование столбцов n-ое кол-во раз, но там данные без формул и привязанное копирование без интервала, хотя можно наверное как-то модифицировать макрос, как?

Или можно ли изменить это макрос интервального дублирования?
[vba]
Код
Sub Макрос()
    Dim lstCol&, copyCol&, n&, m&, i&
    lstCol = 10
    copyCol = 3
    n = 2
    m = 3
    For i = lstCol To 1 Step -m
        Columns(i).Copy
        Columns(i).Offset(, 1).Resize(, n).Insert Shift:=xlToRight
    Next
End Sub
[/vba]

Помогите с макросом кто сможет такое.

Автор - kogotex
Дата добавления - 04.05.2017 в 15:05
китин Дата: Четверг, 04.05.2017, 15:20 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4419
Репутация: 698 ±
Замечаний: 0% ±

Excel 2007;Excel 2010
примера нет.


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538
 
Ответить
Сообщениепримера нет.

Автор - китин
Дата добавления - 04.05.2017 в 15:20
kogotex Дата: Четверг, 04.05.2017, 15:22 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
китин, Уже, замешкался несколько...
 
Ответить
Сообщениекитин, Уже, замешкался несколько...

Автор - kogotex
Дата добавления - 04.05.2017 в 15:22
RAN Дата: Четверг, 04.05.2017, 16:35 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4605
Репутация: 925 ±
Замечаний: 0% ±

2010
Нечего по форумам как белка скакать. А уж если скакать, то везде. А то вчера, глядя на ваш оживленный диалог на Планете, я решил, что мой макрос не нужен.
И да, задавая вопрос по макросам, не грех и файл прикладывать с макросом.
[vba]
Код
Sub Макрос()
    Dim lstCol&, copyCol, n, m, i&, x
    x = InputBox("Укажите последний столбец")
    If Len(x) Then Else Exit Sub
    If IsNumeric(x) Then lstCol = Val(x) Else lstCol = Columns(x).Column
    copyCol = InputBox("Укажите число копий")
    If IsNumeric(copyCol) Then copyCol = Val(copyCol) Else Exit Sub
    n = InputBox("Укажите число копируемых столбцов")
    If IsNumeric(n) Then n = Val(n) Else Exit Sub
    m = InputBox("Укажите шаг копирования")
    If IsNumeric(m) Then m = Val(m) Else Exit Sub
    With ActiveSheet
        For i = lstCol To lstCol - copyCol * (m - 1) Step -m
            .Columns(i).Copy
            .Columns(i).Offset(, 1).Resize(, n).Insert Shift:=xlToRight
            x = Intersect(.UsedRange, .Columns(i)).Formula
            For j = 1 To n
                Intersect(.UsedRange, .Columns(i).Offset(, j)).Value = x
            Next
        Next
    End With
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНечего по форумам как белка скакать. А уж если скакать, то везде. А то вчера, глядя на ваш оживленный диалог на Планете, я решил, что мой макрос не нужен.
И да, задавая вопрос по макросам, не грех и файл прикладывать с макросом.
[vba]
Код
Sub Макрос()
    Dim lstCol&, copyCol, n, m, i&, x
    x = InputBox("Укажите последний столбец")
    If Len(x) Then Else Exit Sub
    If IsNumeric(x) Then lstCol = Val(x) Else lstCol = Columns(x).Column
    copyCol = InputBox("Укажите число копий")
    If IsNumeric(copyCol) Then copyCol = Val(copyCol) Else Exit Sub
    n = InputBox("Укажите число копируемых столбцов")
    If IsNumeric(n) Then n = Val(n) Else Exit Sub
    m = InputBox("Укажите шаг копирования")
    If IsNumeric(m) Then m = Val(m) Else Exit Sub
    With ActiveSheet
        For i = lstCol To lstCol - copyCol * (m - 1) Step -m
            .Columns(i).Copy
            .Columns(i).Offset(, 1).Resize(, n).Insert Shift:=xlToRight
            x = Intersect(.UsedRange, .Columns(i)).Formula
            For j = 1 To n
                Intersect(.UsedRange, .Columns(i).Offset(, j)).Value = x
            Next
        Next
    End With
End Sub
[/vba]

Автор - RAN
Дата добавления - 04.05.2017 в 16:35
kogotex Дата: Четверг, 04.05.2017, 18:23 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
RAN,
[offtop]По поводу форумов , не было комментариев из-за простоты и понятности работы вашего макроса, а на Планете вопросы были и подходы разные. Также не ожидал активной реакции и участия. Сразу утром добавил репутацию.[/offtop]

По поводу этого макроса: или я чего-то не понимаю или?
Применяю макрос к листу1 примера:
"Укажите последний столбец" – H
"Укажите число копий" – 2
"Укажите число копируемых столбцов" – 3
"Укажите шаг копирования" – 2
(разве это не то же что и число копий? здесь же не дублирование)
Итог – Лист2 примера никак не получается.
Подскажите где моя ошибка?
 
Ответить
СообщениеRAN,
[offtop]По поводу форумов , не было комментариев из-за простоты и понятности работы вашего макроса, а на Планете вопросы были и подходы разные. Также не ожидал активной реакции и участия. Сразу утром добавил репутацию.[/offtop]

По поводу этого макроса: или я чего-то не понимаю или?
Применяю макрос к листу1 примера:
"Укажите последний столбец" – H
"Укажите число копий" – 2
"Укажите число копируемых столбцов" – 3
"Укажите шаг копирования" – 2
(разве это не то же что и число копий? здесь же не дублирование)
Итог – Лист2 примера никак не получается.
Подскажите где моя ошибка?

Автор - kogotex
Дата добавления - 04.05.2017 в 18:23
RAN Дата: Четверг, 04.05.2017, 18:50 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4605
Репутация: 925 ±
Замечаний: 0% ±

2010
"Укажите последний столбец" – H

в примере последний столбец, который копируем - столбец "J"
"Укажите число копий" – 2

сколько раз копируем, или как далеко ползем влево от последнего столбца (1, 2 или 20 раз, в примере 3)
"Укажите число копируемых столбцов" – 3

сколько экземпляров копируемого столбца добавляем на каждом шаге (сколько угодно, в примере 2)
"Укажите шаг копирования" – 2

с каким шагом копируемые столбцы расположены на листе (3, предыдущий столбец доля копирования "G", перед ним "D")

Исправьте текст сообщений по вкусу.

Итого: "J", или 10; 3; 2; 3


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
"Укажите последний столбец" – H

в примере последний столбец, который копируем - столбец "J"
"Укажите число копий" – 2

сколько раз копируем, или как далеко ползем влево от последнего столбца (1, 2 или 20 раз, в примере 3)
"Укажите число копируемых столбцов" – 3

сколько экземпляров копируемого столбца добавляем на каждом шаге (сколько угодно, в примере 2)
"Укажите шаг копирования" – 2

с каким шагом копируемые столбцы расположены на листе (3, предыдущий столбец доля копирования "G", перед ним "D")

Исправьте текст сообщений по вкусу.

Итого: "J", или 10; 3; 2; 3

Автор - RAN
Дата добавления - 04.05.2017 в 18:50
kogotex Дата: Четверг, 04.05.2017, 19:23 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
RAN,
:D
Ваш макрос _дублирования_ прекрасен, особенно в теме про _копирование_!

Это другая тема, здесь прикреплен другой пример, с другим именем и нужен другой результат.
Старый макрос дублирования приведен как пример простой и понятной работы с интервалом,
с надеждой, что он будет изменен под приложенный к теме пример.
А я все думаю какой-такой "J", почему "J", нет в прикрепленном примере никаких данных в столбце "J"...

P.S.: За доработанный до совершенства макрос дублирования кстати дополнительное спасибо.


Сообщение отредактировал kogotex - Пятница, 05.05.2017, 08:18
 
Ответить
СообщениеRAN,
:D
Ваш макрос _дублирования_ прекрасен, особенно в теме про _копирование_!

Это другая тема, здесь прикреплен другой пример, с другим именем и нужен другой результат.
Старый макрос дублирования приведен как пример простой и понятной работы с интервалом,
с надеждой, что он будет изменен под приложенный к теме пример.
А я все думаю какой-такой "J", почему "J", нет в прикрепленном примере никаких данных в столбце "J"...

P.S.: За доработанный до совершенства макрос дублирования кстати дополнительное спасибо.

Автор - kogotex
Дата добавления - 04.05.2017 в 19:23
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование столбцов с формулами через заданный интервал (Макросы/Sub)
Страница 1 из 11
Поиск:

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