我正在寻找一种解决方案(避免使用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
谢谢!!!
答案 0 :(得分:2)
因此,您需要正确设置行标题和列标题。
然后如果左上角的单元格放了这个公式:
=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 - 输入来确认,而不仅仅是输入。复制并填充数组的其余部分。
一次警告这需要时间来计算,可以通过将完整列引用限制为只有数据的那些来加速;在这个例子中,$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 确认。