2016-11-08 30 views
-1

我有一个矩阵如下图所示,匹配的行和列,以获得来自同一行的值 - 矩阵

A B C D E F 
A 0 12 13 14 15 16 
B 12 0 12 15 15 18 
C 11 11 0 12 12 15 
D 26 24 25 0 22 25 
E 87 86 82 12 0 23 
F 11 25 36 14 25 0 

现在我想的是,在下面的格式,

A A 0 
A B 12 
A C 13 
A D 14 
A E 15 
A F 16 
B A 12 
B B 0 
B C 12 so on. 

哪有我通过公式在excel中存档。

+0

它总是6x6吗? – atclaus

+1

查找[UnPivot](http:// stackoverflow。com/questions/20541905/convert-matrix-to-3-column-table-reverse-pivot-unpivot-flatten-normal) –

+0

或http://superuser.com/questions/78439/is-it-possible-to- unsivot-or-reverse-pivot-in-excel –

回答

0

假设你的数据是固定的宽度(这里是6)并存在于A-F列中。在J1-L1中输入以下公式并填充。它使用偏移量方法并查看行的分数,其余部分或整数通过mod函数(列)确定行(整数)或余数的步数。

=OFFSET($A$1,ROUNDDOWN((ROW(J1)-ROW($J$1))/6,0)+1,0) =OFFSET($A$1,0,MOD((ROW(K1)-ROW($J$1)),6)+1) =OFFSET($A$1,ROUNDDOWN((ROW(L1)-ROW($J$1))/6,0)+1,MOD((ROW(K1)-ROW($J$1)),6)+1)

+0

FWIW:OFFSET是一个易失性函数,通常可以用INDEX函数替换以避免波动。 –

+0

嘿@ScottCraner由挥发性来表示他们是如何/何时重新计算的?所以OFFSET重新计算不管什么样的单元格被编辑,但INDEX只有在它使用的单元格之一发生变化时才会执行。 – atclaus

+0

是的OFFSET,INDIRECT和其他一些人将重新计算每次Excel重新计算,无论基础数据是否变化。如果谨慎使用,那不会有所作为,但可以大量使用。如上所述,INDEX不易变化,几乎可以一直用于代替OFFSET。 –

1

如上所述Offset是因为它总是会计算只要Excel如果基础数据已经改变或不计算无论可变函数。

指数是不挥发:

在A10:

=INDEX($A$2:$A$7,INT((ROW(1:1)-1)/ROWS($A$2:$A$7))+1) 

在B10:

=INDEX($B$1:$G$1,MOD((ROW(1:1)-1),COLUMNS($B$1:$G$1))+1) 

在C10:

=INDEX(A:G,MATCH(A10,$A:$A,0),MATCH(B10,$1:$1,0)) 

然后复制下来

enter image description here

+0

大声笑,@斯科特,你总是设法让我做:) - 伟大的答案! –

0

我希望我能理解你的问题。但是,假设你有你的矩阵板的左上角开始,你会:

正在下降: “A”细胞A2,“B”,在细胞B2

要跨: “A” 中的细胞B1, “B” 在细胞C1

数据: 你的第一值在细胞(对应于A,A)

因此,现在你有例如,在单元格A10你想要的行字母,并在单元格A11你想要的列字母。因此,您可以用下面的公式得到你想要的结果:

=INDEX($B$2:$G$7,MATCH(A10,$A$2:$A$7,0),MATCH(B10,$B$1:$G$1,0)) 

基本上,使用阵列上的INDEX()功能和行所需的行号和列匹配所需列字母。

希望是有道理的。