Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2019, 16:10   #1
mkm
Пользователь
 
Регистрация: 20.10.2019
Сообщений: 17
По умолчанию Помогите разобраться с переносом скопированных значений в ячейку с транспортированием

Знающие, дайте дельный совет как внедрить в код функцию транспортирование и перенос скопированного на Лист 2.
пробовал через запись макроса выдал вот такую строчку -
Код:
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
Исходный код:
Код:
Sub Тест3()
If Ëèñò1.Range("A2").Value = "один" Then
    Range("B2,B4,B6").Copy Cells(Rows.Count, 2).End(xlUp).Offset(1)
ElseIf Ëèñò1.Range("A2").Value = "два" Then
    Range("B3,B5").Copy Cells(Rows.Count, 2).End(xlUp).Offset(1)
ElseIf Ëèñò1.Range("A2").Value = "три" Then
    Range("B2:B6").Copy Cells(Rows.Count, 2).End(xlUp).Offset(1)
End If
End Sub
mkm вне форума Ответить с цитированием
Старый 28.10.2019, 16:21   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от mkm Посмотреть сообщение
транспортирование и перенос
- тут явно одно слово лишнее, ну как например "подскажите как можно передвинуть и подвинуть"
Ну а перенос делается так - или вместо copy делаете cut, или после успешного копирования удаляете источник.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.10.2019, 16:27   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
- тут явно одно слово лишнее, ну как например "подскажите как можно передвинуть и подвинуть"
Извините, не соглашусь.
это может быть, "выполнить транспонирование данных на Лист1 и результат (после транспонирования) скопировать на Лист2"
или это может быть - "прочитать данные, в скрипте выполнить их транспонирование и полученный результат записать на Лист2"

но, в любом случае, конечно, не помешает файл с примером данных, подробный рассказ о том, что дано и что нужно получить.


Потому как , я вижу только, что в ячейке A2 на листе 1 задаётся текст "один" или "два" или "три" и потом, в зависимости от текста, копируются разные данные. При чём здесь
Цитата:
Сообщение от mkm Посмотреть сообщение
транспортирование и перенос
мне тоже не понятно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.10.2019, 16:40   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Про транспонирование никто не говорил ни слова
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.10.2019, 16:44   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Про транспонирование никто не говорил ни слова
Точно! Вы правы! Извините, это я прочитал слово криво - смотрю в книгу, вижу - фигу...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.10.2019, 17:20   #6
mkm
Пользователь
 
Регистрация: 20.10.2019
Сообщений: 17
По умолчанию

Цель поставленной передо мной задачи - переносить итоги на другой лист сохраняя в базу.
1. Манипуляции производим на листе “ТШ”
1.1. При выборе значения в ячейке R12 (п.4.3.1.; п.4.3.2.; п.4.3.3.)
Копируются определенные ячейки:
R12 = п.4.3.1
Копируем ячейки с листа “ТШ”: R12, D19, AI57:AI59, AI32:AI34

R12 = п.4.3.2.
Копируем ячейки с листа “ТШ”: R12, D19, AI57:AI59,AI39, AI40

R12 = п.4.3.3.
Копируем ячейки с листа “ТШ”: R12, D19, AI57:AI59, AI44: AI45

2. Сохранение итогов с листа “ТШ” на лист “Итоги” путем Транспонирования
Значения ячеек при определенном значении в ячейки R12 при нажатии на кнопку переносились на лист “Итоги”
1.R12 = п.4.3.1.
R12 = столбцу “В” Листа - Итоги
D19 = столбцу “С” Листа - Итоги
AI57:AI59 = столбцам “U:W” Листа - Итоги
AI32:AI34 = столбцам “J:L” Листа - Итоги

2.R12 = п.4.3.2.
R12 = столбцу “В” Листа - Итоги
D19 = столбцу “С” Листа - Итоги
AI57:AI59 = столбцам “U:W” Листа - Итоги
AI39, AI40 = столбцам “M:N” Листа - Итоги

3.R12 = п.4.3.3.
R12 = столбцу “В” Листа - Итоги
D19 = столбцу “С” Листа - Итоги
AI57:AI59 = столбцам “U:W” Листа - Итоги
AI44: AI45 = столбцам “O:P” Листа - Итоги

Скорее вставка с проверкой указанных строк на заполненность и если строка заполнена, перенос данных на ячейку ниже

