将列数据移动到相关matrix

我正在寻找一个解决scheme(避免vba)来重组3个代表data1,data2和f(data1,data2)的列为2d数组。

数据如下:

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是string,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 

谢谢 !!!

所以你需要设置标题,正确的行和列标题。

在这里输入图像说明

那么如果左上angular的单元格把这个公式:

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

这是一个数组公式,需要用CtrlShiftEnter确认,而不是只input。 复制并填充数组的其余部分。

在这里输入图像说明

一个警告需要时间来计算,可以通过将整列引用限制为只有数据的引用来加快速度。 $C:$C在这个例子中是$C$1:$C$10

这样的事情?

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

这是一个数组公式,并且必须用Ctrl + Shift + Enter确认

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

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

这是一个数组公式,并且必须用Ctrl + Shift + Enter确认

在这里输入图像说明