Ir para conteúdo
Fórum Script Brasil
  • 0

Fazer somatório em BD SQL com VBA


Jaime Bezerra

Pergunta

Boa tarde!!

 

Criei uma macro que extrai uma série de dados do meu BD SQL através de uma Query e grava em uma planilha do Excel (que vou chamar de BD Excel), até aí sem problemas está funcionando corretamente.

 

O que preciso agora é um pouco mais complicado:

Considerando que o meu BD Excel possui no primeiro campo o ID_TITULO preciso fazer um somatório dos débitos e créditos de outra tabela do BD SQL e inserir o resultado da soma no BD Excel para cada um dos títulos.

 

Ou seja, após criar o BD Excel com uma Query da tabela titulocli preciso somar os débitos e créditos da tabela transcli e inserir o resultado em nova coluna respeitando o ID_TITULO.

 

Exemplo anexo.

Obs.: a coluna em amarelo é a coluna para se incluir o resultado do somatório.

 

Grato

Exemplo_BD_Excel.png

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bom dia!!

 

Resolvi o problema de outra forma, com a mesma macro que cria o BD Excel (titulocli) criei outro BD Excel (transcli), ambos estão no mesmo arquivo e são planilhas distintas deste arquivo.

Com os dois BD's criados montei outra macro que, através da função SUMIFS do VBA calcula os débitos e créditos do BD transcli com um critério sendo o ID_TITULO, presente em ambas as planilhas, e outro o termo "D" ou "C".

 

Estou disponibilizando abaixo a macro para utilização de outros que por ventura tenham a mesma necessidade.

 

Sei que existe a possibilidade de se fazer o somatório diretamente do BD SQL, mas como não sou programador não tenho conhecimento suficiente para isto, vou continuar pesquisando e tentando o somatório diretamente do BD SQL com VBA e descobrindo a forma disponibilizarei aqui.

 

Macro:

 

Sub somacondsloop()

 

'

 

' Macro somacondsloop

 

'

 

 

'

 

Dim I As Integer

 

Dim Dsoma, Csoma, TotMovID As Double

 

Dim Minharange As String

 

Dim Arg1 As Range

 

Dim Arg2 As Range

 

Dim Arg3 As Range

 

Dim Arg4 As Range

 

 

'Congela a tela para evitar o "pisca-pisca" durante a execução da macro

 

Application.ScreenUpdating = False

 

 

 

  Sheets("transcli").Select

 

  Range("a1").Select

 

 

'Posiciona para preencher a formula

 

  Sheets("titulocli").Select

 

  I = 2

 

  Do While Range("A" & I).Value <> ""

 

 

 

'Posiciona para selecionar o primeiro critério de soma

 

  Range("A" & I).Select

 

  Minharange = ("A" & I)

 

 

 

'Posiciona para inserir o resultado das soma

 

  Range("F" & I).Select

 

 

 

' Os argumentos de range foram passados considerando apenas as colunas pois a range é variável

 

  Set Arg1 = Sheets("transcli").Range("D:D")

 

  Set Arg2 = Sheets("transcli").Range("A:A")

 

  Set Arg3 = Sheets("titulocli").Range(Minharange)

 

  Set Arg4 = Sheets("transcli").Range("E:E")

 

 

 

'Faz a soma com os critérios passados por argumentos

 

  Dsoma = WorksheetFunction.SumIfs(Arg1, Arg2, Arg3, Arg4, "D")

 

  Csoma = WorksheetFunction.SumIfs(Arg1, Arg2, Arg3, Arg4, "C")

 

  TotMovID = (Dsoma - Csoma)

 

 

'Transfere o total da soma para a célula ativa

 

ActiveCell.Value = TotMovID

 

 

I = I + 1

 

Loop

 

 

'Descongela a tela

 

Application.ScreenUpdating = True

 

End Sub

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...