我想根据一堆发送/接收的消息在 Excel 中执行以下转换:
发件人A | 发件人B | 发件人C | 接收器A | 接收器B | 接收器C |
---|---|---|---|---|---|
0 | 1 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 0 | 0 |
接收器A | 接收器B | 接收器C | |
---|---|---|---|
发件人A | 0 | 0 | 0 |
发件人B | 1 | 0 | 2 |
发件人C | 0 | 1 | 0 |
我认为数据透视表会有所帮助,但到目前为止我遇到的两个限制是:
- 无法使用原始表中的列标题作为数据透视表中的行标签,只显示它们的值
- 无法跨行标签使用过滤器,因此每列仅显示一行
答案1
这对于使用 Office 365 的 MMULT 来说是完美的:
=MMULT(TRANSPOSE(A2:C5),D2:F5)
在旧版 Excel 中,您需要将其包装在 INDEX 中并向右/向下拖动:
=INDEX(MMULT(TRANSPOSE($A$2:$C$5),$D$2:$F$5),ROW(A1),COLUMN(A1))
我相信这需要输入ctrl+shift+enter
但我无法测试这一点。
或者使用 Office 365,包括标题:
=LET(sender,A1:C5,
receiver,D1:F5,
VSTACK(HSTACK("",
TAKE(receiver,1)),
HSTACK(TOCOL(TAKE(sender,1)),
MMULT(TRANSPOSE(DROP(sender,1)),DROP(receiver,1)))))
详细了解 MMULT这里