我有一张像这样的桌子
日期 | 交易 |
---|---|
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 & Load或Close & Load To--> 第一个单击的将创建一个New Sheet具有所需输出的,而后者将提示一个窗口询问您将结果放在何处。
不过,使用Pivot Table
它也可以实现,但是需要一个辅助列。
- 在相邻列中插入公式
Transactions
="Q"&ROUNDUP(MONTH(H2)/3,0)&" "&YEAR(H2)
- 选择数据中的任意单元格并点击ALT+ D+P打开
Pivot Table
向导。 - 单击
Wizard
两次Next
,然后单击Step 3
或NewSheet
使用Existing Sheet
所需的单元格引用来放置Pivot Table
- 在
Rows
区域中保留 ,而在区域中保留& ,Quarters
确保单击第一个的汇总选项为 ,而后者为。Transactions
Date
Values
SUM
MAX
- 将布局更改为表格,并可以根据偏好关闭总计。
最后但同样重要的是,一些应该适用的基本方法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
笔记:请确保根据您的要求更改单元格引用或范围。下载文件 -->这里