Notifications
Clear all

Gerar uma nova planilha com soma de itens de outra

9 Posts
2 Usuários
0 Reactions
1,631 Visualizações
(@marcelluss)
Posts: 0
New Member
Topic starter
 

Amigos, uma orientação por favor:
1 - Tenho uma planilha (CSV) de mais ou menos 1000 linhas, composta por vários itens ordenados por nome e a sua respectiva quantidade vendida. Cada linha corresponde a venda de um item. Todo mês, preciso encontrar a "divisão de itens", adicionar duas linhas em branco e em uma delas colocar a soma total do referido item. São uns 60 itens mais ou menos. Após isso, preciso colocar cada um item e seu respectivo total em uma nova planilha. É possível automatizar isso? Vou deixar um exemplo abaixo

PLANILHA QUE SEPARO OS ITENS
A B
01 PRODUTO 1 2
02 PRODUTO 1 4
03 PRODUTO 1 1
04 TOTAL 7
05
06 PRODUTO 2 1
07 PRODUTO 2 8
08 TOTAL 9
09

PLANILHA NOVA QUE CRIO
A B
01 PRODUTO 1 7
02 PRODUTO 2 9
03

Forte abraço, e fiquem com Deus.

 
Postado : 17/08/2017 6:20 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Tente algo assim

Sub aleVBA_25691()
    Dim ws As Worksheet, sh As Worksheet

    Set ws = Worksheets("Plan1")
    Set sh = Worksheets("Plan2")
    
    With ActiveSheet
        .AutoFilterMode = False
        [C1].Value = "Qtd"
        Range("C2").Formula = "=SUMIF($A$2:$A$1048576,A2,$B$2:$B$1048576)"
        Range("C2").AutoFill Destination:=Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row)
        With Range("C1", Range("C" & Rows.Count).End(xlUp))
            .AutoFilter 1, "<>0"
            On Error Resume Next
            ws.Range("A2:C" & Cells(Rows.Count, 3).End(xlUp).Row).Copy sh.[a2]
        End With
        .AutoFilterMode = False
        ws.Range("C:C").Delete
    End With
    sh.Range("B:B").Delete
End Sub

Att

 
Postado : 17/08/2017 8:08 am
(@marcelluss)
Posts: 0
New Member
Topic starter
 

alexandrevba

Amigo, muito obrigado pelo retorno e pela boa vontade. Infelizmente deu erro de referencia. Anexei uma planilha com dois itens apenas para exemplificar. Na plan1 é o original e a plan 2 é o que tenho que gerar com o somatório. Tinha falado em 1000 linhas, mas na verdade é quase 10.000 :((( Vc acha que dá pra fazer?

 
Postado : 17/08/2017 9:44 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

tente assim

Sub aleVBA_25691()
    Dim ws As Worksheet, sh As Worksheet

    Set ws = Worksheets("Plan1")
    Set sh = Worksheets("Plan2")
    
    ws.Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Copy Destination:=sh.Range("A1")
    sh.Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlYes
    sh.Range("B1").Formula = "=SUMIF(Plan1!$A:$A,A1,Plan1!$B:$B)"
    sh.Activate
    sh.Range("B1").AutoFill Destination:=Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row)
End Sub

Cuidado que tem produto que tem a mesma descrição mas com um espaço no final, para o excel isso pode ser outro item, ao invés de um.

Att

 
Postado : 17/08/2017 12:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Assim fica um pouco melhor...

Sub aleVBA_25691V1()
    Dim ws As Worksheet, sh As Worksheet

    Set ws = Worksheets("Plan1")
    Set sh = Worksheets("Plan2")
    
    Application.ScreenUpdating = 0
        sh.Cells.ClearContents
        ws.Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Copy Destination:=sh.Range("A1")
        
        With sh
            .Activate
            .Cells.RemoveDuplicates Columns:=Array(1), Header:=xlNo 'No seu arquivo, eu reparei que vc não usa o cabeçalho
            .Range("B1").Formula = "=SUMIF(Plan1!$A:$A,A1,Plan1!$B:$B)"
            .Range("B1").AutoFill Destination:=Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row)
            .Cells.Copy
            .Cells.PasteSpecial xlPasteValues
            .Cells(1).Select
        End With
        Application.CutCopyMode = False
    Application.ScreenUpdating = 1
End Sub

Att

 
Postado : 17/08/2017 12:24 pm
(@marcelluss)
Posts: 0
New Member
Topic starter
 

alexandrevba

CACETADAAA meu amigo!!! Isso é INCRÍVELLLLL!!!! Demorava dois dias pra fazer esse serviço!!!! Muito obrigado mesmo!!!! Que Deus abençõe você e sua família!!!!!

 
Postado : 17/08/2017 12:32 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Eu fico feliz em ajuda.

Se você for farmácia compre na minha distribuidora hem, eu trab na Panpharma..rsrsrs

Att

 
Postado : 17/08/2017 12:37 pm
(@marcelluss)
Posts: 0
New Member
Topic starter
 

alexandrevba

Vou falar com meu chefe! Sou assistente administrativo aqui na farmácia municipal da cidade!!! :)

 
Postado : 17/08/2017 1:33 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Marcelluss

Como você é novato, para facilitar a tua participação no fórum, sugiro tomar conhecimento do conteúdo dos links abaixo:
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s
Patropi - Moderador

 
Postado : 17/08/2017 4:29 pm