给出一个三元组列表,我想得到一个如下的关系矩阵。
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或类似软件中完成?
答案 0 :(得分:1)
使用数组公式,可以生成一个数组,该数组将保留第三列的值或空白,具体取决于是否应包含该值。然后,您可以使用TEXTJOIN加入他们。 TEXTJOIN是Office 365中的新增功能;如果没有它,则首先需要以这种方式将其定义为一个函数(摘自MrExcel):
Function TEXTJOIN(Delimiter As String, IgnoreBlanks As Boolean, ParamArray Text() As Variant) As String Dim Item As Variant, V As Variant, Arr As Variant For Each Item In Text If VarType(Item) > 8191 Then For Each V In Item If Len(V) > 0 Or (Len(V) = 0 And Not IgnoreBlanks) Then TEXTJOIN = TEXTJOIN & Delimiter & V Next Else TEXTJOIN = TEXTJOIN & Delimiter & Item End If Next TEXTJOIN = Mid(TEXTJOIN, Len(Delimiter) + 1) End Function
现在回到问题所在,假设您的数据位于A1:C9中,而您想要的表位于F2:I5(第2行和F列包含索引),则需要在G3中使用以下公式: {1}}:
如果您不熟悉数组公式,请注意,您需要使用CTRL + SHIFT + ENTER进行输入。然后,您需要复制G3并将其粘贴到表格的其他单元格中(如果您尝试粘贴到包括从其复制数组公式的单元格的范围中,excel会对此表示挑剔,因此您可能必须这样做以几种糊状);并且该公式将使用适当的索引,因为$ F3和G $ 2是相对的。
答案 1 :(得分:0)