Авансовые платежи по налогу на прибыль в 2020 и 2021 году

01 Декабрь 2015

Стандартная ситуация – вы ведете в табличке продажи по дням. Примерно так: Вроде все видно и наглядно, однако очень часто нужно видеть сумму нарастающим итогом для каждой даты Для этого обычно используется формула которую вы видите в этом примере в окне формул Суть ее – берем предыдущую сумму и добавляет продажи за текущий день. Но есть более грамотный и красивый способ. В колонке «Сумма нарастающим итогом» пишем формулу =СУММ($D$4:D4) Важно чтобы верхняя граница суммируемого диапазона не изменялась, именно для этого перед координатами ячейки ставится знак «$», а нижняя наоборот при копировании изменялась так, чтобы при копировании вниз изменялся нужный нам диапазон Вы можете видеть, что при копировании этой формулы на одну строку вниз, верхняя граница суммирования осталась неизменной, а нижняя расширяется в соответствии с выбранной строкой. Вы спросите — чем этот способ лучше? Допустим вам нужна сумма нарастающим итогом не на каждый день а через день или раз в неделю или в пять дней. При первом варианте, если вы удалите сумму нарастающим в каком-то из дней, все ваши вычисления «поплывут» и будут показывать неправильные значения. Во втором варианте, вы можете оставлять значения нарастающим итогом в тех ячейках, которые вам нужны, например каждую пятницу или каждый четный день. Данные всегда будут отражаться корректно. Да, насчет пятницы, интересная мысль. Что теперь сидеть с календарем и выбирать эти самые пятницы? Совершенно не обязательно, вы уже догадались, что и эту задачу легко можно решить с помощью формулы в Excel Для этого существует функция =ДЕНЬНЕД(). Она как раз подходит для нашего случая. Создаем такую вот формулу: =ЕСЛИ(ДЕНЬНЕД(A11)=5;СУММ($D$4:D11);»») В переводе на обычный язык она говорит следующее: Если день недели в ячейке с датой имеет номер 5 (а это как известно пятница), то тогда нужно показать сумму нарастающим итогом, если же нет, то ничего не показывать. «Ничего» и 0 это разные понятия. Поэтому «Ничего» мы обозначаем двумя кавычками ( «» ). В результате таблица будет выглядеть примерно так: Как видите все получилось довольно аккуратно и информативно. Надеюсь работа в Excel будет доставлять вам только удовольствие.

Как осуществить расчет накопленным итогом с использованием итераций

Ситуация: Вы хотите добавить к сумме последовательные значения результатов расчетов. Как действовать, зная, что при изменении «источника» значений для расчета, результат пересчитывается и не «помнит» предыдущее значение?

В следующем примере, результат расчета можно найти в C7:

=C10-C13+C16 =C10-C13+C16Начальная ситуация

Читайте также:  Форма ПМ — инструкция по заполнению 2021 года

Вы хотели бы захватить новые значения в С10, С13 и С16 и этот результат операции добавить к предыдущему.

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

Реализация накоплений

Пояснения

  • Давайте начнём с возможности повторной инициализации накопленного итога. Мы добиваемся этого с помощью значения содержащегося в ячейке «тест» (C5). Для примера, если C5 содержит 0 (ноль), накопленный итог будет сброшен.
  • Далее, мы должны контролировать итерацию с помощью меню Сервис ▸ Параметры… ▸ LibreOffice Calc ▸ Вычисления. Определение его в 1 приводит к двум расчетам. Но мы не хотим дважды добавлять C7 в накопленный итог. Решение простое: нужно разделить результат накопленного итога на число 2 (см. выше в E7).
  • Минимальное изменение косвенно определяет, какое максимальное значение учитывается. Например, со значением 10000, что угодно в С7 больше, чем 20000 вызовет ошибку 523 (расчет не сходится).
  • Давайте продолжим непосредственно с расчета накопленным итогом. Результат, который следует накапливать уже имеется в C7, но вы не можете его использовать как источник для накопления. Когда любая ячейка из источников меняет значение (эти ячейки показаны оранжевым на скриншоте), C7, для расчета накопленным итогом, необходимо обновить. Поэтому расчет повторяться в E7 вместе с проверкой для сброса значений и необходимым делением на 2:

=IF(C5=0;0;E7+((C10-C13+C16)/2))

  • Во время загрузки документа, значения пересчитываются. Но это является затруднительным в случае расчетов накопленным итогом. Поэтому, вы должны принять меры предосторожности (меню Сервис ▸ Содержимое ячейки ▸ Вычислять автоматически снять галочку), а затем проводить перерасчет «вручную» с помощью Ctrl+⇧ Shift+F9.

В примере лист защищён (без пароля) так, что редактировать можно только области для ввода данных (оранжевые ячейки).

Баттерфляй — метод быстрого расчета нарастающего итога в запросе

Введение

