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

Перенос значений с одного листа в разные ячейки второго листа

15.01.2015, 12:36. Показов 3603. Ответов 11
Метки нет (Все метки)

прошу помощи, форумчане.
Перед нами была поставлена задача оптимизировать наши расчеты.
Суть оптимизации - на листе "данные" в столбце "Средние показания прибора" впечатывать числа, умная машина перебрасывает данные на лист "расчет", считает и перекидывает обратно на лист "данные" в нужные ячейки.
Лист "расчет" мы уже практически преобразовали, там все само считается.
А вот теперь сложность - программа считает на листе "расчет" только один диапазон данных (одну конструкцию, например фундамент), соответственно, перебрасывает обратно результаты для этой конструкции. Что бы посчитать следующую конструкцию пришлось сделать еще один лист "расчет2", и т.д. Но таких конструкций у нас бывает более 1000 на Заключение, 1000 листов с расчетами - это уже не оптимизация, а наоборот!


Можно ли что то сделать?
файл прилагаю
0
Вложения
Тип файла: xlsx пример расчета.xlsx (63.7 Кб, 19 просмотров)
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2015, 12:36
Ответы с готовыми решениями:

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

Перенос значений с одного листа на другой
Здравствуйте. Мне нужна помощь с ВПР или функцией которая может заменить ВПР. Суть проблемы я...

Перенос нескольких значений с одного листа на другой
Здравствуйте. В документе имеется 3 листа (вкладки), на каждом отдельная таблица. На первых 2...

Перенос нескольких значений с одного листа на другой
Здравствуйте, уважаемое сообщество! В книге 2 листа, в одном из которых ("Исходные") содержатся...

