none
Soma Agrupada em Nº de NF e Data (Relatório) RRS feed

  • 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 itemA

    Sds,

    Rafael

    sexta-feira, 4 de setembro de 2020 11:46

Todas as Respostas