Como fazer com que o Excel copie automaticamente células específicas com data do seu lado

1

Eu tenho um log de transações pessoais e quero fazer um resumo de transações a cada mês, como fazer células de cópia do Excel com meses específicos.

Por exemplo, eu tenho log de transações

         A            B
1    01/25/2018    USD 50.3
2    02/01/2018    USD 21.5
3    02/09/2018    USD 25.4
4    02/17/2018    USD 18.9
5    02/24/2018    USD 34.9
6    02/28/2018    USD 70.5
7    03/02/2018    USD 50.5
8    03/04/2018    USD 22.1

Note: The dates are formatted as date in excel, and the amount are formatted as
Accounting cell

Como posso fazer com que o Excel copie automaticamente para outras planilhas a transação em fevereiro.

    
por Rommy Soeli 16.02.2018 / 21:32

2 respostas

1

Você não forneceu o nome ou o índice de suas planilhas, por isso tive que usar os índices genéricos de 1 & 2 .

As informações limitadas fornecidas, isso é o melhor que posso fazer por você. Mas não deve ser difícil modificar o código para se adequar ao que você está querendo fazer exatamente.

Option Explicit

Sub copyTransactions()

    ' ws = the worksheet that contains the code to copy
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets(1)

    'Create a multi-dimensional array that contains your two columns of data
    Dim myArr() As Variant
    myArr = ws.UsedRange.Columns("A:B").Value

    'ws2 = the worksheet you are copying TO
    Dim i As Long, ws2 As Worksheet, x As Long
    Set ws2 = ThisWorkbook.Worksheets(2)

    'Loop the array, and if it matches your month of 2 (Feb) then copy
    'the data from ws to ws2
    With ws2
        For i = 1 To UBound(myArr)
            If month(myArr(i, 1)) = 2 Then  ' 2 = February
                x = x + 1
                .Cells(x, 1) = myArr(i, 1)  ' the ,1 is column A
                .Cells(x, 2) = myArr(i, 2)  ' the ,2 is column B
            End If
        Next
    End With

End Sub

O que você está fazendo em poucas palavras é pegar as colunas A + B e colocá-las na matriz myArr() . Em seguida, você fará o loop dessa matriz na coluna A e definirá critérios para corresponder a qualquer mês que corresponda ao seu índice mensal de 2 (2 = fevereiro). Se encontrado, você então copia o array para ws2 .

    
por 16.02.2018 / 21:49
3

Embora o código VB seja ótimo, não tenho certeza se essa seria a melhor solução para quem não conhece o console do desenvolvedor.

Você pode criar uma coluna ao lado para cada mês, extrair as transações desse mês e, em seguida, somar a coluna para o total.

Na coluna C, use algo como:

=IF(MONTH($A2)=1,$B2,0)

em que 1 seria janeiro, 2 de fevereiro ...
Em seguida, repita para fevereiro na coluna D

    
por 16.02.2018 / 22:07