Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/14: Рейтинг темы: голосов - 14, средняя оценка - 5.00
dankig
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 10
1

Макрос копирования ячеек со сложным условием

12.07.2019, 18:57. Просмотров 2538. Ответов 10

Пытался поменять тему в прошлой теме, так как она не отражает всего действия.
Делаю форму чтобы данные с листа "Form", переносились по кнопке в лист, созданный на основе листа "AEC", это сделать еще могу, но не хватает сообразительности чтобы сделать так, чтобы:

1. Создается новый лист (это сделано по кнопке в правой части, макрос "Newact"), соответственно остальное надо продолжать в нем.

2. С листа "Form", столбец "А", начиная с ячейки "А20" (эта часть выделена зеленым цветом) надо скопировать все ячейки со значениями (их может быть много)

3. Перенести их, с созданием строк под количество ячеек, во вновь созданный лист (для примера смотреть лист АЕС) начиная с ячейки "А37-зеленая ячейка", в столбец, с точно таким же форматированием и объединением как и ячейка "А37".


4. Сделать тоже самое что и в 3-м пункте, но уже начиная с ячейки "А41-оранжевый"

Очень важно не затрагивать остальные ячейки во вновь созданном листе, это как раз именно то до чего не могу додуматься, а в форуме похожего нет, либо я чего не вижу.
0
Вложения
Тип файла: zip CLean.xlsm.zip (40.2 Кб, 2 просмотров)
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2019, 18:57
Ответы с готовыми решениями:

Макрос копирования таблицы и текста из ячеек
Добрый день. У меня вот такой вопрос. Есть книга , а в ней 150 листов. Эта книга – большая...

Макрос копирования ячеек по условию в Excel
Здравствуйте господа программисты! Столкнулся с непосильной задачей. Знания в написании макросов...

Макрос копирования ячеек по условию в Excel
Здравствуйте господа программисты! Столкнулся с непосильной задачей. Знания в написании макросов...

Макрос копирования ячеек, находящихся ниже найденной
Доброго времени суток, Форумчане. Прошу помощи в решении сложившейся ситуации. Необходим...

Макрос для разбивания ячеек и их копирования ниже
Всем привет. Уважаемые программисты, прошу помощи. Есть таблица. 100500 строк. Необходимо...

10
КостяФедореев
23 / 19 / 4
Регистрация: 09.01.2017
Сообщений: 66
Завершенные тесты: 1
13.07.2019, 00:35 2
dankig, пункты 1,2,3 выполняются, проверьте такой должен быть результат?
1
КостяФедореев
23 / 19 / 4
Регистрация: 09.01.2017
Сообщений: 66
Завершенные тесты: 1
13.07.2019, 00:37 3
Файл
1
Вложения
Тип файла: rar Форма пример.rar (36.6 Кб, 2 просмотров)
dankig
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 10
13.07.2019, 07:22  [ТС] 4
Вы правильно поняли в чем дело, вот и сложность когда переходишь к 4му пункту, непонятно как перенести это в конечную ячейку, потому-что количество меняется, а нужная ячейка съезжает вниз
0
13.07.2019, 07:22
КостяФедореев
23 / 19 / 4
Регистрация: 09.01.2017
Сообщений: 66
Завершенные тесты: 1
13.07.2019, 08:00 5
dankig, по такому же принципу. Вторым циклом. Когда первый цикл отработает, у вас будет понимание нахождения 41 строки.

Добавлено через 3 минуты
dankig, позже допишу код. Сейчас с телефона.
1
dankig
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 10
13.07.2019, 08:21  [ТС] 6
Что сейчас сделал:
1. Поставил собственное имя для ячейки А41
2. Проверил, при изменении ячеек выше, ячейка не меняет своего имени.
3. Пытаюсь понять как связать код с именованной ячейкой.
0
КостяФедореев
23 / 19 / 4
Регистрация: 09.01.2017
Сообщений: 66
Завершенные тесты: 1
13.07.2019, 08:23 7
dankig, код напишите сюда, который хотите связать.
1
КостяФедореев
23 / 19 / 4
Регистрация: 09.01.2017
Сообщений: 66
Завершенные тесты: 1
13.07.2019, 09:06 8
Лучший ответ Сообщение было отмечено dankig как решение