Словно не правильно написал, моя вина. Под Транспонирование подразумевал смена проекции вставки с вертикального на горизонтальный
В последующем лист ТШ будет заблокирован
Вложения
Тип файла: xlsx 01_Пример_02.xlsx (34.1 Кб, 8 просмотров)
mkm вне форума Ответить с цитированием
Старый 28.10.2019, 17:48   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от mkm Посмотреть сообщение
1.1. При выборе значения в ячейке R12 (п.4.3.1.; п.4.3.2.; п.4.3.3.)
Копируются определенные ячейки:
R12 = п.4.3.1
Копируем ячейки с листа “ТШ”: R12, D19, AI57:AI59, AI32:AI34
и куда их копируем??!

Цитата:
Сообщение от mkm Посмотреть сообщение
Копируем ячейки с листа “ТШ”: R12, D19, AI57:AI59, AI32:AI34
погодите. но ведь в строке ИТОГО есть значения -25 (это AI21 п.2.1) потом 1.3 (ячейка AI23 п.2.3) и т.д. что-то я не вижу этих значений в перечне копируемых.

это раз.

во-вторых, копирование должно происходить по вызову макроса?
макрос копирует данные без всяких доп.условий?
Т.е. нужно просто скопировать определённые ячейки из листа ТШ в лист "Итоги" ?


Цитата:
Сообщение от mkm Посмотреть сообщение
Значения ячеек при определенном значении в ячейки R12 при нажатии на кнопку переносились на лист “Итоги”
1.R12 = п.4.3.1.
R12 = столбцу “В” Листа - Итоги
D19 = столбцу “С” Листа - Итоги
AI57:AI59 = столбцам “U:W” Листа - Итоги
AI32:AI34 = столбцам “J:L” Листа - Итоги
а откуда взялись в вашем примере значения в Итогах в столбцах D:I, M:N и прочих, которых опять таких нет в списке?!


нет. я точно не разберусь в этой катавасии...

Последний раз редактировалось Serge_Bliznykov; 28.10.2019 в 17:52.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.10.2019, 17:56   #8
mkm
Пользователь
 
Регистрация: 20.10.2019
Сообщений: 17
По умолчанию

Я не стал выписывать все ячейки в зависимости от условия. Дабы не нагружать Вас не нужной информацией. Если это принципиально я могу расписать более подробно.
Цитата:
во-вторых, копирование должно происходить по вызову макроса?
Да по кнопке

Цитата:
макрос копирует данные без всяких доп.условий?
не совсем понял вопрос. Какие могут быть доп условия. В зависимости от выбранного значения, копируются нужные ячейки в нужную часть таблицы на другом листе
Цитата:
Т.е. нужно просто скопировать определённые ячейки из листа ТШ в лист "Итоги" ?
Да
mkm вне форума Ответить с цитированием
Старый 28.10.2019, 17:58   #9
mkm
Пользователь
 
Регистрация: 20.10.2019
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
и куда их копируем??!

а откуда взялись в вашем примере значения в Итогах в столбцах D:I, M:N и прочих, которых опять таких нет в списке?!

нет. я точно не разберусь в этой катавасии...
Все данные что сейчас внесены во второй строчке на листе "Итоги" были внесены туда в ручную. По сути Вам не нужно брать их в расчет!
mkm вне форума Ответить с цитированием
Старый 30.10.2019, 17:46   #10
mkm
Пользователь
 
Регистрация: 20.10.2019
Сообщений: 17
По умолчанию

Прошу оказать помощь! Оч. нужна подсказка знающих!

