【问题标题】:Move Columnar Data to Correlation Matrix将列数据移动到相关矩阵
【发布时间】:2015-12-07 15:50:49
【问题描述】:

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

谢谢!!!

【问题讨论】:

  • 那么你得到的数组是什么样子的?
  • 只是一个二维数组,就像一个相关矩阵
  • 这没有帮助。请展示您想要的结果。上面是一个二维数组。
  • 对你来说可能“只是”,但对我来说不是!
  • 数据是数字吗?

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


【解决方案1】:

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

那么如果左上角单元格放这个公式:

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

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

【讨论】:

    【解决方案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确认。

    【讨论】:

    • 是的,但我喜欢你的方法。 +1
    • @ScottCraner 我添加了一个“避免使用&”,我们的答案确实有所不同^^;
    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多