Решение

dankig, проверьте
1
Вложения
Тип файла: rar Форма пример.rar (50.7 Кб, 2 просмотров)
dankig
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 10
13.07.2019, 09:57  [ТС] 9
Цитата Сообщение от КостяФедореев Посмотреть сообщение
dankig, код напишите сюда, который хотите связать.
Ячейку А41 переименовал в ячейку с ячейку именем Punkt1, попытался присвоить ей Range.
Как вставить имя этой ячейки в такой же цикл:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Sub Newact()
Dim i As Long
Dim fRow As Long
Dim lRow As Long
Dim Count As String
Dim p As Long
 
Dim Punkt1 As Range
 
 
Application.ScreenUpdating = True
    Sheets("AEC").Copy Before:=Sheets(1)
    With Sheets(1)
        .Visible = True
        .Move After:=Sheets(Sheets.Count)
        .Activate
        .Name = Sheets("Form").Range("B11")
    End With
 
    fRow = 20
    lRow = Sheets("Form").Cells(Rows.Count, "A").End(xlUp).Row
    Count = Sheets("Form").Range("B11").Value
    For i = fRow To lRow
        p = 37 + i - 20
        Rows(p).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Sheets("Form").Activate
            Range(Cells(i, "A"), Cells(i, "D")).Select
            Selection.Copy
        Sheets(Count).Select
            Range("A" & p).Select
            ActiveSheet.Paste
            Range(Cells(p, "A"), Cells(p, "AZ")).Select
            Selection.Merge
    Next i
    
    For i = fRow To lRow
        p = Range("Punkt1").Rows.Value + i + 20
        Rows(p).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Sheets("Form").Activate
            Range(Cells(i, "A"), Cells(i, "D")).Select
            Selection.Copy
        Sheets(Count).Select
            Range("A" & p).Select
            ActiveSheet.Paste
            Range(Cells(p, "A"), Cells(p, "AZ")).Select
            Selection.Merge
    Next i
 
    Rows(p + 1).Select
    Selection.Delete Shift:=xlUp
    Application.ScreenUpdating = False
    Sheets("Form").Range("B11").Value = Sheets("Form").Range("B11").Value + 1
End Sub
Но выводит только как то не туда и не так...
Выводит сразу после прошлого цикла

Добавлено через 23 минуты
Цитата Сообщение от КостяФедореев Посмотреть сообщение
dankig, проверьте
Спасибо, это именно то что нужно!
Остальное сделаю по аналогии, через пару дней вышлю конечный вариант)
0
КостяФедореев
23 / 19 / 4
Регистрация: 09.01.2017
Сообщений: 66
Завершенные тесты: 1
13.07.2019, 10:03 10
dankig, по аналогии может не получиться, будьте внимательны с переменными и циклами.
1
dankig
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 10
13.07.2019, 10:59  [ТС] 11
Цитата Сообщение от КостяФедореев Посмотреть сообщение
dankig, по аналогии может не получиться, будьте внимательны с переменными и циклами.
Да, получается очень много итераций, так как таких циклов будет 6, постараюсь сделать.
Думаю что лучше посидеть несколько дней и сделать нормально, чем все то же самое делать в ручную.
0
13.07.2019, 10:59
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2019, 10:59

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

Макрос копирования
Всем добрый день. Такое дело. Человек сидит работает за компьютером, затем он на рабочем столе...

Объединение ячеек с условием
Доброй день, не особо вникал в VBA, но на работе пригодилось, нужно сделать проверку на одинаковые...


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

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

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