有一组数据,数据大概有几万行,一列显示的是城市明细,一列显示的是商品明细。城市和商品都有重复的数据,现在需要统计有几个唯一的城市,每个城市销售的商品有几个(唯一)?这些商品的明细分别是什么?
需求:通过公式快速实现这些统计需求。
效果如下图1所示:

图 1
需求分析:
通过观察可以发现,这又是一个类似“表格变形”的需求,不过好在这个表格的基准就是一个标准的一维数据,用一维数据变形成二维数据的方法也有多种,最简单方便的就是用筛选函数加去重函数,配合文本连接函数就可以快速转二维了。
删除重复项:
城市这一列是明显有重复项目的,所以需要用到的函数就是删除重复项函数UNIUQE,这个函数一般用于二维数据其中一个维度的建模。
录入函数:
=UNIQUE(B3:B17)
函数释义:
对B3:B17区域进行重复项删除,保留唯一值;
效果如下图2所示:

图 2
筛选去重数据:
城市去重后,就需要找出城市对应的商品明细,这个需求本质上就是筛选城市。
录入函数:
=FILTER($C$3:$C$17,$B$3:$B$17=E3)
函数释义:
筛选B3:B17城市明细中等于E3上海的商品明细C3:C17,返回的结果就是城市对应商品明细。
效果如下图3所示:

图 3
筛选出对应城市商品明细后,发现商品这边有重复项目,所以需要再外面再嵌套一层删除重复项函数UNIQUE。
录入函数:
=UNIQUE(FILTER($C$3:$C$17,$B$3:$B$17=E3))
函数释义:
对商品明细中的重复项目进行删除,并保留唯一值;
效果如下图4所示:

图 4
判断商品数和明细:
商品明细删除重复项目后,就可以对商品进行统计数量了,再外嵌套一层ROWS就可以统计数量了,ROWS是判断数组有多少行,并返回行为数量,相当于统计了商品的数量:
录入函数:
=ROWS(UNIQUE(FILTER($C$3:$C$17,$B$3:$B$17=E3)))
函数释义:
对删除筛选后城市对应商品明细的数据判断行数。
效果如下图5所示:

图 5
最后一个需求就是城市对应的明细,这个需求是需求把多个单元格合并到一个单元格,所以需要用到文本合并函数TEXTJION。
录入函数:
=TEXTJOIN(“、”,,UNIQUE(FILTER($C$3:$C$17,$B$3:$B$17=E3)))
函数释义:
把删除筛选后城市对应商品明细进行合并,并用符号“、”相隔开。
效果如下图6所示:

图 6
