Google Sheets – Split Row into Multiple Rows

formulasgoogle sheetsgoogle-sheets-arrayformulagoogle-sheets-query

I'm doing a spreadsheet for an event and I need to split a row into multiple rows. It's getting data from a form.

I need a script that can arrange the data like in the blue rectangle.

enter image description here

Best Answer

={Sheet1!A1:D1; 
 ARRAYFORMULA(TRIM(SPLIT(TRANSPOSE(SPLIT(TRIM(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IF(LEN({
 IF(LEN(Sheet1!B2:B); "♣"&Sheet1!B2:B&"♣"&Sheet1!C2:C&"♣"&Sheet1!D2:D;)\
 IF(LEN(Sheet1!E2:E); "♣"&Sheet1!E2:E&"♣"&Sheet1!F2:F&"♣"&Sheet1!G2:G;)\
 IF(LEN(Sheet1!H2:H); "♣"&Sheet1!H2:H&"♣"&Sheet1!I2:I&"♣"&Sheet1!J2:J;)}); "♦"&Sheet1!A2:A&{
 IF(LEN(Sheet1!B2:B); "♣"&Sheet1!B2:B&"♣"&Sheet1!C2:C&"♣"&Sheet1!D2:D;)\
 IF(LEN(Sheet1!E2:E); "♣"&Sheet1!E2:E&"♣"&Sheet1!F2:F&"♣"&Sheet1!G2:G;)\
 IF(LEN(Sheet1!H2:H); "♣"&Sheet1!H2:H&"♣"&Sheet1!I2:I&"♣"&Sheet1!J2:J;)};))
 ;;999^99));;999^99)); "♦")); "♣")))}

0

spreadsheet demo


={Sheet1!A1:H1; 
 ARRAYFORMULA(TRIM(SPLIT(TRANSPOSE(SPLIT(TRIM(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IF(LEN({
 IF(LEN(Sheet1!F2:F); "♣"&Sheet1!F2:F&"♣"&Sheet1!G2:G&"♣"&Sheet1!H2:H;)\
 IF(LEN(Sheet1!I2:I); "♣"&Sheet1!I2:I&"♣"&Sheet1!J2:J&"♣"&Sheet1!K2:K;)\
 IF(LEN(Sheet1!L2:L); "♣"&Sheet1!L2:L&"♣"&Sheet1!M2:M&"♣"&Sheet1!N2:N;)}); 
 "♦"&Sheet1!A2:A&"♣"&Sheet1!B2:B&"♣"&Sheet1!C2:C&"♣"&Sheet1!D2:D&"♣"&Sheet1!E2:E&{
 IF(LEN(Sheet1!F2:F); "♣"&Sheet1!F2:F&"♣"&Sheet1!G2:G&"♣"&Sheet1!H2:H;)\
 IF(LEN(Sheet1!I2:I); "♣"&Sheet1!I2:I&"♣"&Sheet1!J2:J&"♣"&Sheet1!K2:K;)\
 IF(LEN(Sheet1!L2:L); "♣"&Sheet1!L2:L&"♣"&Sheet1!M2:M&"♣"&Sheet1!N2:N;)};))
 ;;999^99));;999^99)); "♦")); "♣")))}

0

spreadsheet demo