Скрипт Google Sheets для учета - PullRequest
0 голосов
/ 05 апреля 2019

Я очень новичок в Google App Script, поэтому, пожалуйста, потерпите меня.Я пытаюсь создать пользовательские функции в Google Sheets для мониторинга ежемесячных и еженедельных продаж и расходов.Я могу сделать это с помощью встроенных формул, но каждый раз слишком сложно редактировать каждую ячейку. Вот как выглядит Google Sheet .

Для ежемесячного учета я использую приведенную ниже формулу (здесь это «Продажи»).Я использую сумму, кратную SUMIFS для расходов, поскольку существует несколько критериев («Расходные материалы», «Персонал» или «Операции»).

=ARRAYFORMULA(SUMIFS('2019'!$F$2:$F,text('2019'!$A$2:$A,"MMM"),A3,'2019'!$E$2:$E,"Sales"))

Для еженедельного учетаЯ использую другую формулу ниже.Здесь я суммирую все транзакции (здесь «Продажи») в заданном диапазоне дат (здесь от Mar 31 2019 до Apr 6 2019).Как и выше, я использую тот же принцип суммирования нескольких SUMIFS функций для «Расходов».

Продажи: =SUMIFS('2019'!$F$2:$F,'2019'!$A$2:$A,">="&date(2019,3,31),'2019'!$A$2:$A,"<="&date(2019,4,6),'2019'!$E$2:$E,"Sales")

Расходы: =SUMIFS('2019'!$F$2:$F,'2019'!$A$2:$A,">="&date(2019,3,31),'2019'!$A$2:$A,"<="&date(2019,4,6),'2019'!$E$2:$E,"Supplies")+SUMIFS('2019'!$F$2:$F,'2019'!$A$2:$A,">="&date(2019,3,31),'2019'!$A$2:$A,"<="&date(2019,4,6),'2019'!$E$2:$E,"Staff")+SUMIFS('2019'!$F$2:$F,'2019'!$A$2:$A,">="&date(2019,3,31),'2019'!$A$2:$A,"<="&date(2019,4,6),'2019'!$E$2:$E,"Operations")

Как я могу перевести формулы, показанные выше, в пользовательскую функцию?Я пытался написать что-то вроде этого:

enter image description here

1 Ответ

0 голосов
/ 10 апреля 2019

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

  • 2019Лист: Категория (столбец E): сделать это выпадающим списком, чтобы избежать опечаток и других ошибок.
  • 2019 Лист: столбец F - неясно, должны ли продажи быть обычно отрицательными(кредит) или расходы должны быть обычно положительными (дебет).В любом случае, сумма этого столбца будет согласована с чем-то на каком-то этапе, поэтому важен «знак» транзакций.Это также означает, что к формулам «Продажи» в сводном листе следует добавлять префикс с отрицательным знаком (чтобы они выглядели как положительное число).
  • Сводная ведомость за месяц - Префикс «минус», чтобы продажи отображались как положительные.=-ARRAYFORMULA(SUMIFS('2019'!$F$2:$F,text('2019'!$A$2:$A,"MMM"),A3,'2019'!$E$2:$E,"Sales"))
  • ** Сводная ведомость: ежемесячные расходы "" - Упростите формулу: просто сложите значения, которые НЕ являются "продажами" =ARRAYFORMULA(SUMIFS('2019'!$F$2:$F,text('2019'!$A$2:$A,"MMM"),A3,'2019'!$E$2:$E,"<>Sales"))
  • Сводная ведомость: нетто - =B3-C3 (Продажи за вычетом расходов)
  • Сводная ведомость: еженедельная отчетность - ежемесячные результаты всегда трудно сбалансировать с недельными результатами.Настолько, что многие компании используют ежеквартальный цикл продолжительностью 4/4/5 недель, чтобы учитывать изменения в количестве дней в месяце.В любом случае, формула, которую вы используете, ОЧЕНЬ сложна и подвержена ошибкам из-за опечаток (если ничего больше).Я предлагаю:
  • создать столбцы для соответствующих еженедельных дат «От» / «До» в еженедельном отчете и использовать арифметику дат для расчета соответствующих дат для каждой новой недели / месяца.
  • используйте формулу «Еженедельные продажи и расходы», которая ссылается на даты «С / К».Это делает ваши формулы полностью универсальными, позволяет копировать формулу с помощью обычных команд «Копировать / Вставить», и не требуют подробного редактирования формулы.
  • Подумайте, хотите ли вы, чтобы результаты за неделюсогласовать с ежемесячными результатами.Если вы это сделаете, то
    • отрегулируйте конец месяца, добавив или удалив дни к дате «Кому» на неделе # 4.Дата недели «С» для следующего месяца будет корректироваться автоматически, так же как и даты «С» / «До» для других недель в следующем месяце (ах).Это поможет устранить непреднамеренные ошибки, такие как включение 31 марта в неделю № 4 марта и неделю № 1 апреля.
    • Вы также можете добавить дополнительные три столбца справа от суммы общих продаж, общих расходов и чистой прибыли.на четыре недели.Эта цифра будет соответствовать месячному результату.

Упрощение формул

Раскрывая даты От и До, вы можете использовать этидаты в вашей формуле SumIFS.Например, мартовская неделя № 1:
Продажи: =-SUMIFS('2019'!$F$2:$F,'2019'!$A$2:$A,">="&G3,'2019'!$A$2:$A,"<="&H3,'2019'!$E$2:$E,"Sales") Расходы: =SUMIFS('2019'!$F$2:$F,'2019'!$A$2:$A,">="&G3,'2019'!$A$2:$A,"<="&H3,'2019'!$E$2:$E,"<>Sales")


Ежемесячные результаты
Monthly Results

Продажи: =-ARRAYFORMULA(SUMIFS('2019'!$F$2:$F,text('2019'!$A$2:$A,"MMM"),A3,'2019'!$E$2:$E,"Sales"))
Расходы: =ARRAYFORMULA(SUMIFS('2019'!$F$2:$F,text('2019'!$A$2:$A,"MMM"),A3,'2019'!$E$2:$E,"<>Sales"))
Нетто: =B3-C3


Результаты за неделю - извлечение
Weekly Results (Extract)

Результаты недели № 1
Продажи: =-SUMIFS('2019'!$F$2:$F,'2019'!$A$2:$A,">="&F3,'2019'!$A$2:$A,"<="&G3,'2019'!$E$2:$E,"Sales")
Расходы: =SUMIFS('2019'!$F$2:$F,'2019'!$A$2:$A,">="&F3,'2019'!$A$2:$A,"<="&G3,'2019'!$E$2:$E,"<>Sales")
Нетто: =H3-I3
Неделя № 2Результаты
Продажи: =-SUMIFS('2019'!$F$2:$F,'2019'!$A$2:$A,">="&K3,'2019'!$A$2:$A,"<="&L3,'2019'!$E$2:$E,"Sales")
Расходы: =SUMIFS('2019'!$F$2:$F,'2019'!$A$2:$A,">="&K3,'2019'!$A$2:$A,"<="&L3,'2019'!$E$2:$E,"<>Sales")
Нетто: =M3-N3


Дата Арифметика Full Weekly Results

Неделя № 1 марта От: Mar 1 2019 (единственная дата, вводимая вручную)
Неделя № 1 марта до: =F3+6
мартовская неделя № 2 с: =G3+1
мартовская неделя № 2 до: =K3+6
мартовская неделя № 4 до: =U3+6+3
Апрельская неделя № 1 От: =V3+1

...