Вычисление нарастающего итога является составной частью большого количества вычислительных процедур в задачах учета и управления /*/. На нем основан расчет себестоимости списаний по партиям, автоматическое распределение сумм оплат по документам движения товаров и многие другие важные алгоритмы в конфигурациях на платформе «1С: Предприятие». Собственно само наличие в платформе механизма итогов регистров накопления (остатков) является следствием необходимости хранения как раз результатов расчета нарастающих итогов из-за того, что их оперативное вычисление сопряжено с существенными затратами вычислительных ресурсов.
Сложность расчета нарастающего итога в запросах обусловлена реляционной природой СУБД, хранящей исходные данные и результаты вычислений. Записи одной и той же таблицы принципиально не связаны между собой, что и порождает проблему их последовательного суммирования в процессе расчета нарастающего итога. О том, что проблема затрагивает не только решения на основе платформы «1С: Предприятие», можно судить по работе[Нарастающий итог сравнение производительности].

Обычный подход к решению задачи получения нарастающего итога в запросе заключается в том, что для каждой строки таблицы находится сумма элементов предыдущих строк. Для примера приведен запрос, подсчитывающий нарастающий итог по таблице «Таб», состоящей из колонки с номером строки «ё» и колонки суммируемого показателя «а»

ВЫБРАТЬ СУММА(ДоДано.Сумма) КАК Сумма ИЗ Дано КАК Дано ВНУТРЕННЕЕ СОЕДИНЕНИЕ Дано КАК ДоДано ПО Дано.НомерСтроки >= ДоДано.НомерСтроки СГРУППИРОВАТЬ ПО Дано.НомерСтроки

При использовании приведенного запроса расчет по каждой строке делается независимо от результатов расчетов других строк. Это порождает проблему быстродействия данного подхода, так как число элементарных операций, а в итоге и затраты времени оказываются пропорциональными половине квадрата числа строк исходной таблицы. То есть при увеличении числа строк в таблице в десять раз, время расчета увеличивается в сто раз! О квадратичной зависимости свидетельствует следующая схема расчета нарастающего итога в таблице из восьми элементов Фиг.0.

ДаноДоДано11111111Сумма1111112111131111141111115111111161111111171111111118

Квадратичная зависимость времени расчета нарастающего итога от числа элементов в таблице приводит к существенной деградации производительности решений при больших размерах таблиц, особенно в случае файлового варианта информационной базы. Однако на практике проблема не так заметна, так как в большинстве случаев число строк в таблицах относительно невелико. В других случаях можно прибегнуть к постобработке результатов запроса в коде или с использованием функции СКД (Вычислить выражение). Тем не менее, остаются некоторые задачи, в которых необходимо ускорить расчет нарастающего итога непосредственно в запросе.

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

Описание метода

Суть предлагаемого метода описывается следующей схемой (Фиг.1), нарисованной для примера расчета нарастающего итога для таблицы из восьми строк. Схема похожа на бабочку, отсюда и название метода — «баттерфляй».

Скема

Первоначально исходная таблица помещается в таблицу «Л1» на левом крыле бабочки. Затем, в соответствии со схемой, производится попарное суммирование соседних строк таблицы «Л1», а результат помещается в таблицу «Л2» из четырех строк. Аналогично по таблице «Л2» строится таблица «Л4», а по «Л4» – таблица «Л8», состоящая по понятным причинам из одной строки. На правом крыле производятся чуть более сложные действия. Единственная строка таблицы «Л8» расщепляется на две строки таблицы «П4». Для этого используется искусственная таблица «Р0», состоящая из двух строк: одна с нулем и другая с единицей. Кроме того (и в этом весь фокус), из верхней строки таблицы «П4» вычитается нижняя строка таблицы «Л4». Это делается затем, чтобы суммы, накопленные в элементе «Л4», не входили в нарастающий итог для строк с меньшим номером. Далее каждая строка таблицы «П4» опять расщепляется на две строки таблицы «П2», а из строк 1, 3 (с нечетными номерами) вычитаются соответствующие строки 2, 4 таблицы «Л2». Ну, и наконец, строится таблица «П1» расщеплением на две строки каждой строки «П2». При этом и строк 1, 3, 5, 7 вычитаются строки 2, 4, 6, 8 таблицы Л1.

Читайте также:  Какой код дохода указывать в 3-НДФЛ за 2021 год: обзор

Последовательность получаемых таблиц приведена на фиг.2.

НомерСтрокиТаблицаЛ1Л2Л4Л8П4П2П11124842121248423126341284515616717818

Для удобства записи и экономии памяти в запросе таблицы правого крыла «П» сразу же после использования удаляются, а таблицы левого крыла «Л» – переформировываются и тоже удаляются.

Запрос, выполняющий расчеты по приведенной схеме, состоит из повторения одинаковых фрагментов. Вот текст рефрена для левого крыла

ВЫБРАТЬ ВЫРАЗИТЬ(Л#1.ё / 2 КАК ЧИСЛО(10, 0)) КАК ё, СУММА(Л#1.Сумма) КАК Сумма ПОМЕСТИТЬ Л#2 ИЗ Л#1 КАК Л#1 СГРУППИРОВАТЬ ПО ВЫРАЗИТЬ(Л#1.ё / 2 КАК ЧИСЛО(10, 0))

А вот текст рефрена для правого крыла

ВЫБРАТЬ 2 * Л2.ё — Р0.е КАК ё, Л2.Сумма ПОМЕСТИТЬ П#1 ИЗ Л#2 КАК Л2, Р0 КАК Р0 ГДЕ 2 * Л2.ё — Р0.е < = &ЧислоСтрок ОБЪЕДИНИТЬ ВЫБРАТЬ Л1.ё — 1, -Л1.Сумма ИЗ Л#1 КАК Л1 ГДЕ (ВЫРАЗИТЬ(Л1.ё / 2 КАК ЧИСЛО(10, 0))) = Л1.ё / 2 ; УНИЧТОЖИТЬ Л#1 ; ВЫБРАТЬ П1.ё, СУММА(П1.Сумма) КАК Сумма ПОМЕСТИТЬ Л1 ИЗ П#1 КАК П1 СГРУППИРОВАТЬ ПО П1.ё ; УНИЧТОЖИТЬ П#1

Для восьми строк весь запрос имеет вид

ВЫБРАТЬ 0 КАК е ПОМЕСТИТЬ Р0 ОБЪЕДИНИТЬ ВЫБРАТЬ 1; ВЫБРАТЬ ВЫРАЗИТЬ(ё/2 КАК Число(10,0))ё,Сумма(Сумма)Сумма ПОМЕСТИТЬ Л2 ИЗ Л1 СГРУППИРОВАТЬ ПО ВЫРАЗИТЬ(ё/2 КАК Число(10,0)); ВЫБРАТЬ ВЫРАЗИТЬ(ё/2 КАК Число(10,0))ё,Сумма(Сумма)Сумма ПОМЕСТИТЬ Л4 ИЗ Л2 СГРУППИРОВАТЬ ПО ВЫРАЗИТЬ(ё/2 КАК Число(10,0)); ВЫБРАТЬ ВЫРАЗИТЬ(ё/2 КАК Число(10,0))ё,Сумма(Сумма)Сумма ПОМЕСТИТЬ Л8 ИЗ Л4 СГРУППИРОВАТЬ ПО ВЫРАЗИТЬ(ё/2 КАК Число(10,0)); ВЫБРАТЬ 2*ё-е ё,Сумма ПОМЕСТИТЬ П4 ИЗ Л8,Р0 ГДЕ 2*ё-е< =&ЧислоСтрок ОБЪЕДИНИТЬ ВЫБРАТЬ ё-1,-Сумма ИЗ Л4 ГДЕ ВЫРАЗИТЬ(ё/2 КАК Число(10,0))=ё/2; УНИЧТОЖИТЬ Л4;ВЫБРАТЬ ё,СУММА(Сумма)Сумма ПОМЕСТИТЬ Л4 ИЗ П4 СГРУППИРОВАТЬ ПО ё; УНИЧТОЖИТЬ П4; ВЫБРАТЬ 2*ё-е ё,Сумма ПОМЕСТИТЬ П2 ИЗ Л4,Р0 ГДЕ 2*ё-е< =&ЧислоСтрок ОБЪЕДИНИТЬ ВЫБРАТЬ ё-1,-Сумма ИЗ Л2 ГДЕ ВЫРАЗИТЬ(ё/2 КАК Число(10,0))=ё/2; УНИЧТОЖИТЬ Л2; ВЫБРАТЬ ё,СУММА(Сумма)Сумма ПОМЕСТИТЬ Л2 ИЗ П2 СГРУППИРОВАТЬ ПО ё; УНИЧТОЖИТЬ П2; ВЫБРАТЬ 2*ё-е ё,Сумма ПОМЕСТИТЬ П1 ИЗ Л2,Р0 ГДЕ 2*ё-е< =&ЧислоСтрок ОБЪЕДИНИТЬ ВЫБРАТЬ ё-1,-Сумма ИЗ Л1 ГДЕ ВЫРАЗИТЬ(ё/2 КАК Число(10,0))=ё/2; УНИЧТОЖИТЬ Л1; ВЫБРАТЬ ё,СУММА(Сумма)Сумма ПОМЕСТИТЬ Л1 ИЗ П1 СГРУППИРОВАТЬ ПО ё; УНИЧТОЖИТЬ П1;

Для произвольного количества строк текст запроса формируется динамически на основе заданного параметра с помощью функции

Функция ТекстЗапросаБаттерфляй_(ЧислоСтрок) ТекстЗапроса = «ВЫБРАТЬ 0 КАК е ПОМЕСТИТЬ Р0 ОБЪЕДИНИТЬ ВЫБРАТЬ 1;»; РефренКрылаЛ = «ВЫБРАТЬ ВЫРАЗИТЬ(ё/2 КАК Число(10,0))ё,Сумма(а)а ПОМЕСТИТЬ Л#2 ИЗ Л#1 СГРУППИРОВАТЬ ПО ВЫРАЗИТЬ(ё/2 КАК Число(10,0));»; РефренКрылаП = «ВЫБРАТЬ 2*ё-е ё,а ПОМЕСТИТЬ П#1 ИЗ Л#2,Р0 ГДЕ 2*ё-е< =&ЧислоСтрок ОБЪЕДИНИТЬ ВЫБРАТЬ ё-1,-а ИЗ Л#1 ГДЕ ВЫРАЗИТЬ(ё/2 КАК Число(10,0))=ё/2; |УНИЧТОЖИТЬ Л#1;ВЫБРАТЬ ё,СУММА(а)а ПОМЕСТИТЬ Л#1 ИЗ П#1 СГРУППИРОВАТЬ ПО ё; УНИЧТОЖИТЬ П#1;»; Охват = 1; Пока Охват < ЧислоСтрок Цикл ТекстЗапроса = ТекстЗапроса + СтрЗаменить(СтрЗаменить(РефренКрылаЛ, «#2», «» + Формат(Охват * 2, «ЧГ=0»)), «#1», Формат(Охват, «ЧГ=0»)); Охват = Охват * 2; КонецЦикла; Пока Охват > 1 Цикл ТекстЗапроса = ТекстЗапроса + СтрЗаменить(СтрЗаменить(РефренКрылаП, «#2», Формат(Охват, «ЧГ=0»)), «#1», Формат(Охват / 2, «ЧГ=0»)); Охват = Охват / 2 КонецЦикла; Возврат ТекстЗапроса КонецФункции

Нетрудно заметить, что общее число всех выполняемых операций на фиг.1 пропорционально 4,5 N (!!!), где N – число строк в исходной таблице. Это существенно меньше, чем 0,5 N^2. Отсюда и высокая эффективность метода. Притом, что все выполняемые операции делаются с помощью низкозатратной операции группировки.

Для примера приведены таблицы и графики сравнительного анализа времени выполнения расчета нарастающего итога исходной таблицы в зависимости от числа строк в этой таблице для файловой базы (фиг.3)

Фиг.3

и базы на основе MSSQL (фиг.4)

Фиг.4

Читайте также:  Налог на прибыль организаций в 2020-2021 годах по НК РФ

Видно, что в файловом варианте стандартный метод проигрывает методу «баттерфляй» уже начиная с 200 строк, а в SQL-варианте – начиная с 2000 строк.

Чтобы можно было самостоятельно проверить приведенные данные, к статье приложена обработка. Она позволяет сформировать таблицу из нужного числа строк и проверить время расчета нарастающего итога разными методами. Метод 0 в обработке – получение нарастающего итога в коде, метод 1 – с помощью стандартного запроса «Треугольником», метод 2 – запроса «Баттерфляй».

Где это можно использовать на практике?

Фундаментальный характер исходной задачи предполагает довольно широкую область применения предлагаемого метода. Покажем пока только один конкретный пример использования метода: расчет остатков товаров на каждый день (год, квартал, месяц, час, минуту) в запросе.

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

Функция ТекстЗапросаБаттерфляй(ЧислоСтрок) ТекстЗапроса = «ВЫБРАТЬ 0 КАК е ПОМЕСТИТЬ Р0 ОБЪЕДИНИТЬ ВЫБРАТЬ 1;»; РефренКрылаЛ = «ВЫБРАТЬ э,ВЫРАЗИТЬ(ё/2 КАК Число(10,0))ё,Сумма(а)а ПОМЕСТИТЬ Л#2 ИЗ Л#1 СГРУППИРОВАТЬ ПО э,ВЫРАЗИТЬ(ё/2 КАК Число(10,0));»; РефренКрылаП = «ВЫБРАТЬ э,2*ё-е ё,а ПОМЕСТИТЬ П#1 ИЗ Л#2,Р0 ГДЕ 2*ё-е< =&ЧислоСтрок ОБЪЕДИНИТЬ ВЫБРАТЬ э,ё-1,-а ИЗ Л#1 ГДЕ ВЫРАЗИТЬ(ё/2 КАК Число(10,0))=ё/2; |УНИЧТОЖИТЬ Л#1;ВЫБРАТЬ э,ё,СУММА(а)а ПОМЕСТИТЬ Л#1 ИЗ П#1 СГРУППИРОВАТЬ ПО э,ё; УНИЧТОЖИТЬ П#1;»; Охват = 1; Пока Охват < ЧислоСтрок Цикл ТекстЗапроса = ТекстЗапроса + СтрЗаменить(СтрЗаменить(РефренКрылаЛ, «#2», «» + Формат(Охват * 2, «ЧГ=0»)), «#1», Формат(Охват, «ЧГ=0»)); Охват = Охват * 2; КонецЦикла; Пока Охват > 1 Цикл ТекстЗапроса = ТекстЗапроса + СтрЗаменить(СтрЗаменить(РефренКрылаП, «#2», Формат(Охват, «ЧГ=0»)), «#1», Формат(Охват / 2, «ЧГ=0»)); Охват = Охват / 2 КонецЦикла; Возврат ТекстЗапроса КонецФункции

Результат запроса подставляется вместо «;» в запрос для СКД, получающий исходные данные и выводящий результат. Он имеет следующий вид

ВЫБРАТЬ 1 КАК ё, Остатки.Номенклатура КАК э, Остатки.КоличествоОстаток КАК а ПОМЕСТИТЬ Л1 ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&НачалоПериода, ) КАК Остатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РАЗНОСТЬДАТ(&НачалоПериода, Обороты.Период, ДЕНЬ) + 2, Обороты.Номенклатура, Обороты.КоличествоОборот ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, ДЕНЬ, ) КАК Обороты ; ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Л1.ё — 1) КАК Период, Л1.э КАК Номенклатура, Л1.а КАК Остаток ИЗ Л1 КАК Л1 ГДЕ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Л1.ё — 1) < = &КонецПериода

Слово «День» при компоновке результата заменяется на интересующий нас период.

Заметьте, что этим запросом чудесным образом получаются остатки и на даты периодов, в которых не было движений, хотя в исходных данных этих периодов не было! Нужно отметить, что полученный запрос не требует многократного обращения к виртуальному регистру остатков для дат, на которые итоги не хранятся, а вычисляются. Указанным недостатком страдает подавляющее большинство решений, размещенных на Инфостарте /**/. Поэтому запрос крайне эффективен в плане времени выполнения и без труда работает на мелких периодах типа часа и минуты, на которых другие решения крайне не эффективны.

