У меня есть таблица в виде матрицы в Excel, где B1:Z1 - заголовки столбцов, а A2:A99 - заголовки строк. Я хотел бы преобразовать эту таблицу в таблицу из 3 столбцов (заголовок столбца, заголовок строки, значение ячейки). Не имеет значения, в каком порядке находится новая таблица.
A B C D A B C A B C
1 H1 H2 H3 1 H1 R1 V1 1 H1 R1 V1
2 R1 V1 V2 V3 => 2 H1 R2 V4 or 2 H2 R1 V2
3 R2 V4 V5 V6 3 H1 R3 V7 3 H3 R1 V3
4 R3 V7 V8 V9 4 H2 R1 V2 4 H1 R2 V4
5 H2 R2 V5 5 H2 R2 V5
6 H2 R3 V8 6 H3 R2 V6
7 H3 R1 V3 7 H1 R3 V7
8 H3 R2 V6 8 H2 R3 V8
9 H3 R3 V9 9 H3 R3 V8
Я играл с функцией OFFSET, чтобы создать весь стол, но я чувствую, что требуется комбинация TRANSPOSE и V/HLOOKUP.
Спасибо
РЕДАКТИРОВАТЬ
Мне удалось придумать правильные формулы. Если данные в Sheet1, как в моем примере выше, формулы идут в Sheet2:
[A1] =IF(ROW() <= COUNTA(Sheet1!$B$1:$Z$1)*COUNTA(Sheet1!$A$2:$A$99), OFFSET(Sheet1!$A$1,0,IF(MOD(ROW(),COUNTA(Sheet1!$B$1:$Z$1))=0,COUNTA(Sheet1!$B$1:$Z$1),MOD(ROW(),COUNTA(Sheet1!$B$1:$Z$1)))),"")
[B1] =IF(ROW() <= COUNTA(Sheet1!$B$1:$Z$1)*COUNTA(Sheet1!$A$2:$A$99),OFFSET(Sheet1!$A$1,IF(MOD(ROW(),COUNTA(Sheet1!$A$2:$A$99))=0,COUNTA(Sheet1!$A$2:$A$99),MOD(ROW(),COUNTA(Sheet1!$A$2:$A$99))),0),"")
[C1] =IF(ROW() <= COUNTA(Sheet1!$B$1:$Z$1)*COUNTA(Sheet1!$A$2:$A$99),OFFSET(Sheet1!$A$1,IF(MOD(ROW(),COUNTA(Sheet1!$A$2:$A$99))=0,COUNTA(Sheet1!$A$2:$A$99),MOD(ROW(),COUNTA(Sheet1!$A$2:$A$99))),IF(MOD(ROW(),COUNTA(Sheet1!$B$1:$Z$1))=0,COUNTA(Sheet1!$B$1:$Z$1),MOD(ROW(),COUNTA(Sheet1!$B$1:$Z$1)))),"")
Формулы ограничены значениями B1:Z1 для заголовков и A2:A99 для строк (при необходимости их можно увеличить до максимальных значений). Формула COUNTA () возвращает количество ячеек, которые действительно имеют значения, что ограничивает число строк, возвращаемых заголовками * строками. В противном случае формулы могли бы продолжаться бесконечно из-за функции MOD.