Pergunte aqui
1

Somar valores contidos em uma única célula

perguntadas 2020-12-26 12:41:29 +0100

imagem do gravatar de Bianchini

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!

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

Não é só colocar um sinal de = na frente da expressão de A1? em A2 coloque =A1

imagem do gravatar de OlivierOlivier ( 2020-12-27 19:11:42 +0100 )editar

3 Respostas

1

respondidas 2020-12-28 13:02:56 +0100

imagem do gravatar de Conrado

updated 2020-12-28 21:11:13 +0100

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

  1. Em B1 insira a fórmula =CONCATENAR("'=";A1)
  2. 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
  3. 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

Descrição da imagem

Etapa 02

Descrição da imagem

Descrição da imagem

Etapa 03

Descrição da imagem

Descrição da imagem


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
editar assinalar como ofensivo Excluir Link mais

Comentários

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.

imagem do gravatar de BianchiniBianchini ( 2020-12-28 20:02:51 +0100 )editar

@Biacnchini olhe no complemento da resposta as imagens de como deve ser feito o procedimento. Provavelmente esteja pulando alguma etapa

imagem do gravatar de ConradoConrado ( 2020-12-28 21:06:56 +0100 )editar

@Conrado: 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.

imagem do gravatar de JedisonJedison ( 2021-02-01 23:43:35 +0100 )editar
0

respondidas 2021-02-01 23:56:19 +0100

imagem do gravatar de Jedison

updated 2021-02-02 16:01:46 +0100

Ola @Bianchini,

A resposta do @Conrado 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:

  1. 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.
  2. Copie a fórmula para as outras linhas de B
  3. Selecione a coluna B e copie (CTRL + C) e Cole Especial para a coluna C (CTRL + SHIFT + V) apenas TEXTO
  4. 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)
  5. 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 @Conrado sugeriu. Mas agora o CALC saberá como lidar com as substituições. Segue planilha teste onde esse efeito é constatado:

C:\fakepath\teste.ods

editar assinalar como ofensivo Excluir Link mais

Comentários

@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

imagem do gravatar de ConradoConrado ( 2021-02-02 13:55:31 +0100 )editar
0

respondidas 2020-12-26 13:37:21 +0100

imagem do gravatar de Schiavinatto

updated 2020-12-26 19:06:53 +0100

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 Descrição da imagem na pergunta ou Descrição da imagem abaixo. Não use Adicionar resposta para comentário ... (mais)

editar assinalar como ofensivo Excluir Link mais

Comentários

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!

imagem do gravatar de BianchiniBianchini ( 2020-12-26 14:42:35 +0100 )editar

Tem previsão de qual a quantidade de números podem estar em uma mesma célula ?

Até seis, vide complemento na Resposta acima.

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-12-26 17:18:51 +0100 )editar

Também pode separar os valores em colunas e usar a soma

Dados / Texto para colunas e Separado por [v]Outro +

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-12-28 17:33:10 +0100 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2020-12-26 12:41:29 +0100

Lidas: 48 vezes

Última atualização: Feb 02