К статье приложена обработка, содержащая данное решение.

Вторым примером может быть задача агрегатной конкатенации строк в запросе [Агрегатная конкатенация строк в запросе — сложно, но не невозможно]: на одном из этапов там требуется определить порядковый номер отдельного символа в общей последовательности. При определении номера стандартным методом эта операция выполняется долго, а если применить схему «баттерфляй», метод агрегатной конкатенации сможет соперничать по быстродействию с внезапросными способами, то есть станет достаточно практичным (хотя и еще более громоздким).

Третьим примером может быть задача последовательной нумерации документов по времени. На входе при этом будет таблица с номером секунды документа, а на выходе — порядковый номер документа в последовательности.

Другие возможные примеры применения метода пока не готовы для демонстрации или не разработаны или еще неизвестны.

Заключение

В заключение необходимо еще раз обратить внимание и подчеркнуть тот факт, что найденный метод получения нарастающего итога в запросе имеет минимально возможную трудоемкость О(N) /***/. То есть трудоемкость метода фактически (с точностью до коэффициента) равна трудоемкости получения нарастающих итогов в коде. Ну и, кроме того, данное решение является чисто алгоритмическим. Оно не привязано жестко к особенностям языка запросов 1С. Поэтому с таким же успехом может использоваться и при решении задачи получения нарастающих итогов, например, непосредственно на языке T-SQL.

Ну и совсем общие выводы заключаются в том, что данная задача и ее решение учат тому, что никогда не следует терять пионерского оптимизма: хотя эпоха великих алгоритмических открытий в целом вроде бы кончилась, но в нашей предметной области еще остались места для исследований и новых интересных находок.

Примечания

*/ Интересно, что вычисление нарастающего итога по сути – это задача численного интегрирования функции, заданной исходной таблицей.

**/ Довольно часто получение остатков на каждый день используется в задаче определения среднедневного остатка, хотя этот показатель определяются гораздо проще непосредственно через обороты как показано в статье [Расчет средних по периодам в запросе — это элементарно!]

