将列数据移动到相关矩阵

Move Columnar Data to Correlation Matrix

我正在寻找一种解决方案(避免 vba)将代表 data1、data2 和 f(data1,data2) 的 3 列重新组织到一个二维数组中。

数据如下:

X1  X2  Z_1_2
X1  X3  Z_1_3
X1  X4  Z_1_4
X1  X5  Z_1_5
X2  X3  Z_2_3
X2  X4  Z_2_4
X2  X5  Z_2_5
X3  X4  Z_3_4
X3  X5  Z_3_5
X4  X5  Z_4_5

编辑:我会提供更多细节...

X 是字符串,Z 是数字。

结果应该如下:

     X1     X2     X3     X4     X5
X1   1      Z_1_2  Z_1_3  Z_1_4  Z_1_5
X2   Z_1_2  1      Z_2_3  Z_2_4  Z_2_5
X3   Z_1_3  Z_2_3  1      Z_3_4  Z_3_5
X4   Z_1_4  Z_2_4  Z_3_4  1      Z_4_5
X5   Z_1_5  Z_2_5  Z_3_5  Z_4_5  1

谢谢!!!

因此您需要设置 headers,正确设置行和列 headers。

那么如果左上角的单元格输入这个公式:

=IFERROR(INDEX($C:$C,MATCH($G2&"|"&H,$A:$A&"|"&$B:$B,0)),IFERROR(INDEX($C:$C,MATCH(H&"|"&$G2,$A:$A&"|"&$B:$B,0)),1))

这是数组公式,需要用Ctrl-Shift-Enter[=31=确认] 而不是直接输入。复制并填充数组的其余部分。

一个警告这需要时间来计算,可以通过将完整的列引用限制为仅包含有数据的列来加快速度; $C:$C 在这种情况下将是 $C:$C.

类似的东西?

=IF(F=$E2,1,INDEX($C:$C,IFERROR(MATCH(F&"_"&$E2,$A:$A&"_"&$B:$B,),MATCH($E2&"_"&F,$A:$A&"_"&$B:$B,))))

This is an array formula and must be confirmed with Ctrl+Shift+Enter.

如果你担心 & 你可以这样避免它:

=IF(F=$E2,1,INDEX($C:$C,MAX(ROW(:)*((F=$A:$A)*($E2=$B:$B)+($E2=$A:$A)*(F=$B:$B)))))

This is an array formula and must be confirmed with Ctrl+Shift+Enter.