如何在 Excel 中的单个公式中模拟数据透视表然后应用文本连接?

如何在 Excel 中的单个公式中模拟数据透视表然后应用文本连接?

我有一张包含多个值和类别的表格,我想计算每个类别的总和,然后创建一行来显示每个类别及其总值。我尝试将 unique 与sumifand组合,textjoin但无法正常工作。

以下是我所追求的。

例如说我有表FRUIT_SALES

水果种类 卖方 售出数量
香蕉 新鲜杂货店 40
香蕉 大卖家 20
香蕉 农场摊位 50
苹果 榨汁机 400
苹果 农场摊位 10

我想使用单一公式生成一个按水果汇总的表格。

例如。

水果种类 售出数量
苹果 410
香蕉 110

我使用唯一列表列出水果类型,并求和来计算销售数量,但我希望在一个公式中实现这一点,以便我可以使用文本连接将其转换为下面的文本。

“苹果 (410)、香蕉 (110)”

我的最终公式将包括另一个参数,但如果我可以从 FRUIT_SALES 获取到“苹果 410”、“香蕉 (110)”,它将为我提供我所需的基础。

答案1

您可以使用该LET函数来执行此操作:

=LET(fruits, UNIQUE(FRUIT_SALES[Fruit Type]), sales, SUMIFS(FRUIT_SALES[No. Sold], FRUIT_SALES[Fruit Type], fruits), TEXTJOIN(", ", TRUE, fruits & " (" & sales & ")"))

在此处输入图片描述

fruits表示水果列中的所有可能值。通过将其传递给 的第三个参数SUMIFS,您可以创建一个与数组大小相同的数组fruit,其中包含每种水果的总和。

该公式fruit & sales只是将水果数组的第 n 个值与销售数组的第 n 个值连接起来。这将创建另一个相同大小的数组。

剩下的只是使用TEXTJOIN这个连接数组并添加一些格式的问题。

如果您想要进一步定制:

  • 将函数SORT或添加FILTERfruits变量,以便对水果列表进行排序或过滤(例如,如果您想按客户过滤)。
  • 使用该函数TEXT格式化sales值。它对于处理小数或显示千位分隔符很有用。您还可以ROUND在前面添加一个SUMIFS以删除小数。

以下是该FILTER函数的一个示例:

=LET(fruits, UNIQUE(FILTER(FRUIT_SALES[Fruit Type], FRUIT_SALES[Seller]=$B$11)), sales, SUMIFS(FRUIT_SALES[No. Sold],FRUIT_SALES[Fruit Type], fruits, FRUIT_SALES[Seller],$B$11), TEXTJOIN(", ", TRUE, fruits & " ("&sales&")"))

在此处输入图片描述

要生成中间摘要表,可以使用以下函数:

=LET(fruits, UNIQUE(FRUIT_SALES[Fruit Type]), sales, SUMIFS(FRUIT_SALES[No. Sold],FRUIT_SALES[Fruit Type], fruits), HSTACK(VSTACK("Fruit Type", fruits), VSTACK("Sales", sales)))

在此处输入图片描述

相关内容