0

我正在寻找一种解决方案(避免使用 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

谢谢 !!!

4

2 回答 2

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--来确认ShiftEnter而不是直接输入。复制并填充数组的其余部分。

在此处输入图像描述

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

于 2015-12-07T16:23:01.683 回答
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

在此处输入图像描述

于 2015-12-07T16:24:23.207 回答