2016-11-08 32 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()功能和行所需的行號和列匹配所需列字母。

希望是有道理的。