***/ Тем, кому предложенный метод кажется слишком сложным, можно порекомендовать ознакомиться с методами построения, например, суффиксного массива, имеющих линейную трудоемкость О(N) [https://habrahabr.ru/post/115346/]. Тогда станет понятно, что такое по настоящему сложные методы достижения линейной трудоемкости.

Приложение

На тему нарастающего итога в запросах на языке платформы «1С:Предприятие» на Инфостарте сломано немало копий:

Отчет по просроченной задолженности/задолженность по интервалам (УПП УТ 8.1, СК

Нарастающие итоги в запросе и методы ускорения его выполнения

SubSys: Просроченная задолженность по срокам (режим — по договорам в целом ФИФО)

Подведем итоги. Нарастающие

Запрос. Нарастающий итог. Как «я» его понимаю.

Запрос. Нарастающий итог. Как «я» его НЕ понимаю (вторая часть).

Читайте также:  НДС при импорте из Белоруссии в Россию: нюансы 2021 — 2021

БП1.6.Просроченная задолженность по 62 сч. Продолжение разго

ФИФО для любопытных

Запрос. Нарастающий итог. Как «я» его НЕ понимаю (третья часть).

Использование нарастающих итогов в партионном учете и не только

Нарастающие итоги. Объединение двух таблиц с нарастающими итогами

Что значит с нарастающим итогом

Что значит «нарастающим итогом»? Во многих отчетностях сведения указываются нарастающим итогом, как их рассчитывать?

Это означает, что суммы при расчете налога (взноса) каждый раз берутся, начиная с января. Например, ЕСН с зарплаты сотрудников рассчитывается нарастающим итогом (п. 2 ст. 237 НК РФ). Предположим, выплаты за январь составили 100 руб., за февраль — 150 руб., за март — 200 руб. По итогам января ЕСН определяется со 100 руб., февраля — с 250 руб. (100 + 150), марта — с 450 руб. (100 + 150 + 250). В бюджет перечисляется разница между рассчитанной суммой и уплаченной на момент расчета.

1 августа 2008 г.

«Современный предприниматель. Индивидуальный подход к бизнесу», N 8, август 2008 г.

Актуальная версия заинтересовавшего Вас документа доступна только в коммерческой версии системы ГАРАНТ. Вы можете приобрести документ за 54 рубля или получить полный доступ к системе ГАРАНТ бесплатно на 3 дня.

Купить документ Получить доступ к системе ГАРАНТ

Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.

Журнал «Современный предприниматель. Индивидуальный подход к бизнесу»

Учредитель и издатель ООО «Издательский дом «В-Медиа»

Журнал зарегистрирован Министерством Российской Федерации по делам печати, телерадиовещания и средств массовой информации. Свидетельство о регистрации ПИ N ФС77-25680 от 22 сентября 2006 г.

Адрес: 109444, г. Москва, ул. Ташкентская, д. 9

Статьи о бухучете и справочная информация

Нарастающий итог

при заполнении декларации по стр.180 выхдит налог к уплате=19655.

Пример расчета показателей нарастающим итогом

Все налогоплательщики формируют налоговую базу по прибыли нарастающим итогом.

Рассмотрим пример расчета показателей нарастающим итогом.

Пример:

Предприятие, отчитывающееся по прибыли за квартал, полугодие, 9 месяцев и год, в течение года получило следующие доходы и понесло указанные расходы:

  • за 1-й квартал: доходы — 400 000 руб., расходы — 420 000 руб.;
  • за 2-й квартал: доходы — 650 000 руб., расходы — 480 000 руб.;
  • за 3-й квартал: доходы — 590 000 руб., расходы — 460 000 руб.;
  • за 4-й квартал: доходы — 250 000 руб., расходы — 240 000 руб.

Показатель 1-й квартал Полугодие 9 месяцев Год Полученные доходы, руб. 400 000 400 000 + 650 000 = 1 050 000 1 050 000 + 590 000 = 1 640 000 1 640 000 + 250 000 = 1 890 000 Понесенные расходы, руб. 420 000 420 000 + 480 000 = 900 000 900 000 + 460 000 = 1 360 000 1 360 000 + 240 000 = 1 600 000 Финансовый результат, руб. -20 000 150 000 280 000 290 000

Рассчитывая базу подобным образом и, например, получив прибыль в 1-м квартале, по итогам полугодия можно выйти на убыток. А за 9 месяцев и год снова получить прибыль. Тогда авансовые платежи по налогу на прибыль будут рассчитаны за 1-й квартал и 9 месяцев. По итогам полугодия авансов по налогу на прибыль не будет, а суммы, уплаченные за 1-й квартал, зачтутся при расчете по налогу по итогам 9 месяцев и за год.

Как верно заполнить декларацию по налогу на прибыль нарастающим итогом?

А пока наши возможности ограничены нашей наличностью.

Из таблицы также очевидно, что чем больше период планирования, тем больше возможности. Это похоже на то, как меняется наше поле зрения, когда мы поднимаемся в воздух на вертолете. Пока мы на земле, нашему взору доступно расстояние лишь до ближайших деревьев. Но вот лопасти вертолета начинают вращаться, и мы отрываемся от земли. Поднимаемся все выше и выше – и картина меняется. Наше поле зрения постепенно расширяется по мере набора высоты. Теперь мы видим не только ближайшие к нам деревья, но и то, что за ними: где какой лес, где речка, где живут люди, дороги, поля…

Чем шире горизонт планирования, тем более грандиозные цели мы можем соотнести с нашими возможностями.

Известны результаты опросов на тему, как планируют люди с различным уровнем достатка.

Люди, у которых денег нет совсем, совсем и не планируют. Живут сегодняшним днем.

Люди со средним достатком планируют на месяц вперед, реже на год.

Состоятельные люди планируют до конца жизни.

Богатые люди составляют финансовые планы, захватывающие даже жизнь их внуков.

Я считаю, что верно и обратное. Если мы смотрим лишь на день вперед, мы не сможем замахнуться на серьезную цель. А ставя мелкие цели мы не сможем существенно изменить свое благосостояние…

На собственном опыте я убедился, что оптимальный срок финансового плана должен быть не менее 5 лет. А некоторые цели (например, такие как создание активов для безбедной жизни на пенсии) необходимо ставить сразу лет на 30-40.

Но, опять таки, чтобы не усложнять таблицы, мы пока ограничимся одним годом.

Ну вот, с определением финансовых возможностей, я надеюсь, разобрались. Пора переходить к самому главному: к целям!

«Современный предприниматель», 2008, N 8 Вопрос: Что значит «нарастающим итогом»? Во многих отчетностях сведения указываются нарастающим итогом, как их рассчитывать? Самеева, ИП Ответ: Это означает, что суммы при расчете налога (взноса) каждый раз берутся начиная с января. Например, ЕСН с зарплаты сотрудников рассчитывается нарастающим итогом (п. 2 ст. 237 НК РФ). Предположим, выплаты за январь составили 100 руб., за февраль — 150 руб., за март — 200 руб. По итогам января ЕСН определяется со 100 руб., февраля — с 250 руб. (100 + 150), марта — с 450 руб. (100 + 150 + 250). В бюджет перечисляется разница между рассчитанной суммой и уплаченной на момент расчета. О.Евграфов Эксперт журнала Подписано в печать 05.08.2008

На рисунке ниже Вы можете видеть таблицу Excel, в которой представлен объем продаж по дням за январь месяц 2014 года. В ячейке B20 отображается общая сумма продаж за весь месяц, вычисленная с помощью функции СУММ. Требуется посчитать объем продаж на каждую дату января относительно начала месяца, т.е. накопительную сумму.

Авансовые платежи по налогу на прибыль в 2020 и 2021 году

При подсчете накопительной суммы в Excel, необходимо, чтобы суммирование всегда начиналось с третьей строки (ячейки B3) и заканчивалось рассматриваемой строкой. Например, ячейка C3 должна содержать следующую формулу: =СУММ(B3), а если говорить точнее, то =СУММ(B3:B3), т.е. суммирование диапазона, состоящего из одной ячейки.

Авансовые платежи по налогу на прибыль в 2020 и 2021 году

Читайте также:  Какой признак выплат в расчете по страховым взносам следует указывать

Ячейка C4 такую формулу: =СУММ(B3:B4)

Авансовые платежи по налогу на прибыль в 2020 и 2021 году

Ячейка C19 такую формулу: =СУММ(B3:B19)

Авансовые платежи по налогу на прибыль в 2020 и 2021 году

Из представленных выше формул становится очевидно, что необходимая нам формула должна использовать смешанную ссылку и выглядеть следующим образом:

Авансовые платежи по налогу на прибыль в 2020 и 2021 году

Если скопировать данную формулу во все ячейки таблицы, получим следующий результат:

Поскольку значения в ячейках B20 и C19 совпадают, то можно быть уверенным, что накопительная сумма в Excel подсчитана верно. Как видите, все просто!

Оцените качество статьи. Нам важно ваше мнение:

Вход на сайт

RSS Печать
Рубрика: Бухгалтерский учет Ответов: 5

Вы можете добавить тему в список избранных и подписаться на уведомления по почте.

« Первая ← Пред.1 След. → Последняя (1) »

ираподскажите, пжлст.: нарастающий итог в декларациях считается с начала нового года с нуля или прибавляется к прошлому году? и как считать? по ип деятельность не осуществлялась ни в прошл квартале, ни в этом, что тогда писать в декларации? Я хочу обратить внимание модератора на это сообщение, потому что:

Идет отправка уведомления…

Света [e-mail скрыт] Беларусь, Мозырь

Написал 3392 сообщения Написать личное сообщение Репутация: 222

#2[117152] 20 апреля 2010, 8:24Если не работали, то данных у вас никаких нет,получается тогда, что у вас ничего писаться не будет. А нарастающий итог считается только с нач.года. Прошлый год не считаем. Я хочу обратить внимание модератора на это сообщение, потому что:

Идет отправка уведомления…

Татьяна-М [email protected] Беларусь, *

Написал 3812 сообщений Написать личное сообщение Репутация: 251

#3[117157] 20 апреля 2010, 8:32нарастающий итог счиатаеться по каждому календарному году отдельно. январь+февраль+март+апрель+….+декабрь Я хочу обратить внимание модератора на это сообщение, потому что:

Идет отправка уведомления…

Надо запастись либо умом,чтобы понимать,либо веревкой,чтобы повеситься!!! ******** Если человек упрекнул тебя в неблагодарности, выясни, сколько стоит его услуга, рассчитайся и больше не имей с ним никаких отношений *************************** Не в количестве знаний заключается образование, а в полном понимании и искусном применении всего того, что знаешь. ВАЛЮША [e-mail скрыт] Беларусь Европа, Минск

Написал 12250 сообщений Написать личное сообщение Репутация: 1344

#4[117207] 20 апреля 2010, 9:30

Татьяна-М писал(а):

нарастающий итог счиатаеться по каждому календарному году отдельно. январь+февраль+март+апрель+….+декабрь

Света писал(а):

Если не работали, то данных у вас никаких нет,получается тогда, что у вас ничего писаться не будет. А нарастающий итог считается только с нач.года. Прошлый год не считаем.

даже,если деятельности пока не было,надо все равно сдать ПУСТЫЕ декларации в обязательном порядке.

Я хочу обратить внимание модератора на это сообщение, потому что:

Идет отправка уведомления…

ира [e-mail скрыт] Беларусь, Столин

Написал 99 сообщений Написать личное сообщение Репутация:

#5[117283] 20 апреля 2010, 11:24спасибо, то, что сдать нужно-знаю..не понимаю, какой смысл нолики сдавать.. Я хочу обратить внимание модератора на это сообщение, потому что:

Идет отправка уведомления…

ВАЛЮША [e-mail скрыт] Беларусь Европа, Минск

Написал 12250 сообщений Написать личное сообщение Репутация: 1344

#6[117288] 20 апреля 2010, 11:27Ирина,дело в том, что 2009г. можно было не сдавать,если нолики. Теперь, с 2010г.в связи с введен. ОЧ НКРБ произошли изменения.теперь налогоплательщики обязаны предоставить декларацию по налогу на прибыль независимо от наличия либо отсутствия объектов налогообложения.Т.е., мы вернулись к периоду, что был до 2009г. Я хочу обратить внимание модератора на это сообщение, потому что:

Идет отправка уведомления…

« Первая ← Пред.1 След. → Последняя (1) »

Для того чтобы ответить в этой теме, Вам необходимо войти в систему или зарегистрироваться.

Показатель чистой прибыли: кто, где и зачем его рассчитывает

Чистая прибыль и коммерческая деятельность — понятия, неразрывно связанные между собой. Ради прибыли создаются новые производства, интенсивно используются материальные и трудовые ресурсы, изыскиваются эффективные способы наращивания доходности коммерческой деятельности.

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

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

Как провести анализ чистой прибыли узнайте из статьи «Порядок проведения анализа чистой прибыли предприятия».

В расчете чистой прибыли принимают участие множество финансовых показателей, и формула ее расчета не так проста, как кажется на первый взгляд. В бухотчетности любой компании чистая прибыль отражена в строке 2400 отчета о финансовых результатах (ОФР), и все показатели графы 2 этого отчета участвуют в определении чистой прибыли.

О структуре и назначении ОФР узнайте из этой публикации.

Подробный алгоритм расчета чистой прибыли приведен в следующем разделе.

Влияние основных показателей деятельности компании на чистую прибыль

Чистая прибыль является многокомпонентным показателем — это видно из состава ее расчетной формулы. При этом каждый участвующий в расчете параметр также сложносоставной. Например, выручка фирмы может подразделяться по разным направлениям деятельности или географическим сегментам, но весь ее объем должен найти свое отражение в формуле расчета чистой прибыли.

О том, как связаны выручка и валовый доход .

Такой показатель, как себестоимость, в тех или иных компаниях может иметь различную структуру и по-разному влиять на чистую прибыль. Так, не стоит ожидать большой чистой прибыли, если на производимую компанией продукцию тратятся суммы, равные или превышающие объем полученной выручки (такое возможно при материалоемких или трудоемких производствах либо применении устаревших технологий).

Влияние на чистую прибыль коммерческих и управленческих расходов очевидно: они уменьшают ее. Величина такого уменьшения напрямую зависит от способности менеджмента компании рационально подходить к структуре и объемам данного вида издержек.

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

Роль прочих доходов и расходов в формировании чистой прибыли

Зачастую основная деятельность компании не приносит ей желаемой чистой прибыли. Особенно часто это происходит на первоначальном этапе становления фирмы. В этом случае большим подспорьем могут послужить полученные компанией дополнительные доходы.

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

Но если фирма использует в работе заемные средства, начисленные за пользование кредитом проценты могут значительно снизить показатель чистой прибыли — о таком влиянии факта привлечения заемных средств на чистую прибыль забывать не стоит. Сумма процентов по заемным обязательствам (даже рассчитанная по рыночной ставке) может серьезно уменьшить чистую прибыль, а в определенных случаях привести к убыткам и банкротству.

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

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

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

Как расходы на благотворительность отразить в бухучете, расскажем в этом материале.

Ячейка с накоплением (нарастающим итогом)

37650 07.10.2012

Достаточно часто возникает ситуация, когда нам необходимо суммировать (накапливать) несколько последовательно введенных в одну ячейку значений:

Т.е. если, например, ввести в ячейку А1 число 5, то в B1 должно появиться число 15. Если затем ввести в А1 число 7, то в ячейке B1 должно появится 22 и т.д. Вобщем то, что бухгалтеры (и не только они) называют накопительный итог.

Реализовать такую накопительную ячейку-аккумулятор можно при помощи простого макроса. Щелкните правой кнопкой мыши по ярлычку листа, где находятся ячейки А1 и B1 и выберите в контекстном меню Исходный текст
(Source Code)
. В открывшееся окно редактора Visual Basic скопируйте и вставьте код простого макроса:
Private Sub Worksheet_Change(ByVal Target As Excel.Range) With Target If .Address(False, False) = «A1» Then If IsNumeric(.Value) Then Application.EnableEvents = False Range(«A2»).Value = Range(«A2»).Value + .Value Application.EnableEvents = True End If End If End With End Sub
Адреса ячеек А1 и A2, естественно, можно заменить на свои.

Если отслеживать ввод данных и суммировать нужно не отдельные ячейки, а целые диапазоны, то макрос придется немного изменить:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, Range(«A1:A10»)) Is Nothing Then If IsNumeric(Target.Value) Then Application.EnableEvents = False Target.Offset(0, 1).Value = Target.Offset(0, 1).Value + Target.Value Application.EnableEvents = True End If End If End Sub

Предполагается, что ввод данных производится в ячейки диапазона A1:A10, а суммируются введенные числа в соседний столбец справа. Если в вашем случае он не соседний, то увеличьте сдвиг вправо в операторе Offset — замените 1 на число побольше.

Ссылки по теме

  • Что такое макросы, куда вставлять код макроса на VBA, как их использовать?

Андрей

07.10.2012 14:29:11

Всё великолепно, только у меня маленькая просьба, модернизации этого маркоса. Ячеек для ввода данных несколько, в столбик, а ячейка для накопления данных одна. Как так сделать?. Ссылка

Николай Павлов

07.10.2012 14:33:21

Замените строку

Target.Offset(0, 1).Value = Target.Offset(0, 1).Value + Target.Value

на

range(«B1»).Value = range(«B1»).Value + Target.Value

где B1 — ваша одна ячейка накопления

Родитель Ссылка

Роман

07.10.2012 14:29:37

Спасибо большое за данный прием!!! Очень нужен был!!! Ссылка

Лилия Коваль

01.02.2013 09:58:05

Николай, спасибо большое, отличная вещь!!! Ваш сайт — просто какой-то драгоценный клад для «свихнутых» на Excel! Ссылка

Александр Юдаев

12.08.2016 15:02:57

Это точно ! Родитель Ссылка

Лилия Коваль

05.02.2013 11:54:35

Не подскажете, что я делаю не так? Нужно сделать накопительными два столбца подряд, в которые попадают данные также из двух столбцов, расположенных рядом. Накопительные сдвинуты на 3 столбца вправо. Первый макрос срабатывает, а второй не хочет — ни в одном окне макроса, ни в разных…

Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, Range(«I6:I100» )) Is Nothing Then If IsNumeric(Target.Value) Then Application.EnableEvents = False Target.Offset(0, 3).Value = Target.Offset(0, 3).Value + Target.Value Application.EnableEvents = True End If End If End Sub Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, Range(«J6:J100» )) Is Nothing Then If IsNumeric(Target.Value) Then Application.EnableEvents = False Target.Offset(0, 3).Value = Target.Offset(0, 3).Value + Target.Value Application.EnableEvents = True End If End If End Sub

