Adicionando valores de várias planilhas (VBA)

0

Na minha pasta de trabalho do Excel, tenho três planilhas separadas. As planilhas são idênticas em formato e representam valores de contagem para diferentes categorias (carros de passeio, caminhões, etc.). Eu preciso combinar as planilhas da seguinte maneira e criar uma nova pasta de trabalho com os dados combinados (CombinedCount.xlsx):

='Passenger'!B3+'Heavy Truck'!B3+'Light Truck'!B3

Há muitas células para adicionar e esse código será aplicado a um grande número de pastas de trabalho com o mesmo formato exato. Existe uma maneira de automatizar esse processo com algum código Python?

    
por user30958 07.07.2014 / 22:00

2 respostas

0

Existe algum motivo específico para você fazer isso com o Python? O Excel pode fazer isso sozinho, com essa macro do VBA:

Sub CombineSheets()
'
' Add three identically-formatted sheets,
' putting the result into a fourth one, and then moving it to a new workbook.
'

    Sheets(1).Copy After:=Sheets(3)
    Sheets(4).Name = "Combined Counts"
    Sheets(2).Select
    Cells.Copy
    Sheets(4).Select
    Range("A1").Select
    Selection.PasteSpecial Operation:=xlAdd
    Sheets(3).Select
    Cells.Copy
    Sheets(4).Select
    Selection.PasteSpecial Operation:=xlAdd
    Sheets(4).Move
End Sub

Isso

  • Faz uma cópia completa da primeira folha, colocando-a após a terceira folha. A nova planilha pode ser subsequentemente referenciada como Sheets(4) . Se a primeira folha for chamada Passenger , então a nova planilha será inicialmente chamada Passenger (2) .
  • Renomeie a nova planilha Combined Counts .
  • Copie toda a segunda folha e cole-a na nova folha usando a adição. (Esta é a função que você pode acessar interativamente com "Colar" → "Colar especial ..." e, em seguida, selecionando "Adicionar" na seção "Operação". E depois repita com a terceira folha. Dados não numéricos (ou seja, texto) na segunda e terceira planilhas são ignorados. Se a primeira folha tiver texto em uma determinada célula, esse texto persistirá no resultado. mesmo que uma das outras folhas tenha um número aí. (Mas isso não deve ser um problema, já que você diz que as folhas são idênticas em formato.)
  • Separe a nova planilha do livro, criando uma nova pasta de trabalho.

Você pode salvar a nova pasta de trabalho e fechar sua janela colocando algo como

    Do
        fName = Application.GetSaveAsFilename( _
                            FileFilter:="Excel Workbook (*.xlsx), *.xlsx")
    Loop Until fName <> False
    ActiveWorkbook.SaveAs Filename:=fName
    ActiveWindow.Close

antes do End Sub . Ou você poderia obter o nome do arquivo de outra maneira.

    
por 07.07.2014 / 23:58
0

Eu usaria o suplemento de consulta de energia para essa tarefa. Pode importar todos ou arquivos selecionados de uma pasta e construir uma tabela que combina dados de cada arquivo (assumindo que eles têm um layout padrão como você indicou). Por exemplo:

link

O Power Query também tem uma função Agrupar por, que pode resumir os dados e agregá-los. Contagem, contagem distinta, soma, média etc.

    
por 08.07.2014 / 02:03