11
5713 / 2991 / 626
Регистрация: 23.11.2010
Сообщений: 9,970
15.01.2015, 12:54 2
Veda09, а почему на этом же листе не считать, расчет же не сложный вроде как?
0
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 6
15.01.2015, 13:08  [ТС] 3
Слишком много аргументов, которые цепляются один за другой. Честно говоря, я даже не представляю, как это все увязать в несколько формул...
0
3456 / 2117 / 703
Регистрация: 02.11.2012
Сообщений: 5,542
15.01.2015, 13:20 4
что у вас делает макрос? (в файле его нет.)
0
5713 / 2991 / 626
Регистрация: 23.11.2010
Сообщений: 9,970
15.01.2015, 13:34 5
Vlad999, я так поняла, что данные из столбца G переносит на лист Расчет в столбец С, там считается и полученные цифры обратно на лист Данные
0
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 6
15.01.2015, 13:35  [ТС] 6
Vlad999 , он выделяет диапазон значений конструкции и переносит на лист два,
выглядит так

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub Макрос1()
'
' Макрос1 Макрос
'
    Range("G9:G18").Select
    Selection.Copy
    Sheets("расчет").Select
    Range("C3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
Пока не пользуемся, т.к. в нем прописан диапазон одной конструкции. Задумывалось как "нажать одну кнопку-получить расчет", пока не действует.
0
3456 / 2117 / 703
Регистрация: 02.11.2012
Сообщений: 5,542
15.01.2015, 14:48 7
пробуйте на черновика, проверяйте.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Макрос1()
Application.ScreenUpdating = False
If ActiveCell.Column = 7 Then
Sheets("расчет").Range("C3", Sheets("расчет").Range("C3").End(xlDown)).ClearContents
   Set d = ActiveCell.Offset(0, 1).MergeArea
   Cells(d.Row, 7).Resize(d.Count, 1).Copy
Sheets("расчет").Range("C3").PasteSpecial xlPasteValues
Application.CutCopyMode = False
End If
Cells(d.Row, 11) = Sheets("расчет").Range("F10").Value
Cells(d.Row, 12) = Sheets("расчет").Range("I11").Value
Cells(d.Row, 13) = Sheets("расчет").Range("F22").Value
Cells(d.Row, 14) = Sheets("расчет").Range("F24").Value
Application.ScreenUpdating = False
End Sub
становитесь в ячейку диапазона который нужно обработать в столбец "G" и запускаете макрос.
пример стоя в любой ячейке диапазона G6:G15 копируется данный диапазон на лист расчет и полученные данные переносятся обратно на лист данные.
макрос запускать обязательно с активным листом Данные.
1
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 6
15.01.2015, 16:02  [ТС] 8
Спасибо большое! Это то, что нужно!

Могу я еще подсказку попросить?
Доделали лист "расчет", в связи с этим, возникла необходимость копировать не только столбец 7, но и 6.
Как поменяются строчки кода VB ?
Хотела прописать те же строчки только для столбца 6 в листе "данные", но пишет ошибку.
0
3456 / 2117 / 703
Регистрация: 02.11.2012
Сообщений: 5,542
15.01.2015, 16:35 9
F6:G15 копируется в столбцы B:C или как?
покажите новый файл.
0
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 6
15.01.2015, 16:50  [ТС] 10
Прикрепила новый файл, а вот так я пыталась поправить код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Макрос1()
Application.ScreenUpdating = False
 
If ActiveCell.Column = 6 Then
Sheets("расчет").Range("В3", Sheets("расчет").Range("В3").End(xlDown)).ClearContents
   Set d = ActiveCell.Offset(0, 1).MergeArea
   Cells(d.Row, 6).Resize(d.Count, 1).Copy
Sheets("расчет").Range("В3").PasteSpecial xlPasteValues
End If
If ActiveCell.Column = 7 Then
Sheets("расчет").Range("C3", Sheets("расчет").Range("C3").End(xlDown)).ClearContents
   Set d = ActiveCell.Offset(0, 1).MergeArea
   Cells(d.Row, 7).Resize(d.Count, 1).Copy
Sheets("расчет").Range("C3").PasteSpecial xlPasteValues
Application.CutCopyMode = False
End If
Cells(d.Row, 11) = Sheets("расчет").Range("F10").Value
Cells(d.Row, 12) = Sheets("расчет").Range("I11").Value
Cells(d.Row, 13) = Sheets("расчет").Range("F16").Value
Cells(d.Row, 14) = Sheets("расчет").Range("F18").Value
Application.ScreenUpdating = False
End Sub
0
Вложения
Тип файла: xlsx пример расчета.xlsx (46.7 Кб, 15 просмотров)
3456 / 2117 / 703
Регистрация: 02.11.2012
Сообщений: 5,542
15.01.2015, 17:37 11
Лучший ответ Сообщение было отмечено Veda09 как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub VVV()
Application.ScreenUpdating = False
If ActiveCell.Column = 7 Or ActiveCell.Column = 6 Then
  Sheets("расчет").Range("B3", Sheets("расчет").Range("C3").End(xlDown)).ClearContents
   Set d = Cells(ActiveCell.Row, 4).MergeArea
   Cells(d.Row, 6).Resize(d.Count, 2).Copy
  Sheets("расчет").Range("B3").PasteSpecial xlPasteValues
  Application.CutCopyMode = False
'-----------------------------------------------------
Cells(d.Row, 11) = Sheets("расчет").Range("F10").Value
Cells(d.Row, 12) = Sheets("расчет").Range("I11").Value
Cells(d.Row, 13) = Sheets("расчет").Range("F16").Value
Cells(d.Row, 14) = Sheets("расчет").Range("F18").Value
End If
Application.ScreenUpdating = False
End Sub
1
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 6
15.01.2015, 18:05  [ТС] 12
Vlad999 , огромное спасибо!!!!
Все работает!!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2015, 18:05

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Перенос значений определенных ячеек активной строки одного листа в определенные ячейки другого листа
Добрый день! Создаю простенькую программу для регистрации посетителей. Состоит из трех листов -...

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

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

Перенос значений из одного листа в другой
Написал, в общем, макрос для Excel, который переносит недостающие значения строк из второго листа в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.