Ссылка

Николай Павлов

07.02.2013 00:47:20

Лилия, процедура Worksheet_Change бывает только одна, а у вас две (да еще и с одинаковым именем) — поэтому вторая не выполняется. Нужно объединить код этих двух макросов в один. Да и не нужна тут вторая половина — достаточно увеличить чувствительный интервал:

Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, Range(«I6:J100» )) Is Nothing Then If IsNumeric(Target.Value) Then Application.EnableEvents = False Target.Offset(0, 3).Value = Target.Offset(0, 3).Value + Target.Value Application.EnableEvents = True End If End If End Sub

Родитель Ссылка

Лилия Коваль

07.02.2013 09:01:48

Николай, спасибо Вам огромное!!! Вроде всё просто, а вот не додумалась же! А как оформляются несколько разных процедур, если в интервал попадают столбцы, которые не нужны для накопления? Например, из столбца I перенести на 3, а из столбца K (через один) на 5. Заранее прошу прощения за излишнее любопытство, но очень хочется освоить этот прием до конца Родитель Ссылка

Николай Павлов

19.04.2013 21:42:15

Я бы рекомендовал для каждого диапазона прописывал свой блок If Not Intersect… End If внутри одной общей процедуры обработки события Sub… End Sub Будет немного громоздко, но зато не запутаетесь. Родитель Ссылка

