Eu ofereço duas versões, dependendo se as células em branco devem ser mantidas. A ideia básica é a mesma:
- Escolha um personagem que não esteja contido na sua tabela (por exemplo, um caractere Unicode exótico acessível via
CHAR
).
- Use-o no
JOIN
comando para cada uma das três colunas.
- Concatene os resultados, adicionando o caractere no meio.
SPLIT
a sequência concatenada pelo mesmo caractere.
TRANSPOSE
o resultado.
Por exemplo:
=TRANSPOSE( SPLIT( JOIN(CHAR(57344),A1:A) &CHAR(57344)& JOIN(CHAR(57344),B1:B) &CHAR(57344)& JOIN(CHAR(57344),C1:C), CHAR(57344) ) )
onde por se juntar / divisão, eu peguei o personagem CHAR(57344)
, que é designado para uso privado e, portanto, não deve estar presente em qualquer entrada válida.
A fórmula acima remove entradas em branco , porque é isso que SPLIT
faz. Isso pode ser conveniente se seus dados não tiverem espaços em branco: poupa o trabalho de rastrear onde está a última linha dos dados. Mas outras vezes, os espaços em branco devem ser preservados.
Para preservar espaços em branco, sigo a resposta de Jacob Jan Tuinstra, exceto que usei outro Unicode de uso privado em vez de espaço (quem sabe, talvez você tenha algumas células que contêm apenas um espaço e deseja mantê-las). Isso envolve duas etapas extras: depois de juntar tudo como antes, eu uso SUBSTITUTE
para substituir CHAR(57344)
por CHAR(57344)&CHAR(57345)
, depois divido como antes e substituo CHAR(57345)
por string vazia.
=TRANSPOSE( ARRAYFORMULA(SUBSTITUTE( SPLIT( SUBSTITUTE(...joins... , CHAR(57344),CHAR(57344)&CHAR(57345)), CHAR(57344) ), CHAR(57345), "")))
O resultado completo é semelhante a este (observe que agora eu especifico onde está a última linha de dados):
=TRANSPOSE( ARRAYFORMULA(SUBSTITUTE( SPLIT( SUBSTITUTE(JOIN(CHAR(57344),A1:A9) &CHAR(57344)& JOIN(CHAR(57344),B1:B9) &CHAR(57344)& JOIN(CHAR(57344),C1:C9), CHAR(57344),CHAR(57344)&CHAR(57345)), CHAR(57344) ), CHAR(57345), "" )))
Mais uma ressalva: as seqüências de caracteres no Planilhas Google não podem exceder 50000 caracteres. Se seus dados forem muito grandes para que a abordagem baseada em string funcione, use um script ( este é um bom lugar para começar).