1
resposta

Função em VBA que compara valores, desloca uma célula e soma os valores dessas outras celulas

Preciso de uma função em VBA que terá como argumentos um valor que eu quero usar como referencia, e outro argumento que sera um intervalo de células, a qual eu quero percorrer todo esse intervalo procurando valores iguais ao meu valor de referencia, e todas vez que achar um valor igual, deslocar uma célula para a direita, pegar esse valor e ir somando em uma variavel, quando terminar de percorrer toda a lista, a função ira retornar esse valor da soma Total.

Segue o codigo até o momento da função:

Function SomarValoresPorReferencia(ValorReferencia As Variant, Intervalo As Range) As Double
    Dim Célula As Range
    Dim SomaTotal As Double
    
    SomaTotal = 0
    
    ' Percorra cada célula no intervalo
    For Each Célula In Intervalo
        ' Verifique se a célula atual contém o valor de referência
        If Célula.Value = ValorReferencia Then
            ' Se encontrado, desloque uma célula à direita e some o valor
            If Not Célula.Offset(0, 1).Value = Empty Then
                SomaTotal = SomaTotal + Célula.Offset(0, 1).Value
            End If
        End If
    Next Célula
    
    ' Retorne o valor total
    SomarValoresPorReferencia = SomaTotal
End Function

O erro que aparece e o de "#NOME"

1 resposta

Olá Thiago, tudo bem com você?

A mensagem de erro, "#NOME?", é apresentado no Excel quando o nome da função possui um erro de digitação, indicando que não foi encontrado uma função com o nome informado.

Com base nas informações passadas na sua postagem, criei uma tabela para testes e executei a função SomarValoresPorReferencia e ela retornou como resultado a soma dos valores que estão a direita de uma referência que foi fornecida, iniciando que não possui erros no código fornecido. Como demonstrado no GIF abaixo:

GIF apresentando uma tabela do excel onde é realizado a soma de valores com base em uma referência

Peço que se certifique de que o nome da função definida no VBA corresponda exatamente ao nome que você está tentando usar na planilha do Excel, neste caso "SomarValoresPorReferencia". Lembre-se também de salvar o projeto após criar ou modificar uma função no VBA. Certifique-se também de que o módulo que contém a função foi criado no escopo do arquivo que você deseja executar a função.

Caso mesmo assim o erro permanecer, peço que crie um novo módulo e adicione a SomarValoresPorReferencia, salve o projeto VBA e realize uma nova tentativa de uso da função personalizada.

Todavia, vale ressaltar que como é um assunto externo ao curso e que não tenho acesso ao cenário completo do projeto, outros testes podem ser necessários a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu problema.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!