Страницы: 1
RSS
Макрос для копирования заданных значений на другой лист
 
Добрый день!
У меня такая задача. На листе А есть таблица с данными. Мне нужно данные из заранее известных ячеек таблицы, по нажатию кнопки, скопировать на лист В, при этом, при нажатии на кнопку еще раз в этот же день, данные должны переноситься в тоже самое место (или больше не переноситься), а в другой день, через строку от нижней заполненной ячейки. Т.е. данные на листе В не должны затираться, а каждое последующее копирование должно располагаться на две строчки ниже.
Простыми словами, есть дневная статистика на листе А, ее нужно архивировать по нажатию кнопки, на лист В, с текущей датой. От одной и той же даты, данные на листе А, не могут быть разные, поэтому переносить их можно или один раз в день или просто записывать их в те же самые  ячейки на листе В. В след. день, данные будут другие, их нужно расположить на листе В через строчку ниже, от предыдущих.
Буду очень рад Вашей помощи. Оговорюсь, в VBA знаний почти нет.
Спасибо.
 
Цитата
IGGI пишет: в VBA знаний почти нет
В таком случае результат получите быстрее, если разместите свою тему в разделе "Работа". Но и там потребуется Ваш файл с исходными данным и с желаемым результатом. Или ждите здесь...
 
как-то так - простенько без излишеств  :D
Изменено: kalbasiatka - 15.06.2013 00:44:31
 
Kalbasiatka, спасибо Вам огромное!!! Так быстро..) Это очень похоже на то что мне нужно. Буду пробовать адаптировать для своих данных)
 
kalbasiatka, Вы не могли бы подсказать, что нужно добавить, что бы на другую страницу переносились не только значения исходных ячеек, но и форматирование (фон ячейки, границы, шрифт и т.п)?
А так все получилось, очень рад Вашей помощи  :)
 
может так?
Код
Sub uuu()
    With Sheets("Лист2")
        lr = .Cells(Rows.Count, 1).End(xlUp).Row
        If .Cells(lr, 1) = Date Then
            Range("A2, C2, E2").Copy .Cells(lr, 1)
        Else: Range("A2, C2, E2").Copy .Cells(lr + 2, 1)
        End If
    End With
End Sub 
 
Да, это то, что нужно!) Спасибо Вам большое, все получилось!
 
Kolbasiatka, в моем случае все таки не получилось) В смысле у меня данные не в одной строке, а в разных. Как только в этой строке Else: Range("A2, C2, E2" ;) .Copy .Cells(lr + 2, 1) появляются данные из разных строк, выдает ошибку. Например вот так: Else: Range("A2, C2, E3" ;) .Copy .Cells(lr + 2, 1) уже не получается. Нельзя ли написать макрос, в кот. я смогу подставлять данные из множества ячеек на листе из разных строк и столбцов?
Спасибо.
 
Вот поэтому Вам и порекомендовали во 2-м посте перенести тему туда, где ей самое место.
Я сам - дурнее всякого примера! ...
 
Цитата
IGGI пишет:
у меня данные не в одной строке, а в разных.
Вы об этом предупредили? Или свой файл-пример показали?
 
Да нет, не показывал. Мне сходу предложили вариант который полностью меня устроил. А дополнительная, второстепенная задача, возникла позже. Тут я извиняюсь, пример сделаю.
Цитата
KuklP пишет:
Вот поэтому Вам и порекомендовали во 2-м посте перенести тему туда, где ей самое место.
Уважаемый, KukIP! Я так понимаю рекомендовали не Вы, Вы не модератор и по существу вопроса Вам сказать нечего. Во втором посте модератором было сказано "или ждите здесь". Так что не стоит засорять ветку, своими умными замечаниями, я разберусь без Вас.
 
Цитата
IGGI пишет:
пример сделаю.
И это правильно! :)
 
Цитата
IGGI пишет:
по существу вопроса Вам сказать нечего.
Есть чего сказать. Но не для халявщиков. Тем более не для грубиянов-халявщиков. Персонально для Вас,IGGI, - форум не стол халявных заказов. Для заказов есть ветка "Работа":
http://www.planetaexcel.ru/forum/?PAGE_NAME=list&FID=7
Цитата
IGGI пишет:
У меня такая задача... в VBA знаний почти нет...
Вот там и уместно ставить задачи.
Я сам - дурнее всякого примера! ...
 
Цитата
KuklP пишет:
Есть чего сказать. Но не для халявщиков. Тем более не для грубиянов-халявщиков. Персонально для Вас, IGGI,  - форум не стол халявных заказов. Для заказов есть ветка "Работа":
)) Экий Вы, ранимый безнесмен.. Покажите мне грубость в моем посте и если она там есть, я извинюсь.
А вот лично Вас, я не прошу не о помощи, не  о разъяснениях о том, что из себя представляет данный форум. Тут присутствуют люди, которые готовы помочь, не потрясая ящиком для благодарностей.  Более пожалуйста не утруждайтесь, я и так потратил на Вас много времени.
 
Вот пример)
 
Цитата
IGGI пишет:
Вот пример)

Для потомков. Вопрос был решен с помощью такого макроса:
Код
Sub архив()
Application.ScreenUpdating = False
    With Sheets("архив")
        lr = .Cells(Rows.Count, 2).End(xlUp).Row
        If .Cells(lr, 2) = Date Then
            Range("B5").Copy .Cells(lr - 1, 2)
            Range("C5").Copy
            .Cells(lr, 2).PasteSpecial Paste:=xlPasteValues
            .Cells(lr, 2).PasteSpecial Paste:=xlPasteFormats
            Range("J13:N13").Copy .Cells(lr - 1, 3)
            Range("C13:C17").Copy
            .Cells(lr, 3).PasteSpecial Transpose:=True
        Else
            Range("B5").Copy .Cells(lr + 2, 2)
            Range("C5").Copy
            .Cells(lr + 3, 2).PasteSpecial Paste:=xlPasteValues 'специальная вставка значения
            .Cells(lr + 3, 2).PasteSpecial Paste:=xlPasteFormats 'специальная вставка форматы
            Range("J13:N13").Copy .Cells(lr + 2, 3)
            Range("C13:C17").Copy
            .Cells(lr + 3, 3).PasteSpecial Transpose:=True
        End If
    End With
Application.ScreenUpdating = True
End Sub
Спасибо!
 
Здравствуйте. А можно изменить этот макрос, чтоб он записывал данные на лист Б подряд и убрать привязку к дате?
Спасибо.
Изменено: faridvg - 11.07.2017 13:15:49
 
Лучше создать новую тему с названием, отражающим суть задачи.
 
Всем привет,

Пожалуйста подскажите, есть часть макроса которая копирует диапазон и вставляет в столбец этот диапазон.
Нужно чтобы диапазон вставки каждый раз сдвигался направо по столбцам.
Код
Private Sub CommandButton3_Click()

    Range("F2").Copy
    Range("K2").Select
    ActiveSheet.Paste
    Range("F3").Copy
    Range("K3").Select
    ActiveSheet.Paste
    Range("F4").Copy
    Range("K4").Select
    ActiveSheet.Paste
    Range("F5").Copy
    Range("K5").Select
    ActiveSheet.Paste
Изменено: ANSWERIVER - 12.12.2018 15:19:37
Страницы: 1
Наверх