在Excel中创build逗号分隔的值(使用数据透视表)?

有没有办法在Excel中生成逗号分隔值(最佳使用数据透视表)? 考虑以下数据:

 对象颜色
 foo红
 foo蓝色
酒吧红色
酒吧蓝色
酒吧绿色
巴兹黄色 

我想要得到如下表格:

 颜色对象数
 foo 2红色,蓝色
酒吧3红色,蓝色,绿色
巴兹1黄色 

这可能在Excel中吗? 数据来自SQL查询,所以我可以用recursionCTE编写一个UDF来计算,但是这是针对一个特定查询的,我想要一个快速又脏的方法来获取非规格化的数据。 最后,这可能需要更长的时间才能写UDF,但是…

这是一个更简单的答案,从这个超级用户的答案 (HT指向@yioann指出来和@ F106dart为原件):

假设数据在列A(类别)和B(值)中:

  1. 创build一个新的列(C),并将其命名为“值”。 使用此公式,从单元格C2开始,一直向下复制: =IF(A2=A1, C1&","&B2, B2)
  2. 创build第二个新列(D),并将其命名为“计数”。 使用此公式,从单元格D2开始,一直向下复制: =IF(A2=A1, D1+1, 1)
  3. 创build第三个新列(E),并将其命名为“Last Line?”。 使用这个公式,从单元格E2开始,一直向下复制: =A2<>A3

您现在只能隐藏B列(值)和过滤列E(最后一行?)为TRUE值。

综上所述:

  ABCDE +--------- ----- ----------------------- ------------------- ---------- 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模块 – 我不build议。

但是,MS Access中的任务更简单 – 通常与Excel捆绑在一起。 微软使得连接Access和Excel的“容易”,并使用前者在后者上运行查询。
所以,给出的电子表格单元格如下所述:

  1. 为了获得最佳效果,请按ObjectColorsorting。

  2. 确保电子表格已保存。

  3. 打开MS Access。

  4. select文件 – >打开Ctrl O

  5. 在“ 文件types”下 ,select“ Microsoft Excel”

  6. 导航到并select您现有的电子表格。

  7. select包含您的表的工作表或命名范围。

  8. 为链接表命名MyPivot

  9. 打开Visual Basic编辑器… 工具 – >macros – > Visual Basic编辑器Alt F11

  10. 插入一个模块并粘贴在这个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 

  11. 保存该项目并closuresVB编辑器

  12. 查询下 ,在devise视图中创build一个新的查询。

  13. 切换到SQL视图

  14. 粘贴在这个SQL中:

     SELECT Object, COUNT (Color) AS [Count of Color], LAST (Concat (Object, Color)) AS [List 'O Colors] FROM MyPivot GROUP BY Object 

  15. 运行查询(按红色感叹号或只select数据表视图 )。

  16. Voilà,在15个简单的步骤完成! ;)
    结果:

     Object Count of Color List 'O Colors bar 3 Blue, Green, Red baz 1 Yellow foo 2 Blue, Red