Em A1 eu tenho os valores: 15,50+10,00+30,50
Em A2 eu quero que retorne a soma desses números, ou seja: 56, alguém sabe como obter esse resultado sem usar VBA?
Desde já agradeço!
Não é só colocar um sinal de = na frente da expressão de A1? em A2 coloque =A1
Olá @Bianchini, avaliando sua necessidade, fazer isso através de fórmulas provavelmente será inviável.
##Solução 01##
Para resolver a questão sem o uso de macros, vou seguir o que o @Oliver colocou como solução, que é colocar o sinal de "="
no início.
Para isso, em B1 insira a seguinte fórmula =CONCATENAR("'=";A1)
, e em seguida arraste para quantas linhas desejar.
Seguindo como exemplo citado por você mesmo, em A1 contém 15,50+10,00+30,50+1098,25+0,13
Siga as etapas
- Em B1 insira a fórmula
=CONCATENAR("'=";A1)
- Copie as células e cole como TEXTO Na célula aparecerá da seguinte forma
'=15,50+10,00+30,50+1098,25+0,13
- Em Localizar e Substituir (Ctrl + H), no campo Localizar insira
'=
, no campo substituir insira=
em seguida clique em Substituir Todos
Após este procedimento, todas as células na Coluna B estarão com o resultado final da soma.
##Complemento - Demonstração como proceder ##
Etapa 01
Etapa 02
Etapa 03
##Solução 02##
Através de macro (Function ou Sub) *comentários de como funciona o procedimento na Sub
Function SomarTexto(Texto as String) as Double
Dim Caract, i as Long
Dim Soma as Double
Dim Check as String
Dim NewTexto as String
Caract = Len(Texto)
For i = 1 to Caract
Check = Mid(Texto, i, 1)
If Check <> "+" then
NewTexto = NewTexto & Mid(Texto, i, 1)
Else
Soma = Soma + cdbl(NewTexto)
NewTexto = ""
End If
Next i
Soma = Soma + cdbl(NewTexto)
SomarTexto = Soma
End Function
Sub SomarTexto2
Dim oDoc, oSheet as Object
Dim oldTexto, NewTexto, Check as String
Dim Caract, i as Long
Dim Soma as Double
rem Definição das variáveis de planilha
oDoc = ThisComponent
oSheet = oDoc.Sheets.getbyname("Planilha1")
rem Coleta a informação em A1
oldTexto = oSheet.getCellbyPosition(0, 0).string
rem identifica quantos caracteres possuí no texto
Caract = Len(oldTexto)
rem loop para separar cada caracter até encontrar "+", e depois somar
For i = 1 to Caract
Check = Mid(oldTexto, i, 1)
If Check <> "+" then
NewTexto = NewTexto & Mid(oldTexto, i, 1)
Else
Soma = Soma + cdbl(NewTexto)
NewTexto = ""
End If
Next i
rem soma o último número do texto
Soma = Soma + cdbl(NewTexto)
rem Insere o resultado na B1
oSheet.getCellbyPosition(0, 1).Value = Soma
End Sub
Olá, eu segui as etapas abaixo, por vc sugeridas porém no resultado final em B1 não aparece a soma dos valores e sim aparece o sinal de igual na frente de todos os valores contidos em A1
Em B1 insira a fórmula =CONCATENAR("’=";A1)
Copie as células e cole como TEXTO Na célula aparecerá da seguinte forma '=15,50+10,00+30,50+1098,25+0,13
Em Localizar e Substituir (Ctrl + H), no campo Localizar insira '=, no campo substituir insira = em seguida clique em Substituir Todos
Após este procedimento, todas as células na Coluna B estarão com o resultado final da soma.
@Biacnchini olhe no complemento da resposta as imagens de como deve ser feito o procedimento. Provavelmente esteja pulando alguma etapa
@Conras: Eu ia colocar a minha resposta em um comentário à tua, porque ela estava quase correta. Mas o espaço para comentários é limitado, então tive que colocá-la como Resposta mesmo. Não leve a mal, por favor.
Ola @Bianchini, os valores sempre terão 5 dígitos ( 4 números e vírgula ) e sempre serão 3 valores ?
Se SIM pode-se usar as funções DIREITA e ESQUERDA para separar os números e somar.
=SOMA(ESQUERDA(A1;5)*1+ESQUERDA(DIREITA(A1;11);5)*1+DIREITA(A1;5)*1)
Se NÃO de mais detalhes editando sua pergunta ou acrescentando Comentário abaixo.
Complemento
Fórmula para até 6 números ( exemplo: a+b+c+d+e+f )
=SEERRO(ESQUERDA(A1;LOCALIZAR("+";A1;1)-1)*1;A1)+SEERRO(SE(SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")="";DIREITA($A1;NÚM.CARACT($A1)-LOCALIZAR("+";A1;1))*1;DIREITA(ESQUERDA($A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")-1);SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")-LOCALIZAR("+";A1;1)-1)*1);0)+SEERRO(SE(F1="";DIREITA($A1;NÚM.CARACT($A1)-SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);""))*1;DIREITA(ESQUERDA($A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")-1);SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")-SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")-1)*1);0)+SEERRO(SE(SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);"")="";DIREITA($A1;NÚM.CARACT($A1)-SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);""))*1;DIREITA(ESQUERDA($A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);"")-1);SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);"")-SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")-1)*1);0)+SEERRO(SE(SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);"")+1);"")="";DIREITA($A1;NÚM.CARACT($A1)-SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);""))*1;DIREITA(ESQUERDA($A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);"")+1);"")-1);SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);"")+1);"")-SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);"")-1)*1);0)+SEERRO(SE(SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);"")+1);"")+1);"")="";DIREITA($A1;NÚM.CARACT($A1)-SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);"")+1);""))*1;DIREITA(ESQUERDA($A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);"")+1);"")+1);"")-1);SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);"")+1);"")+1);"")-SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;SEERRO(LOCALIZAR("+";$A1;LOCALIZAR("+";A1;1)+1);"")+1);"")+1);"")+1);"")-1)*1);0)
ATENÇÂO:: Para dar mais detalhes a sua pergunta, use na pergunta ou
abaixo. Não use Adicionar resposta para comentário. Grato.
Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha a esquerda da resposta, para finalizar a pergunta.
Olá. A resposta da sua pergunta é NÃO pois poderão ser quaisquer tipos de números, por exemplo: 15,50+10,00+30,50+1098,25+0,13. Nesse exemplo o resultado deverá retornar o valor 1154,38.
Obrigado!
Tem previsão de qual a quantidade de números podem estar em uma mesma célula ?
Até seis, vide complemento na Resposta acima.
Também pode separar os valores em colunas e usar a soma
Dados / Texto para colunas e Separado por [v]Outro +
Ola @Bianchini,
A resposta do @Conras está (quase) correta. Porém, ela parte do pressuposto de que o CALC interpretará as fórmulas em B como Textos. Ocorre que por motivo que desconheço isso nem sempre acontece da forma esperada, e o CALC os classifica como um intermediário entre texto e número. Então, para que dê certo sempre faça o seguinte:
- Na coluna B, em vez de =CONCATENAR( “’=” ; A1) digite =CONCATENAR( “=” ; A1 ; " ") (Aqui é um espaço) - Ou simplesmente ="= " & A1 (sinal de igual, aspas, sinal de igual, um espaço, aspas, o & e A1 : dá na mesma.
- Copie a fórmula para as outras linhas de B
- Selecione a coluna B e copie (CTRL + C) e Cole Especial para a coluna C (CTRL + SHIFT + V) apenas TEXTO
- Selecione toda a coluna C e vá em Localizar e Substituir. No campo Localizar coloque um espaço em branco (tecla espaço) e deixe o campo Substituir sem nada (em branco, nada, null)
- Clique em Substituir Tudo. Provavelmente surgirão na coluna C os resultados. Se não der, então faça agora a substituição do "= por = como o @Conras sugeriu. Mas agora o CALC saberá como lidar com as substituições.
Segue planilha teste onde esse efeito é constatado:
@Jedison Ambas as formas serão interpretadas como texto para o Calc, como também para o Office. Isso é uma característica da ferramenta. As células são calculadas a partir do momento em que ela sai do estado “ativo” (F2, duplo clic etc). Sempre que a célula conter letras, números e caracteres especiais, a ferramenta entenderá ela como TEXTO. A tarefa Localizar e Substituir executa a tarefa de recalculo ao alterar algum caractere contido nas células de pesquisa, por isso que as células ao receberem a alteração do '= ou simplesmente do = com espaço no fim, recebem o resultado da soma (neste exemplo em questão). Por isso não tem a forma errada ou certa de se fazer, existe diversas formas de fazer essa tarefa, de formas simples ou complexas