用于会计的Google表格脚本

时间:2019-04-05 06:49:00

标签: javascript google-apps-script google-sheets accounting

我是Google App Script的新手,请多多包涵。我正在尝试在Google表格中创建自定义功能,以监控每月和每周的销售和费用。我可以使用内置公式来完成此操作,但是每次编辑每个单元格都非常耗时。 Here is what the Google Sheet looks like

对于月度结算,我使用以下公式(此处为“销售”)。由于存在多个条件(“供应”,“工作人员”或“运营”),因此我将支出SUMIFS的倍数加起来。

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

对于每周会计,我在下面使用另一个公式。在这里,我总结了给定日期范围(在Mar 31 2019Apr 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 :(得分:0)

我建议采用另一种策略,该策略应避免使用自定义函数,并允许您使用不带复杂参数的标准函数,并在此过程中实现更合理的数据布局。

  • 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周的“至”日期添加或删除天数来微调月末。下个月的第1周“开始”日期将自动调整,下个月其他几周的“开始” /“结束”日期也将自动调整。这将有助于消除意外错误,例如在3月第4周和4月第1周都包含3月31日。
    • 您也可以在右侧添加三列,以总计四个星期的总销售额,总费用和净利润。这个数字将与每月结果一致。

公式简化

通过披露“开始”和“结束”日期,您可以在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
Week#2Results
销售: =-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

3月第1周从: Mar 1 2019(唯一手动输入的日期)
3月第1周到: =F3+6
2月3月第2周发件人=G3+1
3月第2周到: =K3+6
3月第4周#=U3+6+3
4月第1周来自: =V3+1