Complex Summing Values em uma célula

1

Digamos que eu tenha um resultado de fórmula que retorne esse +10+5+1+40 como texto. Eu quero então somar os números para obter o total.

O resultado pode ser qualquer número de valores, assim como +2+5 ou +10+5+7+1+8 .

Caso seja útil, o conjunto de dados original é algo parecido com este S10_S5_S1_S40 ou este E_E_S2_S5 . Eu tirei tudo, exceto os números ao lado de S, que é o que eu quero adicionar.

Por fim, estou postando no superusuário, pois quero evitar o VBA se puder.

Atualizar

Através desta fórmula:   =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D25,"E",""),"_",""),"S","=",1),"S","+")

Eu baixei para este =10+5+1+40 , onde D25 = S10_S5_S1_S40 ... mas isso é realmente o mesmo que ter um + na frente, eu acho!

    
por Scott Holtzman 28.02.2013 / 04:05

3 respostas

2

Supondo que você tenha apenas números de 1 ou 2 dígitos de acordo com seus exemplos, essa "fórmula de matriz" resumirá 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 com CTRL+SHIFT+ENTER

, se D25 contiver S10_S5_S1_S40 , isso dará o resultado 56

    
por 28.02.2013 / 13:59
3

Não existe uma fórmula de planilha que faça isso. Você pode usar a função de macro antiga do Excel 4, EVALUATE (), 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ê-lhe o nome "EvaluateMe" e deixe-o referir-se a

=EVALUATE(Sheet1!E25)

Em seguida, insira

=EvaluateMe 

na célula F25 e o resultado será exibido. Esse intervalo nomeado usa uma referência relativa e, se a célula ativa estava em F25 quando você a definiu, ela sempre tentará avaliar a célula diretamente à esquerda.

    
por 28.02.2013 / 05:12
0

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))

(introduzido com Ctrl + Desloc + Enter ) adicionará todos os números 'S' na célula D25 , independentemente do comprimento ; por isso, se D25 contiver “S10_S5_S1_S240”, a fórmula acima fornecerá o resultado 256. Isso também irá lidar com números negativos: “S10_S5_S – 1_S240” produzirá 254.

Eu não testei isso exaustivamente. Eu provavelmente vou encontrar algo errado com ele na segunda de manhã, eu mesmo. :)

    
por 09.03.2013 / 02:44