有没有办法在 Excel 中生成逗号分隔的值(最好使用数据透视表)?考虑以下数据:
对象颜色 富红 富蓝 酒吧红 酒吧蓝色 酒吧绿色 巴兹黄色
我想要一张如下表:
颜色颜色的对象计数 foo 2 红蓝 栏 3 红、蓝、绿 baz 1 黄色
这在 Excel 中可行吗?数据来自 SQL 查询,因此我可以编写一个带有递归 CTE 的 UDF 来计算,但这是针对单个 ad-hoc 查询的,我想要一种快速而简单的方法来获取非规范化数据。最后,发布这个可能比编写 UDF 花费更长的时间,但是......
有没有办法在 Excel 中生成逗号分隔的值(最好使用数据透视表)?考虑以下数据:
对象颜色 富红 富蓝 酒吧红 酒吧蓝色 酒吧绿色 巴兹黄色
我想要一张如下表:
颜色颜色的对象计数 foo 2 红蓝 栏 3 红、蓝、绿 baz 1 黄色
这在 Excel 中可行吗?数据来自 SQL 查询,因此我可以编写一个带有递归 CTE 的 UDF 来计算,但这是针对单个 ad-hoc 查询的,我想要一种快速而简单的方法来获取非规范化数据。最后,发布这个可能比编写 UDF 花费更长的时间,但是......
这是一个更简单的答案,改编自这个超级用户的答案(HT 到@yioann用于指出它,@F106dart用于原始):
假设数据在 A(类别)和 B(值)列中:
=IF(A2=A1, C1&","&B2, B2)=IF(A2=A1, D1+1, 1)=A2<>A3您现在可以隐藏 B 列(值)并过滤 E 列(最后一行?)仅用于TRUE值。
总之:
A B C D E
+--------- ----- ----------------------- ------------------- ----------
1| Category Value Values Count Last Line?
2| foo Red =IF(A2=A1,C1&","&B2,B2) =IF(A2=A1, D1+1, 1) =A2<>A3
3| foo Blue =IF(A3=A2,C2&","&B3,B3) =IF(A3=A2, D2+1, 1) =A3<>A2
etc.
是的,使用您正在运行的任何 RDBMS 的工具(MS SQL、MySQL 等)会更好。
这样的数据透视表在 Excel中是可能的。但是,只有当你编写一个繁琐的 VBA 模块时——我不推荐。
但是,MS Access 中的任务更简单——它通常与 Excel 捆绑在一起。Microsoft 使链接 Access 和 Excel 并使用前者在后者上运行查询变得“容易”。
因此,给定电子表格单元格:
为获得最佳结果,请按 对表格进行排序Object,然后按Color。
确保电子表格已保存。
打开 MS Access。
选择文件 --> 打开 ( CtrlO)
在文件类型下,选择Microsoft Excel
导航并选择您现有的电子表格。
选择包含您的表格的工作表或命名范围。
为链接表命名MyPivot。
打开 Visual Basic 编辑器...工具 --> 宏 --> Visual Basic 编辑器 ( AltF11)
插入一个模块并粘贴到这个 UDF 中:
'Concat returns a comma-seperated list of items
Public Function Concat (CategoryCol As String, _
ItemCol As String) As String
Static LastCategory As String
Static ItemList As String
If CategoryCol = LastCategory Then
ItemList = ItemList & ", " & ItemCol
Else
LastCategory = CategoryCol
ItemList = ItemCol
End If
Concat = ItemList
End Function
保存项目并关闭 VB 编辑器
在查询下,在设计视图中创建一个新查询。
切换到SQL 视图。
粘贴此 SQL:
SELECT
Object,
COUNT (Color) AS [Count of Color],
LAST (Concat (Object, Color)) AS [List 'O Colors]
FROM
MyPivot
GROUP BY
Object
运行查询(按红色感叹号或仅选择Datasheet View)。
瞧,只需 15 个简单步骤即可完成!;)
结果:
Object Count of Color List 'O Colors
bar 3 Blue, Green, Red
baz 1 Yellow
foo 2 Blue, Red
更简单的方法是在创建数据透视表时将数据添加到数据模型,然后使用“度量”(称为“颜色”),如下所示:
=CONCATENATEX(Table1,[Color],", ")
然后将“颜色”字段添加到枢轴的值部分。