Página 1 de 1

Soma das 10 ùlt cel. (do ano atual) da coluna, cm limitador!

Enviado: 15 Jun 2018 às 09:54
por AMORIM123
Olá, bom dia.

Em um tópico anterior "Soma dos 10 últimas células a partir da última cel vázia" Havia solicitado que na planilha anexa fosse armazenado o total da soma das 10 últimas células anteriores à última célula preenchida da coluna "B" na variável "soma" e que fosse exibida a data correspondente na coluna"A", aonde foi ultrapassado o valor limite de R$ 50,00.

Na sequência consegui desta forma: "Range("A" & i).Value" concatenado na msgbox...show!

Porém, há mais uma questão: ...Nessa totalização, que é armazenada na variável "soma", se ultrapassado R$ 50,00; preciso que seja verificada somente dentro do ano atual, sempre dentro do ano atual, até a data de hoje (Considerando apenas o mês) mostrando em que data correspondente foi ultrapassado o valor limite.

Exemplo:

Estamos em 06/2018

E em janeiro/2018 - R$ 33,00

Em fevereiro - R$ 10,00

Em março - R$ 8,00

Em abril - R$ 12,00

Em maio - R$ 22,00

Em junho - R$ 9,00

Dessa forma houve a ultrapassagem do limite de R$ 50,00 em março/2018 essa data deveria ser exibida para mim ..pode ser numa msgbox, ..armazenada numa célula na planilha.. Tendo ultrapassado, independente dos demais valores até a data atual, a data em que houve a ultrapassagem é à data deve ser exibida.

Desde já muito obrigado pelo tempo e conhecimentos disponibilizados!

Segue planilha!

Re: Soma das 10 ùlt cel. (do ano atual) da coluna, cm limita

Enviado: 29 Jun 2018 às 08:16
por AMORIM123
Resolvido dessa forma:
Código: Selecionar todos
Option Explicit
Sub Somar()
    Dim UltCel As Long
    Dim i As Long
    Dim Soma As Double
    Dim UltDate As Date
    
    UltCel = Sheets("Comum").Cells(Sheets("Comum").Rows.Count, 2).End(xlUp).Row
    
    UltDate = Sheets("Comum").Cells(Sheets("Comum").Rows.Count, 1).End(xlUp).Value
    
    For i = UltCel To UltCel - 9 Step -1
        If i > 1 Then
            Soma = Soma + CDbl(Range("B" & i).Value)
            If Soma > 50 And Year(CDate(Range("A" & i).Value)) = Year(Date) Then
                
                If Sheets("Comum").Cells(2, 9).Value = "" Then
                    'Para saber se é a primeira vez que é ultrapassado o limite de R$ 50,00
                    'salvo a data correspondente na coluna 9 para sempre informar ao usuário
                    MsgBox ("Na competência " & DatePart("m", CDate(UltDate)) & "/" & DatePart("yyyy", CDate(UltDate)) & " o limite Anual foi excedido"), vbOKOnly
                    Sheets("Comum").Cells(2, 9).Value = CDate(UltDate)
                Else
                    ' se já estava preenchida então é uma segunda averiguação
                    MsgBox ("Na competência " & DatePart("m", Sheets("Comum").Cells(2, 9).Value) & "/" & DatePart("yyyy", Sheets("Comum").Cells(2, 9).Value) & " o limite Anual foi excedido"), vbOKOnly

                End If
               ' GoTo SAI
            End If
        Else
            Exit For
        End If
    Next
'SAI:
'    Range("B" & UltCel + 1).Value = Soma
End Sub