Google 工作表分层子类别扩展
Google Sheets Hierarchical Subcategory Expansion
问题陈述:
我有一个包含金额和类别的银行交易清单。
我将类别定义为可以包含任意数量 :
个字符的字符串。 :
字符表示子类别。例如 expenses Household
包含所有家庭开支, Household : Utilities
表示 household 中的子目录 Utiltities
。
我可以按类别分组并求和以获得特定子类别内的费用。例如,我可以获得 Household : Utilities
或 Household : Rent
的总花费。但是做一个 groupby 总和不会给我一个 Household
条目,它是公用事业和租金子类别的总和。
我希望能够以分层方式扩展这些子类别和父类别的总和,以便我有一个全面的列表。例如,如果我与 Household : Utilties : Water
进行了一笔 10 美元的交易,并与 Household : Utilities : Electricity
进行了一笔 15 美元的交易,我希望结果为
- 家庭...................... $25
- 家庭:公用事业 ............................... $25
- 家庭:公用事业:水…………$ 10
- 家庭:公用事业:电力.... $ 15
这是一个 link 示例电子表格。
https://docs.google.com/spreadsheets/d/14URPJ4fWl6id9z0-AI1hxNClo-10gotKdMSXnuehNVI/edit?usp=sharing
我可以使用 query() 和 groupby 获得类别与总和的简单摘要,但这不会扩展到父类别。
我可以在 python 中执行此操作,但我很难理解如何在电子表格中执行此操作。有人有什么想法吗?
尝试:
=ARRAYFORMULA(QUERY({A5:B;
SPLIT(FLATTEN(IFERROR(REGEXREPLACE(REGEXREPLACE(IF(
IFERROR(SPLIT(A5:A, ":"))="",,A5:A),
IFERROR(SPLIT(A5:A, ":")), ), " :$| ::.+|^:.+", ))&"×"&B5:B), "×")},
"select Col1,sum(Col2)
where Col2 is not null
group by Col1
order by Col1
label Col1'Category',sum(Col2)'Quantity'"))
问题陈述:
我有一个包含金额和类别的银行交易清单。
我将类别定义为可以包含任意数量 :
个字符的字符串。 :
字符表示子类别。例如 expenses Household
包含所有家庭开支, Household : Utilities
表示 household 中的子目录 Utiltities
。
我可以按类别分组并求和以获得特定子类别内的费用。例如,我可以获得 Household : Utilities
或 Household : Rent
的总花费。但是做一个 groupby 总和不会给我一个 Household
条目,它是公用事业和租金子类别的总和。
我希望能够以分层方式扩展这些子类别和父类别的总和,以便我有一个全面的列表。例如,如果我与 Household : Utilties : Water
进行了一笔 10 美元的交易,并与 Household : Utilities : Electricity
进行了一笔 15 美元的交易,我希望结果为
- 家庭...................... $25
- 家庭:公用事业 ............................... $25
- 家庭:公用事业:水…………$ 10
- 家庭:公用事业:电力.... $ 15
这是一个 link 示例电子表格。
https://docs.google.com/spreadsheets/d/14URPJ4fWl6id9z0-AI1hxNClo-10gotKdMSXnuehNVI/edit?usp=sharing
我可以使用 query() 和 groupby 获得类别与总和的简单摘要,但这不会扩展到父类别。
我可以在 python 中执行此操作,但我很难理解如何在电子表格中执行此操作。有人有什么想法吗?
尝试:
=ARRAYFORMULA(QUERY({A5:B;
SPLIT(FLATTEN(IFERROR(REGEXREPLACE(REGEXREPLACE(IF(
IFERROR(SPLIT(A5:A, ":"))="",,A5:A),
IFERROR(SPLIT(A5:A, ":")), ), " :$| ::.+|^:.+", ))&"×"&B5:B), "×")},
"select Col1,sum(Col2)
where Col2 is not null
group by Col1
order by Col1
label Col1'Category',sum(Col2)'Quantity'"))