Лилия Коваль

22.04.2013 08:54:10

Спасибо большое! Родитель Ссылка

Serge82

19.04.2013 19:23:39

Подскажите пожалуйста как быть, данный макрос у меня не работает, если в ячейку ввода данных подтягиваются данные из другой таблицы, или же просто если в ячейке ввода данных есть формула (сумма и т.д.) т.е. макрос работает только если в ячейку ввода данных вводить данные только вручную, это не очень удобно… Спасибо заранее Ссылка

Николай Павлов

19.04.2013 21:47:26

Если у вас в ячейке ввода данных формула, то когда вы собираетесь плюсовать ее данные к накопительной ячейке? При каждом пересчете листа? Это при любом изменении любой ячейки файла происходит, т.е. сотни раз в минуту. Если нужно плюсовать только при изменении результата формулы после пересчета, то придется в макросе где-то хранить предыдущее значение и при каждом пересчете сравнивать новое значение со старым. И плюсовать только в том случае, если оно изменилось. Родитель Ссылка

Serge82

22.04.2013 09:30:30

Вы правильно заметили, плюсовать нужно именно при изменении результата формулы после пересчета. Допустим в нескольких столбцах, в одной строке постоянно меняются данные, например добавляются единицы, потом есть суммирующая ячейка, но когда в этих ячейках данные обнуляются, суммирующая ячейка тоже обнуляется, поэтому нужна ячейка с накоплением результата. К сожалению решение найти не смог. Подскажите пожалуйста как реализовать Ваше предложение хранить в макросе предыдущее значение и затем плюсовать его… Спасибо заранее.. Ссылка

Danil Lianov

26.04.2013 05:27:41

Потрясающе! То что нада. Огромное спасибо! Ссылка

Алексей

12.06.2013 21:43:06

Подскажите пожалуйста, возможно ли сделать так, чтобы данные вводились в ячейки столбцов A:B:C, а накопительный итог был в одном столбце? Спасибо. Ссылка

Алексей

20.06.2013 17:51:14

Добрый день! Подскажите, а можно ли этот макрос изменить так, чтоб он работал не с числами, а с текстом? То есть, чтоб текст из ячейки ввода данных добавлялся к тексту, который уже имеется в ячейке накопления данных. Спасибо. Ссылка

Николай Павлов

02.07.2013 10:15:04

Просто замените в коде знак + на & Родитель Ссылка

Алексей

26.07.2013 15:55:11

Кроме того, насколько я понимаю, нужно заменить функцию IsNumeric.

Родитель Ссылка

Николай Павлов

25.09.2013 14:55:54

Да, просто убрать строчку с ней. Родитель Ссылка

Николай Павлов

07.08.2013 07:42:12

Sub Worksheet_Change (ByVal Target As Excel.Range) If Not Intersect(Target, Range(«I6:J100» )) Is Nothing Then If IsNumeric(Target.Value) Then Application.EnableEvents = False Target.Offset(0, 3).Value = Target.Offset(0, 3).Value + Target.Value Application.EnableEvents = True End If End If End Sub

Ссылка

Константин Глушков

24.08.2016 22:33:41

Николай! Бьюсь вторую неделю, не могу реализовать эту функцию в Userform. Суть задачи в том, чтобы при последовательном выборе значений из списка комбобокса значения, выбираемые в комбобоксе накапливались либо в ячейке на листе, либо в текстбоксе — хоть где -нибудь:(. Заранее благодарен за возможную помощь или комментарий. Родитель Ссылка

Игорь Антипов

14.09.2013 14:09:37

Добрый день. А может и мне поможете.Мне надо этот макрос применить на несколько ячеек в разных местах странице.Подскажите что куда надо добавить. Ссылка

Сергей Вдовенко

04.10.2013 10:23:43

Добрый день. Используя всё вышеизложенное получилось сделать ячейку G2, в которой суммируются данные вводимые в диапазон A2;F2. «Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, Range(«A2:F2»)) Is Nothing Then If IsNumeric(Target.Value) Then Application.EnableEvents = False Range(«G2»).Value = Range(«G2″).Value + Target.Value Application.EnableEvents = True End If End If End Sub» Подскажите, пожалуйста, как сделать неограниченное количество таких строк? Ссылка

