Страницы: 1
RSS
Макрос для копирования строчки вниз по условию, Макрос для копирования строчки вниз по условию
 
Добрый день!
Есть таблица, со значениями и формулами
В столбце "Критерий" у некоторых строк есть индикатор "Месяц май".
Нужно макросом найти каждую такую строку, и копировать ее полностью (полная копия, со всеми формулами) ниже исходной, и создать еще один столбец типа "Признак", в котором бы выводился текст "Дубль" (ну или в существующем столбце исходной таблицы, отдельном каком-нибудь, если новый в макросе трудно создать),
и так по всем таким строком таблице
Можно ли написать такой макрос?
 
Цитата
ChubraevRO написал:
Можно ли написать такой макрос?
Без файла примера - нет.
 
Извиняюсь, вложение не загрузилось в первом сообщении
 
Цитата
ChubraevRO написал: Можно ли написать такой макрос?
Получите. Распишитесь.
Код
Sub ZZZ()
    Row = 2
    Do While Cells(Row, 1) <> ""
        If Cells(Row, 10) = "Месяц май" Then
            Rows(Row + 1).Insert
            Rows(Row).Copy Destination:=Rows(Row + 1)
            Cells(Row + 1, 11) = "Дубль"
            Row = Row + 1
        End If
    Row = Row + 1
    Loop
End Sub

Изменено: Сергей Евдокимов - 22.07.2021 06:24:56
Усложнять-просто. Упрощать-сложно.
 
Сергей, большое спасибо, все работает! ))
а еще подскажите, как в макросе в исходной строчке из столбца 3 вычесть значение из этого же столбца дублированной строчки,
но не значением, а ссылкой на эту ячейку дублированной строчки?
 
Цитата
ChubraevRO: вычесть значение ..но не значением, а ссылкой на эту ячейку
8-0  
Усложнять-просто. Упрощать-сложно.
 
так что, макросы так не смогут? Мне в получившейся таблице нужно видеть, какой ячейкой вычитается данные из исходной строки. Или хотя бы выводить эту формулу в отдельный столбец  
 
ChubraevRO, покажите руками желаемый результат в файле
а так наугад
Код
Sub mrshkei()
Dim lr As Long, i As Long
lr = Cells(Rows.Count, 1).End(xlUp).Row
For i = lr To 3 Step -1
    If Not IsEmpty(Cells(i, 10)) Then
        Rows(i).Insert
        Rows(i + 1).Copy Destination:=Rows(i)
        Cells(i, 10).Copy Destination:=Cells(i + 1, 11): Cells(i + 1, 11) = "Дубль"
        Cells(i, 3).FormulaLocal = "=" & Cells(i, 3).Value & "-" & Cells(i + 1, 3).Address
    End If
Next i
End Sub
Изменено: Mershik - 23.07.2021 13:19:33
Не бойтесь совершенства. Вам его не достичь.
 
Взял код С. Евдокимова, добавил условие чтобы в дублированную строчку в 3 столбец записывалось значение "3"
итоговая таблица внизу, подсветил ячейки, в которых должна быть такая формула
 
Mershik, спасибо, взял строку кода, работает! а как убрать в этой формуле абсолютные ссылки, с долларами $?
Изменено: vikttur - 24.07.2021 12:33:04
 
Код
Cells(i + 1, 3).Address.(0, 0)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
ChubraevRO написал:
так что, макросы так не смогут?
Макросы могут. Я не смог. Понять ваши хотенья (даже перечитав неоднократно). Звиняйте, не мой сегодня день.  
Усложнять-просто. Упрощать-сложно.
 
Сергей, Mershik помог, написал как раз то, что надо, все сработало)
Всем большое спасибо! ))
Страницы: 1
Читают тему (гостей: 1)
Наверх