Это должно работать в последней версии Таблиц:
=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 предоставит вам решение «запустить один раз», которое будет лучше (IMO), чем формула, которая постоянно пересчитывает, хотя приведенные выше формулы могут быть вызваны, а затем просто преобразованы только в значения. Однако вам может потребоваться их динамическое обновление.
Если вам нужно решение GAS, возможно, добавьте тег google-apps-script
, чтобы предложить другие ответы.
person
AdamL
schedule
24.10.2014