Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставить 4 строки с формулами 4-х вышестоящих строк - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Вставить 4 строки с формулами 4-х вышестоящих строк
den45444 Дата: Четверг, 06.08.2015, 09:51 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Помогите с решением макроса.
Задача следующая:
1. Вставить 4 строки над строкой где будет находится ячейка с текстом "Накладные расходы".
2. Все четыре строки должны быть как вышестоящие 4 строки со всеми такими же формулами.
3. Если возможно, то хотелось бы, чтобы следующий этап уже был не "Этап №2", а "Этап №3".

Прикрепляю пример.
К сообщению приложен файл: 8052106.xlsx (12.2 Kb)
 
Ответить
СообщениеДобрый день.
Помогите с решением макроса.
Задача следующая:
1. Вставить 4 строки над строкой где будет находится ячейка с текстом "Накладные расходы".
2. Все четыре строки должны быть как вышестоящие 4 строки со всеми такими же формулами.
3. Если возможно, то хотелось бы, чтобы следующий этап уже был не "Этап №2", а "Этап №3".

Прикрепляю пример.

Автор - den45444
Дата добавления - 06.08.2015 в 09:51
Manyasha Дата: Четверг, 06.08.2015, 10:42 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
den45444, Например так:
[vba]
Код
Sub Add_Stage()
     lSt = Cells.Find(What:="Накладные расходы").Row
     Rows(lSt - 4 & ":" & lSt - 1).Copy
     Rows(lSt).Insert Shift:=xlDown
     Range("a" & lSt + 1 & ":f" & lSt + 2).ClearContents
     numSt = Split(Range("a" & lSt - 4), "№")
     Range("a" & lSt) = "Этап №" & numSt(1) + 1
     Range("a" & lSt + 2) = "Итого (этап №" & numSt(1) + 1 & "):"
End Sub
[/vba]
К сообщению приложен файл: 8052106-1.xlsm (19.3 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеden45444, Например так:
[vba]
Код
Sub Add_Stage()
     lSt = Cells.Find(What:="Накладные расходы").Row
     Rows(lSt - 4 & ":" & lSt - 1).Copy
     Rows(lSt).Insert Shift:=xlDown
     Range("a" & lSt + 1 & ":f" & lSt + 2).ClearContents
     numSt = Split(Range("a" & lSt - 4), "№")
     Range("a" & lSt) = "Этап №" & numSt(1) + 1
     Range("a" & lSt + 2) = "Итого (этап №" & numSt(1) + 1 & "):"
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 06.08.2015 в 10:42
den45444 Дата: Четверг, 06.08.2015, 10:50 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Manyasha, Премного благодарен.
 
Ответить
СообщениеManyasha, Премного благодарен.

Автор - den45444
Дата добавления - 06.08.2015 в 10:50
den45444 Дата: Четверг, 06.08.2015, 13:44 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Manyasha, Можете немного поправить макрос?
Оказывается мне нужно добавить не 4 строки, а столько сколько есть в предыдущем этапе, т.е. от начала этапа до итого.
И как прописать макрос, чтобы можно было удалить добавленный этап?
Выручайте:)
 
Ответить
СообщениеManyasha, Можете немного поправить макрос?
Оказывается мне нужно добавить не 4 строки, а столько сколько есть в предыдущем этапе, т.е. от начала этапа до итого.
И как прописать макрос, чтобы можно было удалить добавленный этап?
Выручайте:)

Автор - den45444
Дата добавления - 06.08.2015 в 13:44
roskoshenko Дата: Четверг, 06.08.2015, 22:06 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
примитива добавил, но вроде работает
К сообщению приложен файл: 1541191.xlsm (20.0 Kb)
 
Ответить
Сообщениепримитива добавил, но вроде работает

Автор - roskoshenko
Дата добавления - 06.08.2015 в 22:06
den45444 Дата: Пятница, 07.08.2015, 09:54 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
roskoshenko, Благодарю, но это не то.
Вот пример.
Нужно добавить только один полноценный этап со всеми формулами и строками предыдущего этапа. Строк предыдущего этапа может быть много.

Жду помощь от кого-нибудь.
К сообщению приложен файл: 2867191.xlsm (19.6 Kb)
 
Ответить
Сообщениеroskoshenko, Благодарю, но это не то.
Вот пример.
Нужно добавить только один полноценный этап со всеми формулами и строками предыдущего этапа. Строк предыдущего этапа может быть много.

Жду помощь от кого-нибудь.

Автор - den45444
Дата добавления - 07.08.2015 в 09:54
Manyasha Дата: Пятница, 07.08.2015, 18:06 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
den45444, проверяйте:
[vba]
Код
Sub Add_Stage()
     Dim firstRow&, lastRow&
     firstRow = 0: lastRow = 0
     lSt = Columns("A:A").Find(What:="Накладные расходы").Row
     lastRow = lSt - 1
     For i = lSt To 1 Step -1
         If InStr(Cells(i, 1), "Этап") Then firstRow = i: numSt = Split(Cells(i, 1), "№")(1) + 1: Exit For
     Next i
     If firstRow = 0 Then MsgBox "Добавьте 1-й этап": Exit Sub
     Rows(firstRow & ":" & lastRow).Copy
     Rows(lSt).Insert Shift:=xlDown
     Range("a" & lSt + 1 & ":f" & lSt + lastRow - firstRow - 2).ClearContents
     Range("a" & lSt) = "Этап №" & numSt + 1
     Range("a" & lSt + lastRow - firstRow - 1) = "Итого (этап №" & numSt + 1 & "):"
End Sub
[/vba]
К сообщению приложен файл: 286719_1.xlsm (18.5 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеden45444, проверяйте:
[vba]
Код
Sub Add_Stage()
     Dim firstRow&, lastRow&
     firstRow = 0: lastRow = 0
     lSt = Columns("A:A").Find(What:="Накладные расходы").Row
     lastRow = lSt - 1
     For i = lSt To 1 Step -1
         If InStr(Cells(i, 1), "Этап") Then firstRow = i: numSt = Split(Cells(i, 1), "№")(1) + 1: Exit For
     Next i
     If firstRow = 0 Then MsgBox "Добавьте 1-й этап": Exit Sub
     Rows(firstRow & ":" & lastRow).Copy
     Rows(lSt).Insert Shift:=xlDown
     Range("a" & lSt + 1 & ":f" & lSt + lastRow - firstRow - 2).ClearContents
     Range("a" & lSt) = "Этап №" & numSt + 1
     Range("a" & lSt + lastRow - firstRow - 1) = "Итого (этап №" & numSt + 1 & "):"
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 07.08.2015 в 18:06
den45444 Дата: Суббота, 08.08.2015, 10:03 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Manyasha, То что надо:) Благодарю за помощь.

Нагловато наверное будет, если я вас попрошу такой же смысл макроса написать, но только удалить последний этап.
 
Ответить
СообщениеManyasha, То что надо:) Благодарю за помощь.

Нагловато наверное будет, если я вас попрошу такой же смысл макроса написать, но только удалить последний этап.

Автор - den45444
Дата добавления - 08.08.2015 в 10:03
ShAM Дата: Суббота, 08.08.2015, 10:52 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
То что надо
В этих строках: [vba]
Код
Range("a" & lSt) = "Этап №" & numSt + 1
     Range("a" & lSt + lastRow - firstRow - 1) = "Итого (этап №" & numSt + 1 & "):"
[/vba]нужно убрать + 1 после numSt, иначе к номеру этапа по 2 прибавляется.
но только удалить последний этап
Удалять - не вставлять. Боюсь это совсем другая тема.
 
Ответить
Сообщение
То что надо
В этих строках: [vba]
Код
Range("a" & lSt) = "Этап №" & numSt + 1
     Range("a" & lSt + lastRow - firstRow - 1) = "Итого (этап №" & numSt + 1 & "):"
[/vba]нужно убрать + 1 после numSt, иначе к номеру этапа по 2 прибавляется.
но только удалить последний этап
Удалять - не вставлять. Боюсь это совсем другая тема.

Автор - ShAM
Дата добавления - 08.08.2015 в 10:52
den45444 Дата: Суббота, 08.08.2015, 10:57 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
В этих строках:
Range("a" & lSt) = "Этап №" & numSt + 1
    Range("a" & lSt + lastRow - firstRow - 1) = "Итого (этап №" & numSt + 1 & "):"

С этим разобрался.
Благодарю.
Удалять - не вставлять. Боюсь это совсем другая тема.

Можете помочь решить задачу?
 
Ответить
Сообщение
В этих строках:
Range("a" & lSt) = "Этап №" & numSt + 1
    Range("a" & lSt + lastRow - firstRow - 1) = "Итого (этап №" & numSt + 1 & "):"

С этим разобрался.
Благодарю.
Удалять - не вставлять. Боюсь это совсем другая тема.

Можете помочь решить задачу?

Автор - den45444
Дата добавления - 08.08.2015 в 10:57
ShAM Дата: Суббота, 08.08.2015, 11:02 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Так, намек не понят. Создайте другую тему.
 
Ответить
СообщениеТак, намек не понят. Создайте другую тему.

Автор - ShAM
Дата добавления - 08.08.2015 в 11:02
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!