Para obter os números, se eles estiverem no começo da string, podemos usar isso:
=MID(A2,1,AGGREGATE(14,6,SEARCH("}}}",SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(A2)-LEN(SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"")))),1))
como nossa fórmula base, isto encontrará o fim do número e retornará como o fim da função MID ().
Há muita coisa acontecendo aqui:
SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(A2)-LEN(SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"")))
Como esta parte itera os números, ela substitui a última instância de cada número por }}}
.
O terceiro critério de SUBSTITUTO é a instância. Encontramos o número de instâncias com o LEN(A2)-LEN(SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},""))
. Itera os números e substitui cada um de cada vez por nada. Em seguida, ele encontra a diferença no tamanho da string original e da nova.
Portanto, no caso de A2, quando iterar para 2
, ele encontrará 2 e o substituto externo substituirá o último por }}}
. Este é apenas um detentor de espaço temporário.
A função Aggregate é uma função multifuncional. O 14 diz às funções que estamos usando a função Large()
. O 6
informa a função para ignorar erros. Isso é importante porque muitas das iterações não encontrarão nada e retornarão um erro.
Com o 1
no final, ele informa à função que queremos o maior retorno da função Pesquisar, que pesquisa os temporários }}}
que são colocados por meio da iteração na última instância de cada número.
Assim, o Aggregate retorna o número máximo encontrado. Qual nós passamos ao critério do comprimento na função do meio.
Então, agora encontramos o número na frente da string.
Assim, podemos multiplicar duas dessas juntas para obter a saída desejada (qualquer função matemática transformará a string retornada em um número):
=MID(A2,1,AGGREGATE(14,6,SEARCH("}}}",SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(A2)-LEN(SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"")))),1))*MID(B2,1,AGGREGATE(14,6,SEARCH("}}}",SUBSTITUTE(B2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(B2)-LEN(SUBSTITUTE(B2,{1,2,3,4,5,6,7,8,9,0},"")))),1))
UmaressalvaAfunçãoAggregatefoiintroduzidanoExcel2010.Podenãofuncionarcomversõesmaisantigas.
Sevocêtiverumaversãomaisantiga,precisaráusaressafórmulamaislonga:
=MID(A2,1,MAX(IF(ISNUMBER(SEARCH("}}}",SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(A2)-LEN(SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},""))))),SEARCH("}}}",SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(A2)-LEN(SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"")))))))*MID(B2,1,MAX(IF(ISNUMBER(SEARCH("}}}",SUBSTITUTE(B2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(B2)-LEN(SUBSTITUTE(B2,{1,2,3,4,5,6,7,8,9,0},""))))),SEARCH("}}}",SUBSTITUTE(B2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(B2)-LEN(SUBSTITUTE(B2,{1,2,3,4,5,6,7,8,9,0},"")))))))
Faz praticamente o mesmo que o acima, aceita que ele deve testar os erros antes de encontrar o max.