3

给定一个三元组列表,我想得到一个关系矩阵,如下所示。

1 A X
1 A Y
1 B X             A   B   C
1 B Z         1  X,Y X,Z
2 A Z   ==>   2   Z   X   Y
2 B X         3   Y   Z
3 A Y
3 A Z
2 C Y

(如何)这可以在 Excel/VB/PowerBI 或类似中完成吗?

4

2 回答 2

1

使用数组公式,您可以生成一个数组,该数组将保存第三列的值或空白,具体取决于是否应包含该值。然后,您可以使用 TEXTJOIN 加入它们。TEXTJOIN 是 Office 365 中的新功能;如果你没有它,你首先需要以这种方式将它定义为一个函数(取自MrExcel):

函数 TEXTJOIN(分隔符作为字符串,IgnoreBlanks 作为布尔值,ParamArray 文本()作为变体)作为字符串
  暗淡项目作为变体,V 作为变体,Arr 作为变体
  对于文本中的每个项目
    如果 VarType(Item) > 8191 那么
      对于项目中的每个 V
        如果 Len(V) > 0 或 (Len(V) = 0 而不是 IgnoreBlanks) 那么 TEXTJOIN = TEXTJOIN & Delimiter & V
      下一个
    别的
      TEXTJOIN = TEXTJOIN & 分隔符 & 项目
    万一
  下一个
  TEXTJOIN = Mid(TEXTJOIN, Len(分隔符) + 1)
结束功能

现在回到你的问题,假设你的数据在 A1:C9 并且你想要的表在 F2:I5 (第 2 行和 F 列包含索引)你需要在 G3: 中使用这个公式{=TEXTJOIN(",";TRUE;IF($A$1:$A$9=$F3;IF($B$1:$B$9=G$2;$C$1:$C$9;"");""))}

在此处输入图像描述

如果您不熟悉数组公式,请注意您需要使用 CTRL+SHIFT+ENTER 输入。然后,您需要复制 G3 并将其粘贴到表格的其他单元格中(如果您尝试粘贴到包含您从中复制数组公式的单元格的范围内,则 Excel 会对此很挑剔,因此您可能必须这样做在几个糊状物中);并且公式将使用适当的索引,因为 $F3 和 G$2 是相对的。

于 2019-01-17T10:23:17.700 回答
0

也许您会考虑使用加载项

按照本指南获取此工具

然后你就可以开箱即用了:)

本指南很有帮助

于 2019-01-17T09:18:57.340 回答