Digamos que eu tenha um resultado de fórmula que retorne this +10+5+1+40
como texto. Quero então somar esses números para obter o total.
O resultado pode ser qualquer número de valores, como +2+5
ou +10+5+7+1+8
.
Caso seja útil, o conjunto de dados original é algo assim S10_S5_S1_S40
ou isto E_E_S2_S5
. Retirei tudo, exceto os números próximos a S, que é o que quero adicionar.
Por último, estou postando sobre superusuário porque quero evitar o VBA, se puder.
Atualizar
Através desta fórmula:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D25,"E",""),"_",""),"S","=",1),"S","+")
Cheguei a isso =10+5+1+40
, onde D25 = S10_S5_S1_S40
... mas isso é realmente o mesmo que ter um +
na frente, eu acho!
Responder1
Supondo que você tenha apenas números de 1 ou 2 dígitos conforme seus exemplos, esta "fórmula de matriz" somará todos os números "S" de D25
=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",(0&SUBSTITUTE(MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,2),"_",""))+0))
confirmado comCTRL+SHIFT+ENTER
então se D25 contiver S10_S5_S1_S40
isso lhe dará o resultado 56
Responder2
Não existe uma fórmula de planilha que faça isso. Você pode usar a antiga função de macro EVALUATE() do Excel 4, mas ela só pode ser usada em um intervalo nomeado.
Portanto, se você tiver dados na coluna D e tiver a fórmula substituta na coluna E, por exemplo, selecione F25 e crie uma nova fórmula nomeada com o Gerenciador de Nomes. Dê a ele o nome de "EvaluateMe" e faça referência a
=EVALUATE(Sheet1!E25)
Então, entre
=EvaluateMe
na célula F25 e o resultado será exibido. Este intervalo nomeado usa uma referência relativa e se a célula ativa estava em F25 quando você o definiu, ele sempre tentará avaliar a célula diretamente à esquerda.
Responder3
Isso deriva da resposta “incrível” de Barry. A seguinte “fórmula de matriz”
=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,IFERROR(FIND("_",D25,ROW(INDIRECT("1:"&LEN(D25)))+1),LEN(D25)+1)-(ROW(INDIRECT("1:"&LEN(D25)))+1))+0))
(inserido com Ctrl++ Shift) Enteradicionará todos os números 'S' na célula D25
, independentemente do comprimento; portanto, se D25
contiver “S10_S5_S1_S240”, a fórmula acima fornecerá o resultado 256. Isso também lidará com números negativos: “S10_S5_S –1_S240” produzirá 254.
Eu não testei isso exaustivamente. Provavelmente encontrarei algo errado com isso na segunda de manhã. :)