将柱状数据移动到相关矩阵

时间:2015-12-07 15:50:50

标签: arrays excel multidimensional-array multiple-columns reorganize

我正在寻找一种解决方案(避免使用vba)将表示data1,data2和f(data1,data2)的3列重新组织成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是字符串,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

谢谢!!!

2 个答案:

答案 0 :(得分:2)

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

enter image description here

然后如果左上角的单元格放了这个公式:

=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))

这是一个数组公式,需要通过 Ctrl - Shift - 输入来确认,而不仅仅是输入。复制并填充数组的其余部分。

enter image description here

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

答案 1 :(得分:2)

类似的东西?

=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 确认。

enter image description here