0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 10
1

Перенос данных с одного листа на другой в Excel

04.01.2013, 15:26. Показов 20607. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
На первом листе есть данные. При активации следующих листов проверить наличие данных в этих листах. Если данных на листе нет, то скопировать их с предыдущего листа. Притом, при выполнении макроса, данные должны копироваться с одного листа на другой не автоматически, а при ручном выборе листов.
Помогите пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2013, 15:26
Ответы с готовыми решениями:

Перенос данных из одного листа Excel в другой
Добрый день Уважаемые!!! Обращаюсь к Вам с такой помощью. Необходимо чтобы при открытии листа...

Перенос данных с одного листа на другой в Excel
Доброго времени суток! Голову сломал, не найти полезной инфы. Есть лист "1" - дано (вписываем от...

Перенос данных в Excel c одного листа на другой
Возникла необходимость поковыряться в Excel, раньше на VBA не программировал, поэтому рассчитываю...

Перенос картинок в Excel с одного листа на другой
Добрый день! Я умею худо бедно программировать на VBA, а хочу сделать программу для Android, делаю...

10
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,607
Записей в блоге: 13
04.01.2013, 18:29 2
Покажи, как выглядят данные на листах
0
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 10
04.01.2013, 19:04  [ТС] 3
вот так например
Вложения
Тип файла: xlsx 18.xlsx (8.3 Кб, 713 просмотров)
0
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
04.01.2013, 19:20 4
Держите
Visual Basic
1
2
3
4
5
6
7
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Cells.Text = "" And Sh.Index > 1 Then
        If MsgBox("Скопировать данные из предыдущего листа?", vbYesNo) = vbYes Then
            Sheets(Sh.Index - 1).Cells.Copy Destination:=Sh.[A1]
        End If
    End If
End Sub
1
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 10
04.01.2013, 21:23  [ТС] 5
Макрос копирует с 1 листа на 2, со 2 на 3 и так далее. Но после того, как он скопировал с 1 листа на 2, чтобы он скопировал со 2 на 3, передаваемый в макрос параметр нужно менять. Как можно сделать так, чтобы этого делать не нужно было? И еще один момент: как сделать так, чтобы при нажатии вкладки вставить лист, в этот созданный лист данные тоже передавались?
0
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
04.01.2013, 23:16 6
Цитата Сообщение от vla-dos Посмотреть сообщение
Но после того, как он скопировал с 1 листа на 2, чтобы он скопировал со 2 на 3, передаваемый в макрос параметр нужно менять.
Сейчас он так и делает
Цитата Сообщение от vla-dos Посмотреть сообщение
Как можно сделать так, чтобы этого делать не нужно было?
Т.е. чтобы он брал данные только с первого листа? Тогда так...
Visual Basic
1
2
3
4
5
6
7
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Cells.Text = "" And Sh.Index > 1 Then
        If MsgBox("Скопировать данные из предыдущего листа?", vbYesNo) = vbYes Then
            Sheets(1).Cells.Copy Destination:=Sh.[A1]
        End If
    End If
End Sub
Цитата Сообщение от vla-dos Посмотреть сообщение
И еще один момент: как сделать так, чтобы при нажатии вкладки вставить лист, в этот созданный лист данные тоже передавались?
Visual Basic
1
2
3
4
5
Private Sub Workbook_NewSheet(ByVal Sh As Object)
    If MsgBox("Скопировать данные из предыдущего листа?", vbYesNo) = vbYes Then
           Sheets(Sh.Index - 1).Cells.Copy Destination:=Sh.[A1]
    End If
End Sub
0
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 10
04.01.2013, 23:39  [ТС] 7
Нет, сделать так, чтобы менять параметр в коде не нужно было, то есть макрос во время выполнения может переносить с 1 на 2, со 2 на 3, с 3 на 4 и так далее.
0
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
05.01.2013, 00:35 8
Чот я вас не понял!
Ну так в первом моем примере он так и делает.
Т.е. при активации листа (при ручном выборе) он проверяет есть ли на нем данные, если их нет, то он копирует их из предыдущего
0
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 10
05.01.2013, 16:26  [ТС] 9
Как сделать так, чтобы он за одно выполнение мог сделать больше одного переноса (то есть он мог перенести с Лист1 на Лист2, с Лист2 на Лист3, с Лист3 на Лист4 и т.д.)
0
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
05.01.2013, 17:34 10
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Cells.Text = "" And Sh.Index > 1 Then
        If MsgBox("Скопировать данные из предыдущего листа?", vbYesNo) = vbYes Then
            Application.EnableEvents = False
            For i = Sh.Index To Sheets.Count
                Sheets(i - 1).Cells.Copy Destination:=Sheets(i).[A1]
            Next
            Application.EnableEvents = True
        End If
    End If
End Sub
1
1 / 1 / 0
Регистрация: 11.03.2013
Сообщений: 56
25.05.2013, 13:58 11
ув. Watcher_1

Ваш первый макрос подходит так же и для моей задачи. Но мне нужны 2 дополнения (сам я пробовал - не получилось)
1. Нужно, что бы копировалась не ячейка целиком, а только текст из соответствующей ячейки предыдущего листа, так как форматирование у каждого листа своё (цвет фона, ширина столбца и т. д.).
2. В Destination-листе (в листе на который копируются данные) кое-какие ячейки уже заполнены (содержат либо текст, либо формулу). Нужно эти ячейки пропускать (их содержимое не должно затереться).

Такое осуществимо?

Добавлено через 1 час 27 минут
Вот что-то написал:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim c As Integer, r As Integer
    If Sh.Index > 1 Then
        If MsgBox("Скопировать?", vbYesNo) = vbYes Then
            For c = 1 To 11
                For r = 1 To 20
                    If Cells(r, c).Value = "" Then
                        Sheets(Sh.Index).Cells(r, c).Value = Sheets(Sh.Index - 1).Cells(r, c).Value
                    End If
                Next
             Next
        End If
    End If
End Sub
Вроде работает
0
25.05.2013, 13:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2013, 13:58
Помогаю со студенческими работами здесь

Перенос данных из одного листа на другой
Всем доброго времени суток, господа Проблема вот в чём: есть рабочая книга, в ней два листа. На...

Перенос данных с одного листа на другой
Добрый день! В книге два листа лист 1 с данными, лист 2 в него надо перенести некоторые данные....

Перенос данных с ячеек одного листа на другой лист
Добрый день! Помогите пожалуйста автоматизировать заполнение таблицы (графика на месяц). Excel...

Перенос данных с одного листа на другой при заполнении ячеек
Здравствуйте. Данная тема уже обсуждалась, но у меня есть свои нюансы. Есть файл для ежемесячного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru