всем добрый вечер! нужно чтобы макрос перед каждой строкой где встречается слово "Итог" добавлял пустую строку но это все нужно проделывать если разница положительная между абсолютными значениями в столбце M где написано слово Итог и предыдущими аналогичными значениями без слова Итог! если разница отрицательная то добавлять строки не нужно!
в итоге нужно чтобы он брал строку с уникальным кодом где написано "Итог" и вычитал из этой строки все предыдущие аналогичные строки где нету слова "Итог" то что должно получиться представлено в таблице справа с подсвеченными красными ячейками!
всем добрый вечер! нужно чтобы макрос перед каждой строкой где встречается слово "Итог" добавлял пустую строку но это все нужно проделывать если разница положительная между абсолютными значениями в столбце M где написано слово Итог и предыдущими аналогичными значениями без слова Итог! если разница отрицательная то добавлять строки не нужно!
в итоге нужно чтобы он брал строку с уникальным кодом где написано "Итог" и вычитал из этой строки все предыдущие аналогичные строки где нету слова "Итог" то что должно получиться представлено в таблице справа с подсвеченными красными ячейками!АЛЕКСАНДР1986
(ну уж извините! - корпел, писал в ТУ тему, а она уже закрыта - поэтому постю здесь - мне не совсем наплевать на собственные усилия )
Можно ручками добавить. Алгоритм (не думаю, что для всех он очевиден):
1. Выделяем столбец B, содержащий ячейки со словом "Итог" (или нужную часть столбца - диапазон B4:B12). 2. Ctrl+F \ Найти: Итог \ Найти все \ Ctrl+A (выделить все) \ Закрыть. 3. Ctrl+"плюс" (на правой цифровой клавиатуре) \ Добавление ячеек \ Добавить: (*) строку \ OK На данный момент имеем: перед ячейками с "Итог" вставились пустые строки.
4. В ячейку D7 вводим строку: ИНЫЕ органы 5. В ячейку B7 вводим формулу: =B6 6. Выделяем диапазон B7:G7 и копируем его. 7. Выделяем в столбце B рабочий диапазон - он после вставок строк выглядит как B4:B15. 8. Ctrl+G \ Выделить \ (*) пустые ячейки \ OK \ Enter (вставляем скопированное ранее) Имеем: ТО, ЧТО НУЖНО!
Но если надо, то можно еще навести окончательный марафет, избавившись от формул в столбце B: 9. Выделяем в столбце B рабочий диапазон B4:B15. 10. Ctrl+C \ Shift+F10 \ Специальная вставка \ Вставить: (*) значения \ OK.
P.S. Фраза "ТО, ЧТО НУЖНО!" - разумеется, относится к "ТОЙ теме". За Вами не успеть!
(ну уж извините! - корпел, писал в ТУ тему, а она уже закрыта - поэтому постю здесь - мне не совсем наплевать на собственные усилия )
Можно ручками добавить. Алгоритм (не думаю, что для всех он очевиден):
1. Выделяем столбец B, содержащий ячейки со словом "Итог" (или нужную часть столбца - диапазон B4:B12). 2. Ctrl+F \ Найти: Итог \ Найти все \ Ctrl+A (выделить все) \ Закрыть. 3. Ctrl+"плюс" (на правой цифровой клавиатуре) \ Добавление ячеек \ Добавить: (*) строку \ OK На данный момент имеем: перед ячейками с "Итог" вставились пустые строки.
4. В ячейку D7 вводим строку: ИНЫЕ органы 5. В ячейку B7 вводим формулу: =B6 6. Выделяем диапазон B7:G7 и копируем его. 7. Выделяем в столбце B рабочий диапазон - он после вставок строк выглядит как B4:B15. 8. Ctrl+G \ Выделить \ (*) пустые ячейки \ OK \ Enter (вставляем скопированное ранее) Имеем: ТО, ЧТО НУЖНО!
Но если надо, то можно еще навести окончательный марафет, избавившись от формул в столбце B: 9. Выделяем в столбце B рабочий диапазон B4:B15. 10. Ctrl+C \ Shift+F10 \ Специальная вставка \ Вставить: (*) значения \ OK.
P.S. Фраза "ТО, ЧТО НУЖНО!" - разумеется, относится к "ТОЙ теме". За Вами не успеть!Gustav
ДОБАВЛЕННЫЕ ШАГИ к моему ручному алгоритму выше - в связи с изменившейся первоначальной постановкой задачи.
Шаг 0. Предварительный - нормализация цифр! Я чуть с ума не сошёл, ну и примерчик представили В общем, там видно всё, если попытаться выполнить обычное суммирование по столбцам E:G - ничего не получится. Цифры надо реанимировать. Для этого ввести в какую-нибудь ячейку сбоку число 1, выполнить копирование этой ячейки и вставить в диапазон E4:G12 специальной вставкой с опциями "значения" и "умножить" - числа оживут.
Шаги между 5 и 6 (предполагается, что шаги 1-5 уже выполнены к этому моменту).
Завершаем ввод комбинацией Ctrl+Shift+Enter. Должно получиться значение 189.
5.2. Копируем ячейку E7 в ячейку F7. Должно получиться значение 0,988 (если это не так, то сменить формат ячейки на Общий)
Далее по алгоритму, начиная с шага 6.
ВАЖНО: Чтобы формулы в ячейках E7 и F7 суммировали правильно, ячейки диапазона E1:F3 (над таблицей) должны быть пустыми.
ДОБАВЛЕННЫЕ ШАГИ к моему ручному алгоритму выше - в связи с изменившейся первоначальной постановкой задачи.
Шаг 0. Предварительный - нормализация цифр! Я чуть с ума не сошёл, ну и примерчик представили В общем, там видно всё, если попытаться выполнить обычное суммирование по столбцам E:G - ничего не получится. Цифры надо реанимировать. Для этого ввести в какую-нибудь ячейку сбоку число 1, выполнить копирование этой ячейки и вставить в диапазон E4:G12 специальной вставкой с опциями "значения" и "умножить" - числа оживут.
Шаги между 5 и 6 (предполагается, что шаги 1-5 уже выполнены к этому моменту).
АЛЕКСАНДР1986, Если правильно всё понял, то можно так макросом: [vba]
Код
Sub d2() Dim i&, k&, s1#, s2#, n& n = 4 For i = Cells(Rows.Count, 2).End(xlUp).Row To n Step -1 If InStr(1, Cells(i, 2), "Итог") > 0 Then k = i Do k = k - 1 s1 = s1 + Cells(k, 5) s2 = s2 + Cells(k, 6) Loop While InStr(1, Cells(k - 1, 2), "Итог") = 0 And k >= n If Cells(i, 5) - s1 > 0 Or Cells(i, 6) - s2 > 0 Then Rows(i).Insert Cells(i - 1, 2).Copy Cells(i, 2) Cells(i, 4) = "ИНЫЕ органы" Cells(i, 5) = Cells(i + 1, 5) - s1 Cells(i, 6) = Cells(i + 1, 6) - s2 Cells(i, 2).Resize(, 6).Interior.Color = 12379352 ' зелёный Cells(i, 5).Resize(, 2).Interior.Color = 255 ' красный s1 = 0 s2 = 0 End If End If Next i End Sub
[/vba]
АЛЕКСАНДР1986, Если правильно всё понял, то можно так макросом: [vba]
Код
Sub d2() Dim i&, k&, s1#, s2#, n& n = 4 For i = Cells(Rows.Count, 2).End(xlUp).Row To n Step -1 If InStr(1, Cells(i, 2), "Итог") > 0 Then k = i Do k = k - 1 s1 = s1 + Cells(k, 5) s2 = s2 + Cells(k, 6) Loop While InStr(1, Cells(k - 1, 2), "Итог") = 0 And k >= n If Cells(i, 5) - s1 > 0 Or Cells(i, 6) - s2 > 0 Then Rows(i).Insert Cells(i - 1, 2).Copy Cells(i, 2) Cells(i, 4) = "ИНЫЕ органы" Cells(i, 5) = Cells(i + 1, 5) - s1 Cells(i, 6) = Cells(i + 1, 6) - s2 Cells(i, 2).Resize(, 6).Interior.Color = 12379352 ' зелёный Cells(i, 5).Resize(, 2).Interior.Color = 255 ' красный s1 = 0 s2 = 0 End If End If Next i End Sub