Николай Павлов

08.10.2013 13:31:13

Каких строк? Ячеек? Родитель Ссылка

Сергей Вдовенко

09.10.2013 08:34:46

Да, ячеек, но в каждой последующей строке. Т.е. диапазон А3;F3 будет суммироваться в G3, А4;F4 в G4 и т.д. Хотим сделать книгу контроля наличия запчастей на складе. Листов в книге будет 32, в листах с 1 по 31 — столбцы диапазона А;F будут соответствовать подразделениям получающим запчасти, каждая строка — определённой детали. Листы все одинаковые, данные из столбцов G будут суммироваться на листе 32. Туда же, на 32 лист будут забиваться данные об остатках с прошлого месяца и о поступлениях запчастей, в результате будет видно наличие той или иной запчасти на данный момент. Вот такая задумка. Получится ли? Родитель Ссылка

Николай Павлов

09.10.2013 08:40:26

Можно так:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, Range(«A3:F10»)) Is Nothing Then If IsNumeric(Target.Value) Then Application.EnableEvents = False Cells(Target.Row, 7).Value = Cells(Target.Row, 7).Value + Target.Value Application.EnableEvents = True End If End If End Sub

Сергей, а чем вам, в данном случае, обычные формулы не подходят? Прописать в G3 формулу =СУММ(A3:F3) и скопировать вниз, я имею ввиду.

Родитель Ссылка

Сергей Вдовенко

09.10.2013 10:13:50

Спасибо большое, Николай, за помощь! Надеюсь теперь получится. По поводу простых формул, дело в том, что отдельные подразделения в период ремонта могут брать, например болтов М10, по несколько раз за день. Будет надёжней если суммировать будет Ексель, а не Джамшут. И ещё вопрос — при появлении новых запчастей придётся в каждый лист, в определённое место, добавлять новую строку с наименованием. Возможно ли это автоматизировать? Например добавил в 32 лист — появилась в остальных? Или это отдельная тема? Архив форума просмотрел до 40 страницы, пока не нашёл. Впереди ещё 1000 с лишним. Родитель Ссылка

Николай Павлов

09.10.2013 10:14:12

Ну, это совсем просто Сначала выделите все листы (удерживая CTRL или SHIFT щелкаете по ярлычкам листов), а потом вводите новые данные на один из них — они добавятся на все. Родитель Ссылка

Сергей Вдовенко

09.10.2013 11:13:58

Действительно, просто. Ещё раз спасибо, Николай! Ссылка

iKlev4s

15.10.2013 02:36:43

добрый день, есть вопрос о ячейке с накоплением через н-ую строчку. Напр. столбик А — ячейка A10 — 1-я, 4-я и 7-я и ячейка A11 — 2-я, 5-я и 8-я строчки, т.е. через каждую 3-ю строчку. Cтолбик B описывается таким кодом

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range(«B1:B7»)) Is Nothing And IsNumeric(Target) Then Application.EnableEvents = False Range(«B10») = Range(«B10»).Value + Target.Value Application.EnableEvents = True End If End Sub

Спасибо

Ссылка

Андрей Н.

28.10.2013 19:59:19

Николай, спасибо за замечательный макрос!

Но вот одна проблемка: с некоторой периодичностью данные в столбце ввода [ Target, Range(«O7 : O5000» ) ] меняются при помощи формулы (которая тянет новые данные для каждой строки по условиям из другого файла). Формула эта храниться как формула только в одной ячейке выше шапки, а в остальных после обновления данных сохраняется как значение (для экономии ресурсов). НО при вставлени формулы в поля ввода, в полях накопления ничего не происходит (вставляются формулы диапазоном), и при Ctrl+C — Ctrl+V(as value) тоже ничего. Однако, если взять поштучно, т.е. скопировать формулу и вставить в ОДНО поле ввода данных (для их соответ-го обновления), то поле накопления корректно меняется. Но строк-то более 500 — в каждую руками всталять долго. А также, если после вставки формулы в поле ввода данных нажать F2 и Ввод, то поле накопления также корректно меняется.
ВОПРОС: что необходимо сделать, чтобы поле накопления менялось и после вставки в поле ввода формулы (без проваливания в каждую по F2) ?? — ооочень нужно, помогите пожалуйста.
Исходный код такой: Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, Range(«o7:o5000»;)) Is Nothing Then If IsNumeric(Target.Value) Then Application.EnableEvents = False Target.Offset(0, 1).Value = Target.Offset(0, 1).Value + Target Application.EnableEvents = True End If End If End Sub Ссылка

belek omuraliev

02.03.2014 10:00:11

здравствуйте Николай макрос работает великолепно, спасибо за Ваши подсказки. помогите пожалуйста когда ввожу данные на А1, на А2 накапливается, замечательно. как можно сделать так, когда вводишь например данные на B1, из сумм накопленных на А2 минусовалось. Вводя данные на А1 и на В1 по очередности хотелось бы увидеть результат на А2. Ячейка А2 находится на другом листе. Ссылка

Анатолий Зазулин

28.05.2014 15:03:16

Здравствуйте Николай! Подскажите пожалуйста как запрограммировать макрос так что бы данные забивались в одной рабочей книге excel а суммировались в другой? Я только учусь работать с макросами и пока не очень хорошо разбираюсь. Помогите, буду вам очень благодарен! Ссылка

Михаил Лапушков

09.02.2015 17:23:44

Добрый день Николай! Спасибо за макрос! Возможно ли сделать чтобы данный макрос срабатывал не автоматически, а например при нажатии кнопки(либо другой команды на выполнение)? Ссылка

Николай Павлов

14.02.2015 11:18:48

С этим проще — надо просто не помещать макрос в обработчик события изменения листа, а прописать как обычный:

Sub Plusovalka() Range(«A2») = Range(«A2») + Range(«A1») End Sub

Потом можно нарисовать на листе кнопку (вкладка
Разработчик — Вставить — Кнопка
) и назначить ей этот макрос.

Родитель Ссылка

Михаил Лапушков

14.02.2015 18:21:55

СПАСИБО! Родитель Ссылка

Елена Конюшкова

13.02.2015 21:28:59

Большое спасибо! Но как быть если надо несколько накопительных ячеек на одном листе? Ссылка

Николай Павлов

14.02.2015 11:23:09

Прописать их все внутри макроса, как в первом примере:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) With Target If .Address(False, False) = «A1» Then …. End If If .Address(False, False) = «F5» Then …. End If If .Address(False, False) = «X13» Then …. End If End With End Sub

Родитель Ссылка

Вадим Скаридов

19.02.2015 17:53:19

Здравствуйте, Николай. Мои познания VBA ограничены макрорекордером и, иногда, методом «научного тыка». Когда первым способом решить задачу невозможно, а второй не помогает, я вынужден обращаться за помощью. Поэтому я очень прошу Вас каждую строку макроса расписать, чтобы понимать как он работает? Например:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) ‘ строка для контроля изменений на рабочем листе: ‘ Private Sub (делает то-то) Worksheet_Change (следит за изменениями) (ByVal Target As Excel.Range) (отвечает за то-то)

И дальше в том же духе. Для наглядности: есть макрос

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Dim a a = Array(«$P$11», «$P$13», «$P$15», «$P$17», «$P$19», «$P$21», «$P$23», «$P$25», «$P$26») For i = 0 To UBound(a) If Target.Address Like «*» & a(i) & «» Then With Target Application.EnableEvents = False .Offset(, -2) = .Offset(, -2) + .Value .Offset(, -4) = .Offset(, -4) + .Value Application.EnableEvents = True End With Exit For End If Next End Sub

он работает для суммирования нарастающим итогом в ячейках столбцов L и N значений, вводимых в ячейки столбца P. Сейчас требования изменились и мне нужно, чтобы сумма нарастающим итогом считалась еще и в ячейках столбцов S и U для значений, вводимых в ячейки столбца W. Как мне реализовать желаемое? Спасибо

Ссылка

Алексей Александрров

