【问题标题】:How can I create a relationship matrix in Excel如何在 Excel 中创建关系矩阵
【发布时间】:2019-01-17 09:05:23
【问题描述】:

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

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 或类似工具中完成吗?

【问题讨论】:

标签: excel powerbi enterprise-architecture


【解决方案1】:

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

Function TEXTJOIN(Delimiter As String, IgnoreBlanks As Boolean, ParamArray Text() As Variant) As String
  暗淡项目作为变体,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 中使用这个公式:@ 987654324@:

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

【讨论】:

  • 看起来很好,但我很挣扎。我输入的公式没有大括号,对吧?当 CTRL-SHIFT-ENTER 时,它不被识别为公式,光标在逗号分隔符处显示错误...
  • 对不起,我只在 excel 2010 中使用 texjoin 作为 UDF 进行了测试,如上所述。但是,我忘记考虑到我的语言环境可能不同,并使用 ; 作为参数分隔符,而您可能需要逗号。你可以这样测试吗?如果效果更好,我会相应地编辑答案。
  • 太棒了!那是(我的)问题。总是觉得奇怪的是 excel 公式和 vb 代码是本地化的 :-)
  • 刚刚将其应用于我的实际问题:超级有用且非常简单!谢谢!
【解决方案2】:

也许你会考虑使用插件

按照本指南获取this tool

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

This guide 很有帮助

【讨论】:

  • 但这仅适用于数字数据,不是吗?我需要单元格中的定性数据(字符串,或者更确切地说是字符串列表)。
  • @Bastl tbh 我没有测试过,所以我不知道。你测试了吗?我想保留这个答案,但我要补充一点,只有当你有这个答案时,它才适用于数字
猜你喜欢
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
相关资源
最近更新 更多