Inquiridor
Soma Agrupada em Nº de NF e Data (Relatório)

Pergunta
-
Bom Dia Pessoal, estou precisando de uma ajudinha.
Não estou conseguindo detectar aonde estou errando no bloco IF.
Observação: O resultado da soma esta saindo certinho. No entanto, só sai para dados que contém pelo menos duas linhas com a mesma NF. Os dados que só contem apenas uma linha ele não extrai o valor, e acrescenta o valor zerado.
'Declaração de Variaveis
Dim linha1 As Long
Dim linha2 As Long
Dim itemA As Long
Dim itemB As Long
Dim somaVLOrig As Currency
Dim somaVlLiq As Currency
Dim ID As Long
Dim cc As String
Dim NF As String
Dim Disciplina As String
Dim MesRef As String
Dim AnoRef As String
Dim DtAdm As Date
Dim DtVenc As Date
'Limpar a PNL_Rel
Sheets("Rel_Anal").Range("A12").Select
Rows("12:12").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
'A Partir da Linha
linha1 = 2
'Percorrer as Linhas da Coluna A da PNL_Base
While PNL_FatFin.Range("A" & linha1).Value <> ""
linha1 = linha1 + 1
Wend
'A Última Linha Preenchida da PNL_Base
linha1 = linha1 - 1
'Ítem Anterior Começa em 2 e vai até a Penúltima Linha da Planilha 1
For itemA = 2 To linha1 - 1
'Atribui os dados da Base nas variáveis
ID = PNL_FatFin.Range("A" & itemA).Value
cc = PNL_FatFin.Range("B" & itemA).Value
Disciplina = PNL_FatFin.Range("C" & itemA).Value
NF = PNL_FatFin.Range("D" & itemA).Value
DtAdm = PNL_FatFin.Range("E" & itemA).Value
DtVenc = PNL_FatFin.Range("F" & itemA).Value
MesRef = PNL_FatFin.Range("G" & itemA).Value
AnoRef = PNL_FatFin.Range("H" & itemA).Value
'Procurar na PNL_Rel o NF e a DtAdm
If ACHARITEM(NF, DtAdm) = False Then
'Zerar as Somas
somaVLOrig = 0
somaVlLiq = 0
'Ítem Posterior vai de Ítem Anterior + 1 até a Última Linha Preenchida
For itemB = itemA + 1 To linha1
'Verifica se o NF é Igual
If UCase(PNL_FatFin.Range("D" & itemA).Value) = UCase(PNL_FatFin.Range("D" & itemB).Value) Then
'Verifica se a DtAdm é Igual
If PNL_FatFin.Range("E" & itemA).Value = PNL_FatFin.Range("E" & itemB).Value Then
'Se a soma Estiver Zerada
If (somaVLOrig = 0 Or somaVlLiq = 0) Then
'Soma vai ser igual as somas + quantidade anterior + quantidade posterior
somaVLOrig = somaVLOrig + PNL_FatFin.Range("I" & itemA).Value + PNL_FatFin.Range("I" & itemB).Value
somaVlLiq = somaVlLiq + PNL_FatFin.Range("J" & itemA).Value + PNL_FatFin.Range("J" & itemB).Value
'Senão
Else
'Se as Somas não Estiver Zerada
'Somas Vai ser Igual a Somas + Quantidade Posterior
somaVLOrig = somaVLOrig + PNL_FatFin.Range("I" & itemB).Value
somaVlLiq = somaVlLiq + PNL_FatFin.Range("J" & itemB).Value
End If
End If
End If
Next itemB
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'A Partir da Linha
linha2 = 12
'Percorrer as Linhas da Coluna A da PNL_Rel
While PNLRelSin.Range("C" & linha2).Value <> ""
'Próxima Linha em Branco da PNL_Base
linha2 = linha2 + 1
Wend
'Registra os Dados na Próxima Linha em Branco
PNLRelSin.Range("C" & linha2).Value = ID
PNLRelSin.Range("D" & linha2).Value = cc
PNLRelSin.Range("E" & linha2).Value = Disciplina
PNLRelSin.Range("F" & linha2).Value = NF
PNLRelSin.Range("G" & linha2).Value = DtAdm
PNLRelSin.Range("H" & linha2).Value = DtVenc
PNLRelSin.Range("I" & linha2).Value = MesRef
PNLRelSin.Range("J" & linha2).Value = AnoRef
'Coloca a Quantidade nas Colunas de Somas
PNLRelSin.Range("K" & linha2).Value = somaVLOrig
PNLRelSin.Range("L" & linha2).Value = somaVlLiq
PNLRelSin.Range("M" & linha2).Value = somaVLOrig - somaVlLiq
End If
Next itemASds,
Rafael
Todas as Respostas
-
Envie arquivo para andersondiniz@scseduca.com.br
A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com
- Sugerido como Resposta AndersonFDiniz2 segunda-feira, 7 de setembro de 2020 12:12
-