12.03.2015 14:39:14

Спасибо!!! Первый раз сегодня попробовал работу с макросом и сразу удача!!! Особенно пост от 14 февраля 2015 года. Именно то что нужно… Спасибо огромное!!! Ссылка

Сергей Степанцов

18.05.2015 14:20:29

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

Василий

29.07.2015 17:26:52

Здравствуйте, пишу Вам в первые. Ни как не пойму где «исходный текст» Помогите реализовать такой вариант, надо в ячейку вложить все значения, по всем листам, где строка равняется значению ссылки на ячейку на отдельном листе. Может стоит разделить на файлы, а потом вводить макрос? Ссылка

Василий

31.07.2015 22:38:03

Попробую переформульровать: в пределах файла связи между листами надо находить значение на против связи, в другом столбце и складывать в указанную ячейку так просуммировать где одинаковые связи Ссылка

Вадим

02.08.2015 13:59:54

Николай, добрый день! Я не смог решить такую задачу, помогите, пожалуйста: в умной таблице в одной колонке содержаться числовые данные, которые постоянно обновляются, а в другой колонке, имеющей процентный формат, необходимо реализовать отображение нарастающего итога. При этом этот нарастающий итог должен сам определять минимальное значение в исходном столбце вне зависимости от сортировки этого столбца. Если есть решение попроще в виде какой-нибудь формулы, было бы здорово его применить. С макросами не дружу, поскольку являюсь простым пользователем. Если без макроса никак, то ничего, освою. Задача того требует. Спасибо большое. Ссылка

Rash A

04.05.2016 18:00:32

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

Юрий Юрий

08.08.2016 12:23:25

Добрый день , подскажите , не как не могу разобраться , вставлю код что бы было понятнее , Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, Range(«T7:T69:W7:W69″)) Is Nothing Then If IsNumeric(Target.Value) Then Application.EnableEvents = False Target.Offset(0, 1).Value = Target.Offset(0, 1).Value + Target.Value Application.EnableEvents = True End If End If End Sub Вот такая петрушка получилась , работает если цифры водить в ручную , но в данных ячейках T7:T69:W7:W69» , они обновляются по формуле с других формула простая =G2 . И когда обновляются они то макрос не складывает данные числа , если нажать на ячейку и потом энтер , после этого складывает , что можно и нужно подправить в данном коде. Ссылка

Александр

30.09.2016 16:34:13

Николай, добрый день, а если накапливающийся столбик слева, Необходимо строчку Target.Offset(0, -2).Value = Target.Offset(0, -2) исправить на Target.Offset(0, -2).Value = Target.Offset(0, -2). И как быть если в прибавляемой ячейке данные это результат формулы Ссылка

Владимир кузнецов

24.11.2016 13:15:15

Николай, добрый день! Подскажите как реализовать макрос. Необходимо только на текущем листе где 1000 строк (примерно) при нажатии на кнопку макроса Все значения ячеек F добавить к значениям ячеек E через «; » (точка с запятой и пробел) Я пробовал как описано в посте выше у меня при начале работы над макросом ругается на строку Target.Offset(0, 3).Value = Target.Offset(0, 3).Value & Target.Value Подскажите как реализовать макрос!? Ссылка

Максим

28.03.2017 10:58:52

Добрый день Николай! Спасибо большое за ваш труд! Ссылка

Руслан Суняев

07.04.2017 08:39:29

Добрый день. А как можно перенести этот скрипт в Google Docs Excel? Или как данный функционал можно реализовать ? Нигде ничего не могу найти. При загрузке Exel документа макрос не переносится. Ссылка

Diredev

27.02.2018 14:59:26

Здравствуйте! Есть табличка в столбец А вводятся числа, а в столбце В они суммируются, так, что при вводе каждого нового в А в В отображается накопительный итог: Private Sub Worksheet_Change(ByVal Target As Excel.Range) With Target If .Column = 1 Then If IsNumeric(.Value) Then Application.EnableEvents = False .Offset(0, 1).Value = .Offset(0, 1).Value + .Value Application.EnableEvents = True End If End If End With End Sub Возможно ли так, что бы в столбце А в каждой ячейке тоже суммировались вводимые числа Ссылка

wolfram

03.04.2018 04:34:03

Спасибо за решение. Но вот в чем проблема, нет накопления при смене числа, если число меняется через команду «СЛУЧМЕЖДУ». Если я делаю один пересчет с помощью клавиши F9. Хотя казалось бы должно увеличиваться, можете мне в этом помочь? Ссылка

qwe wqe

04.04.2018 14:37:34

Доброго дня , прошу прощения за беспокойство , подскажите пожалуйста как сделать так что бы несколько таких столбцов появилось ? Примеру в а столбце данные (В) суммирует затем допустим С столбец данные а столбец (D) cуммирует ? Ссылка

Sergey

14.07.2018 21:45:12

Всем привет, долго искал похожую тему…. все что описано выше понятно, но у меня другая проблема. В приложении пример. У меня есть техника, статус D6 (Работа / Ремонт / Ожидание запчастей) который меняется на ежедневной основе. Подскажите как сделать накопительный свод, к примеру 14/07/2018 статус автомобиля Носом прицеп (Работа) — > данные автоматический вносятся в календарь (вкладка календарь) на 14/07/2018 (Работа). 15/07/2018 статус этого автомобиля (Ремонт) — > данные автоматический вносятся в календарь (вкладка календарь) на 15/07/2018 (Ремонт). При этом данные за 14/07/2017 сохранены на дату 14/07/2018. Спасибо за помощь. Приме Ссылка

Зоя Орехова

22.02.2019 14:43:43

Спасибо за решение вопроса. Ваш сайт очень помогает Ссылка

Алекс Пенкин

08.10.2019 16:28:02

Добрый день. Есть необходимость реализовать накопительные столбцы (с I5 по I644, и такой же диапазон у столбцов L, O). Информация вводится в столбец N, с ячейки N5 по N644. Как написать макрос? Помогите, очень надо! Ссылка

Денис Коселовский

30.11.2019 18:04:10

Николай, добрый вечер. Подскажите пожалуйста, что нужно поменять в указанном макросе, если накопительными ячейками являются С4, С5, С6……..и далее в столбик, а ячейками ввода данных Е4, Е5, Е6…и так же дальше в столбик. Спасибо. Ссылка

Чистая прибыль предприятия — это показатель, рассчитываемый по-разному

Чистая прибыль, формула расчета которой была описана в предыдущих разделах, может быть определена и иным способом. Например:

Стр. 2400 = стр. 2300 – стр. 2410

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

Такой алгоритм расчета чистой прибыли носит упрощенный характер и может использоваться, например, малыми предприятиями, которые вправе не применять ПБУ 18/02 «Учет расчетов по налогу на прибыль».

ВАЖНО! Критерии малых предприятий приведены в ФЗ от 24.07.2007 № 209-ФЗ «О развитии малого и среднего предпринимательства в Российской Федерации».

Подробнее о критериях для малых предприятий см. в этой статье.

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

Что в декларации?

Декларация по налогу на прибыль также составляется нарастающим итогом с начала года (п. 2.1 Порядка заполнения, утв. приказом ФНС России от 23.09.2019 № ММВ-7-3/[email protected]).

Важно! Декларацию за 2021 год нужно сдать по новой форме.

В ней вы отражаете доходы и расходы, накопленные с 1 января по дату отчета, и исчисленную из них сумму налога или авансового платежа.

Сумма налога (аванса) к уплате показывается за вычетом платежей предыдущего отчетного периода. В итоге в бюджет идет разница между текущим платежом и платежом предыдущего отчетного периода.

Если у вас есть доступ к КонсультантПлюс, проверьте правильно ли вы заполнили декларацию по налогу на прибыль. Если доступа нет, получите пробный онлайн-доступ к правовой системе бесплатно.

Рекомендации по составлению и пример заполнения декларации по налогу на прибыль ищите здесь.

Итоги

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

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

Добавить комментарий

Adblock
detector