每季度总计(含额外位)

每季度总计(含额外位)

我有一张像这样的桌子

日期 交易
2011 年 1 月 5 日 10万英镑
2011 年 7 月 6 日 20万英镑
2011 年 10 月 7 日 123,123英镑

依此类推,数据从 2011 年持续到 2024 年,约有 200 条,

我正在尝试弄清楚如何在下一栏中创建一个按季度求和的公式,例如

2011 年第二季度 - 30 万英镑 2011 年第三季度 - 123,123 英镑

并在另一列中显示该季度的最后日期,例如

2011 年第二季度为 2011 年 7 月 6 日

有时我每个月有多个条目,因此仅提取 3 月/6 月/9 月/12 月的最后一个日期对我来说不起作用

答案1

使用Excel Formulas它可以像下面的屏幕截图所示的那样完成:

在此处输入图片描述


• 单元格中使用的公式D5

=LET(
     _date, A2:A4,
     _transaction, B2:B4,
     _quarter, "Q"&ROUNDUP(MONTH(_date)/3,0)&" "&YEAR(_date),
     _output, DROP(GROUPBY(_quarter,HSTACK(_transaction,_date),HSTACK(SUM,MAX),,0),1),
     VSTACK({"Quarters","SumsPer Quarters","LastDateOf ThatQuarter"},_output))

  • 请注意,上述公式适用MS365于已启用的 Excel 版本Beta Channel
  • _date-->变量返回日期范围A2:A4
  • _transaction-->变量返回交易范围B2:B4
  • _quarter--> 变量返回每年的季度

"Q"&ROUNDUP(MONTH(_date)/3,0)&" "&YEAR(_date)

  • _output--> 变量返回所需的输出。

DROP(GROUPBY(_quarter,HSTACK(_transaction,_date),HSTACK(SUM,MAX),,0),1)

  • 使用时,VSTACK()它会创建一个标题以及_output

VSTACK({"Quarters","SumsPer Quarters","LastDateOf ThatQuarter"},_output)

这也可以使用和Power Query中的Windows Excel 2010+Excel 365 (Windows or Mac)

在此处输入图片描述


要使用 Power Query,请按照以下步骤操作:

  • 首先将源范围转换为表格并进行相应命名,在此示例中,我将其命名为Transactiontbl

  • Data接下来,从Tab --> Get & Transform Data--> Get Data--> From Other Sources-->打开一个空白查询Blank Query

  • 上面的命令可以Power Query打开窗口,现在从HomeTab --> Advanced Editor--> 删除您看到的任何内容并粘贴以下内容M-Code,然后按Done

let
    Source = Excel.CurrentWorkbook(){[Name="Transactiontbl"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Transaction", Currency.Type}}),
    #"Inserted Quarter" = Table.AddColumn(#"Changed Type", "Quarter", each Date.QuarterOfYear([Date]), Int64.Type),
    #"Added Prefix" = Table.TransformColumns(#"Inserted Quarter", {{"Quarter", each "Q" & Text.From(_, "en-US"), type text}}),
    #"Inserted Year" = Table.AddColumn(#"Added Prefix", "Year", each Date.Year([Date]), Int64.Type),
    #"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Inserted Year", {{"Year", type text}}, "en-US"),{"Quarter", "Year"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Period"),
    #"Grouped Rows" = Table.Group(#"Merged Columns", {"Period"}, {{"SumsPer Quarter", each List.Sum([Transaction]), type nullable number}, {"LastDateOf ThatQuarter", each List.Max([Date]), type nullable date}})
in
    #"Grouped Rows"

在此处输入图片描述


  • 最后,将其导回Excel--> 单击Close & LoadClose & Load To--> 第一个单击的将创建一个New Sheet具有所需输出的,而后者将提示一个窗口询问您将结果放在何处。

不过,使用Pivot Table它也可以实现,但是需要一个辅助列。

在此处输入图片描述


  • 在相邻列中插入公式Transactions

="Q"&ROUNDUP(MONTH(H2)/3,0)&" "&YEAR(H2)

  • 选择数据中的任意单元格并点击ALT+ D+P打开Pivot Table向导。
  • 单击Wizard两次Next,然后单击Step 3NewSheet使用Existing Sheet所需的单元格引用来放置Pivot Table
  • Rows区域中保留 ,而在区域中保留& ,Quarters确保单击第一个的汇总选项为 ,而后者为。TransactionsDateValuesSUMMAX
  • 将布局更改为表格,并可以根据偏好关闭总计。

最后但同样重要的是,一些应该适用的基本方法Excel 2010

在此处输入图片描述


• 单元格中使用的公式J19

="Q"&ROUNDUP(MONTH(H19)/3,0)&" "&YEAR(H19)

• 单元格中使用的公式L19

=IFERROR(INDEX(Quarters,MATCH(0,COUNTIFS(L$18:L18,Quarters),0)),"")

• 单元格中使用的公式M19

=SUMIF(Quarters,L19,Transaction)

• 单元格中使用的公式N19

=MAX((L19=Quarters)*Date)

对于上述内容,我使用了已定义的命名范围,可以使用Name Manager下面的内容来命名Formulas Tab


笔记:请确保根据您的要求更改单元格引用或范围。下载文件 -->这里

相关内容