如何在Excel中创建关系矩阵

时间:2019-01-17 09:05:23

标签: excel powerbi enterprise-architecture

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

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或类似软件中完成?

2 个答案:

答案 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}}:

enter image description here

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

答案 1 :(得分:0)

也许您会考虑使用加载项

按照本指南获取this tool

然后您可以立即使用它:)

This guide很有帮助