Как преобразовать широкую таблицу в длинный формат с помощью формулы в Google Sheets? Внутри каждой группы значения должны быть отсортированы в алфавитном порядке (например, анна стоит первой в ожидаемом выводе). Пустые ячейки следует игнорировать.
Ожидаемый результат — это данные, обобщенные в длинном формате:
Вы можете попробовать эту формулу. Измените диапазон в функции Let, чтобы он соответствовал вашему набору данных (здесь он указан как A:D в зависимости от вопроса).
=let(range,A:D,toprow,row(index(range,1,1)),data,arrayformula(split(transpose(split(textjoin(",",true,tocol(BYCOL(range,LAMBDA(bc,vstack("|"&filter(bc,row(bc)=toprow),sort(filter(bc,row(bc)>toprow),1,1)))),1,1)),"|")),",")),wraprows(torow(BYROW(data,LAMBDA(k,makearray(1,(COUNTA(k)-1)*2,lambda(r,c,if (isodd(c),index(k,r,1),(index(k,r,(c/2)+1))))))),1),2))
Я использовал ваши отзывы, чтобы улучшить ответ. Теперь не должно зависеть от того, где находятся ваши данные в электронной таблице. Диапазон ячеек должен быть указан в начале функции let.
наконец, извините, есть ли простой способ сделать версию, в которой вывод сортируется по всему второму столбцу (вместо сортировки внутри группы)
Вы можете попробовать это =let(range,F5:Q17,toprow,row(index(range,1,1)),data,arrayformula(split(transpose(split(textjoin(",",true, tocol(BYCOL(range,LAMBDA(bc,vstack("|"&filter(bc,row(bc)=toprow),sort(filter(bc,row(bc)>toprow), 1,1)))),1,1))"|")),",")),query(wraprows(torow(BYROW(data,LAMBDA(k,makearray(1, (COUNTA(k)-1)*2,lambda(r,c,if (isodd(c),index(k,r,1),(index(k,r,(c/ 2)+1))))))),1),2),"выберите столбец1,столбец2 в порядке столбца2"))
Не забудьте отметить ответившим!
Есть ли способ сделать это, основываясь только на определенном диапазоне ячеек:
F5:Q17
. Я попробовал заменитьA:D