2016-11-08 3 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

Всегда ли 6х6? – 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- univot-or-reverse-pivot-in-excel –

ответ

0

Предполагая, что ваши данные фиксированы шириной (здесь 6) и существуют в столбцах A-F. Поместите следующие формулы в J1-L1 и заполните. Он использует метод смещения и смотрит на фракции строки, либо остаток, либо целое число, чтобы определять шаги для строк (целое число) или остаток через функцию мод (столбцы).

=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

как указано Смещение является летучей функцией в том, что он всегда будет вычислять всякий раз, когда 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) 

В С10:

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

Затем скопируйте

enter image description here

+0

LOL, @Scott, вы всегда удаляете меня :) - Отличный ответ! –

0

Я надеюсь, что я понимаю ваш вопрос. Но, если вы имели свою матрицу, начиная с левой верхней части листа, вы бы:

Going Down: «А» в ячейке A2, «B» в камере B2 и т.д.

Переход Через: "А" в камере B1, "B" в камере C1 и т.д.

данных: Вашего первого значения (соответствует A, A) в ячейке B2

Итак, теперь у вас есть, например, в ячейке A10 строчная буква, которую вы хотите, и в ячейке A11 нужное вам письмо. Таким образом, вы можете использовать следующую формулу, чтобы получить желаемый результат:

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

В принципе, с помощью функции INDEX() в массиве и соответствующие строки до нужной буквы строки и столбца до нужной буквы столбца.

Надеюсь, что имеет смысл.

Смежные вопросы