Прикладываю файл и код, который смог написать:
Код:
Sub сохранить_итоги()
If Worksheets("ТШ").Range("R12").Value = "п.4.3.1." Then                                      ' Выбор на листе ТШ значения п.4.3.1.
    Worksheets("ТШ").Range("R12").Copy
    Worksheets("Итоги").Range("B2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("D19").Copy
    Worksheets("Итоги").Range("C2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("D19").Copy
    Worksheets("Итоги").Range("C2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI57").Copy
    Worksheets("Итоги").Range("U2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI58").Copy
    Worksheets("Итоги").Range("V2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI59").Copy
    Worksheets("Итоги").Range("W2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI32").Copy
    Worksheets("Итоги").Range("J2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI33").Copy
    Worksheets("Итоги").Range("K2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI34").Copy
    Worksheets("Итоги").Range("L2").PasteSpecial Paste:=xlPasteValues
ElseIf Worksheets("ТШ").Range("R12").Value = "п.4.3.2." Then                                      ' Выбор на листе ТШ значения п.4.3.2.
    Worksheets("ТШ").Range("R12").Copy
    Worksheets("Итоги").Range("B2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("D19").Copy
    Worksheets("Итоги").Range("C2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("D19").Copy
    Worksheets("Итоги").Range("C2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI57").Copy
    Worksheets("Итоги").Range("U2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI58").Copy
    Worksheets("Итоги").Range("V2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI59").Copy
    Worksheets("Итоги").Range("W2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI39").Copy
    Worksheets("Итоги").Range("M2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI40").Copy
    Worksheets("Итоги").Range("N2").PasteSpecial Paste:=xlPasteValues
ElseIf Worksheets("ТШ").Range("R12").Value = "п.4.3.3." Then                                      ' Выбор на листе ТШ значения п.4.3.3.
    Worksheets("ТШ").Range("R12").Copy
    Worksheets("Итоги").Range("B2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("D19").Copy
    Worksheets("Итоги").Range("C2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("D19").Copy
    Worksheets("Итоги").Range("C2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI57").Copy
    Worksheets("Итоги").Range("U2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI58").Copy
    Worksheets("Итоги").Range("V2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI59").Copy
    Worksheets("Итоги").Range("W2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI44").Copy
    Worksheets("Итоги").Range("O2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI45").Copy
    Worksheets("Итоги").Range("P2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI49").Copy
    Worksheets("Итоги").Range("Q2").PasteSpecial Paste:=xlPasteValues
    Worksheets("ТШ").Range("AI50").Copy
    Worksheets("Итоги").Range("R2").PasteSpecial Paste:=xlPasteValues
End If
End Sub
Как я и писал ранее алгоритм данного кода состоит в следующем

1. Манипуляции производим на листе “ТШ”
1.1. При выборе значения в ячейке R12 (п.4.3.1.; п.4.3.2.; п.4.3.3.)
Копируются определенные ячейки:
R12 = п.4.3.1
Копируем ячейки с листа “ТШ”: R12, D19, AI57:AI59, AI32:AI34
R12 = п.4.3.2.
Копируем ячейки с листа “ТШ”: R12, D19, AI57:AI59, AI39, AI40
R12 = п.4.3.3.
Копируем ячейки с листа “ТШ”: R12, D19, AI57:AI59, AI44, AI45

2. Сохранение итогов с листа “ТШ” на лист “Итоги” путем Транспонирования
Значения ячеек по п 1.1 при определенном значении в ячейки R12 при нажатии на кнопку переносятся на лист “Итоги”

1.Если R12 = п.4.3.1.
R12 = столбцу “В” Листа – “Итоги”
D19 = столбцу “С” Листа - “Итоги”
AI57:AI59 = столбцам “U:W” Листа - Итоги
AI32:AI34 = столбцам “J:L” Листа - Итоги

2. Если R12 = п.4.3.2.
R12 = столбцу “В” Листа - “Итоги”
D19 = столбцу “С” Листа - “Итоги”
AI57:AI59 = столбцам “U:W” Листа - “Итоги”
AI39, AI40 = столбцам “M:N” Листа - Итоги

3. Если R12 = п.4.3.3.
R12 = столбцу “В” Листа - “Итоги”
D19 = столбцу “С” Листа - “Итоги”
AI57:AI59 = столбцам “U:W” Листа - Итоги
AI44: AI45 = столбцам “O:P” Листа - Итоги

Прошу подсказать как осуществить вставку скопированных значений на листе “Итоги” со смещением на следующую ячейку вниз (проверка строки на содержание данных в ячейках и, если строка (любая ячейка в строке) заполнена, перенос данных на ячейку ниже). Сохраняя каждый раз предыдущее копирование данных с листа “ТШ”.

Если не затруднит дайте совет как оптимизировать решение путем уменьшения количества строк в коде. Одной строкой скопировать все необходимое. Второй вставить в нужное место.
Вложения
Тип файла: xlsx 01_Пример_02.xlsx (39.3 Кб, 7 просмотров)
mkm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор всех значений связанного графа. Помогите разобраться в чём проблема... StarterX Общие вопросы C/C++ 0 11.01.2016 19:42
Помогите с переносом данных с листай на лист 2 birusinka Microsoft Office Excel 1 08.12.2014 16:12
Подставновка значений в ячейку из диапазона p2rpower Microsoft Office Excel 3 15.08.2012 10:12
? Помогите с переносом данных по условию Ural-666 Microsoft Office Excel 3 29.11.2007 22:54