【问题标题】:How can I generate a matrix based on two columns from two tables?如何根据两个表中的两列生成矩阵?
【发布时间】:2018-03-09 09:06:27
【问题描述】:

我正在创建一个授权矩阵以分发给我的客户。我的 Excel 工作簿包含两个表:Applications 和 Permissions/Roles。

我想获取每个表的第一列并在另一个工作表上动态生成 X、Y 矩阵,我的客户可以在其中标记所需的应用程序/角色组合。

到目前为止,我已尝试使用数据透视表,但无法对其进行编辑。我想远离宏,因为这将提供给外部客户。

最后,我想得到一个动态生成的矩阵,如下所示:

Role 1 | Role 2 | Role 3 | Role 4 | ... | Role n |
App 1  |        |        |        |     |        |
App 2  |        |        |        |     |        |
App 3  |        |        |        |     |        |
App 4  |        |        |        |     |        |
...    |        |        |        |     |        |
App n  |        |        |        |     |        |

有什么想法吗?

【问题讨论】:

  • 您始终可以从外部工作簿运行宏来创建表。
  • 你打算如何处理结果?如果您打算使用客户输入的内容来驱动某些系统配置,那么将它们指向配置工具本身可能是有意义的,否则您将永远重新输入他们所做的更改。
  • 这个结果对我来说是一个起点,对他们来说也是一种持续的文档形式,用于填充工具并独立于工具审核他们自己的流程。

标签: excel matrix excel-formula pivot-table vba


【解决方案1】:

如果下面的图片是您要查找的,那么您可以使用下面的方法,然后将值复制并粘贴到您发送给客户的工作表上。

您需要手动创建唯一的应用列表。

在每个 App 旁边会有几个数组公式来提取相关的角色。

=IFERROR(INDEX($B$3:$C$14,SMALL(IF(($B$3:$B$14=$C17),ROW($B$3:$C$14)-2),ROW($1:$1)),2),"")

如果您的数据在 Excel 表格中,则公式更易于创建和阅读。

=IFERROR(INDEX(Table1,SMALL(IF((Table1[App Name]=$C16),ROW(Table1)-2),ROW($1:$1)),2),"")

这是一个数组公式,所以你需要使用Ctrl + Shift + Enter来提交公式。

公式可以自动填充,但您将在每个角色下获得相同的值。您需要将角色 2 下的 ROW($1:$1) 更改为 ROW($2:$2) 和角色 3 下的 ROW($3:$3) 等,以获取您认为需要的尽可能多的角色。记住每次更改后使用 Ctrl + Shift + Enter

然后只需填写,它将填充列表中每个应用程序的所有角色。

将副本另存为模板,并使用复制和粘贴作为值来删除所有可怕的公式,然后再将其发送给客户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多