Sim, isso é possível apenas com uma fórmula de matriz. Não é exatamente simples, no entanto.
Matrizentra(Ctrl+Desloca+Enter)aseguintefórmulaemB2
ecopia-cola/fill-downacoluna:
{=TEXTJOIN(",",TRUE,LEFT(TRIM(MID(SUBSTITUTE(A2,$D$1&"%",REPT(" ",LEN(A2))),(ROW(INDEX(B:B,1):INDEX(B:B,LEN(A2)/2))-1)*LEN(A2)+1,LEN(A2))),IFERROR(FIND(",",TRIM(MID(SUBSTITUTE(","&A2&",",$D$1&"%",REPT(" ",LEN(A2))),(ROW(INDEX(B:B,1):INDEX(B:B,LEN(A2)/2))-1)*LEN(A2)+1,LEN(A2))))-1,0)))}
A fórmula prettificada é a seguinte:
{=
TEXTJOIN(
",",
TRUE,
LEFT(
TRIM(MID(SUBSTITUTE(A2,$D$1&"%",REPT(" ",LEN(A2))),(ROW(INDEX(B:B,1):INDEX(B:B,LEN(A2)/2))-1)*LEN(A2)+1,LEN(A2))),
IFERROR(
FIND(
",",
TRIM(MID(SUBSTITUTE(","&A2&",",$D$1&"%",REPT(" ",LEN(A2))),(ROW(INDEX(B:B,1):INDEX(B:B,LEN(A2)/2))-1)*LEN(A2)+1,LEN(A2)))
)-1,
0
)
)
)}
Explicação:
A fórmula funciona substituindo o nome do projeto mais o separador na cadeia de destino por uma longa seqüência de espaços e depois "dividindo" a cadeia em uma matriz de blocos, cada um começando com o número do projeto de um projeto correspondente . Essa é a saída das funções TRIM(…)
.
Em seguida, a parte mais à esquerda de cada bloco até, mas não incluindo, a primeira vírgula, ou seja, o número do projeto, é extraída.
Finalmente, os números do projeto são concatenados com a função TEXTJOIN()
.
A parte IFERROR
de IFERROR(FIND(",",TRIM(…))-1,0)
é necessária para remover os erros retornados quando a função FIND()
falha, com as sequências nulas resultantes sendo ignoradas por TEXTJOIN()
.
Notas:
- A fórmula prettificada realmente funciona se inserida.