2014-10-22 2 views
0

Данные моей электронной таблицы Google находятся в матричной форме с «дырками». См https://docs.google.com/spreadsheet/ccc?key=0Ati5T34RP9mEdGJfcUFzVDV4elZIbExkTGM4aktQT2c&usp=drive_web#gid=0Таблицы Google Преобразование матричных данных в реляционные строки

Я хотел бы создать еще один лист из приведенных выше данных, чтобы выглядеть как то, что я вручную сделал в https://docs.google.com/spreadsheet/ccc?key=0Ati5T34RP9mEdGJfcUFzVDV4elZIbExkTGM4aktQT2c&usp=drive_web#gid=3

Любые идеи?

+0

2 вопроса: 1. Для этого есть решение на основе формулы, но также может быть достигнуто с помощью скрипта Google Apps; у вас есть предпочтение не использовать ГАЗ? 2. Ваша электронная таблица находится в предыдущей версии Таблиц; можно ли перейти на новую версию? – AdamL

+0

Мне бы хотелось, чтобы мои руки были грязными с ГАЗОМ. И, конечно же, переход к новейшей версии, безусловно, жизнеспособен. – RudyF

ответ

0

Это должно работать на последней версии Таблиц:

=ArrayFormula(QUERY(VLOOKUP(HLOOKUP('Table Chart'!A2,'Table Chart'!A2:A,INT((ROW('Table Chart'!A2:A)-ROW('Table Chart'!A2))/COLUMNS('Table Chart'!B1:G1))+1,0),{'Table Chart'!A2:G,IF(ROW('Table Chart'!A2:A),'Table Chart'!B1:G1)},{SIGN(ROW('Table Chart'!A2:A)),MOD(ROW('Table Chart'!A2:A)-ROW('Table Chart'!A2),COLUMNS('Table Chart'!B1:G1))+{2,2+COLUMNS('Table Chart'!B1:G1)}},0),"select Col1, Col3, Col2 where Col2 is not null",0))


Для полноты картины, это будет работать на предыдущей версии, но даты преобразуются в текстовые строки; они могут быть преобразованы в числовые значения, но формула будет тогда станет еще больше:

=ArrayFormula(REGEXREPLACE(TRANSPOSE(SPLIT(CONCATENATE(REPT('Table Chart'!A2:A&CHAR(9)&'Table Chart'!B1:G1&CHAR(9)&TEXT('Table Chart'!B2:G,"d-MMM-yyyy")&CHAR(10),LEN('Table Chart'!B2:G)>0)),CHAR(10))),"^(.+?)\t(.+?)\t(.+)$",{"$1","$2","$3"}))


Google Apps Script даст вам «запустить один раз» решение, которое будет лучше (ИМО), чем формула, которая постоянно пересчитывается, хотя приведенные выше формулы могут быть вызваны, а затем просто преобразованы только в значения. Однако вам может потребоваться обновить их динамически.

Если вы хотите использовать GAS-решение, можете добавить тег google-apps-script, чтобы пригласить другие ответы.

+0

Большое спасибо. Решение «предыдущей версии» действительно работает, но я только что понял, что я не упомянул, что искал сортировку в столбце даты. Я должен быть в состоянии настроить решение «последней версии», чтобы это сделать, поэтому сейчас просто нужно преобразовать эту таблицу ..., которую, я думаю, могу сделать. – RudyF

+0

Да, вы можете просто добавить «заказ Col2» в предложение QUERY. – AdamL

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