Excel: copia le righe sulla pagina totale

Problema

Ho un foglio di calcolo Excel con 13 fogli di lavoro. I primi 12 fogli di lavoro vanno da gennaio a dicembre. Il 13 ° foglio di lavoro è un totale. Ogni foglio di lavoro ha colonne e righe identiche.

In tutti i fogli di lavoro, ci sono circa 10 colonne come data, nome, indirizzo, numero di conto, dipartimento, nome del dipendente, ecc ...

Quello che sto cercando di fare è inserire le informazioni in ogni foglio di lavoro mensile e avere i dati che sto inserendo automaticamente copiati nel foglio di lavoro totale. Il foglio di lavoro totale conterrà tutti i dati inseriti. Avrei una ripartizione mensile, ma la pagina totale contiene tutte le transazioni.

Ho impostato tutti i fogli di lavoro, ma non riesco a trovare il codice per eseguire la copia. Qualche suggerimento per favore?

Soluzione

Prova questo. Naturalmente assicurati di fare un backup del file originale prima di testare

Assunzioni.

  • 1. I fogli sono nomi Jan, Feb, ....
  • 2. Il foglio Master è chiamato Master
  • 3. La colonna 1 non ha valore vuoto (è usata per trovare il numero massimo di righe)
  • 4. Non ci sono più di 11 colonne
  • 5. Il foglio principale ha già una riga di intestazione.

 Sub copyData () Dim maxRows As Long Dim maxCols As Integer Dim conSheet As String 'nome foglio consolidato Dim lConRow As Long Dim maxRowCol As Integer' utilizzato per trovare il numero massimo di righe maxCols = 11 mesi = Array ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") maxRowCol = 1 conSheet = "Master" Fogli (conSheet) .Seleziona Range ("A2"). Seleziona celle (65536, 256). Seleziona selezione.End (xlDown). Seleziona maxRows = Selection.Row Range ("A2", Selection). Seleziona Selection.ClearContents lConRow = 2 Per x = 0 a Sheets.Count - 2 fogli (mesi (x)). Selezionare If ActiveSheet.AutoFilterMode Then Cells.Seleziona Selection.AutoFilter End If Cells.Select Dim lastRow As long lastRow = Celle (maxRows, maxRowCol) .End ( xlUp) .Row If (lastRow> 1) Then Range (Cells (2, 1), Cells (lastRow, maxCols)) .Seleziona Selection.Copy Sheets (conSheet) .Seleziona celle (lConRow, 1) .Seleziona Selection.PasteSpecial lConRow = Celle (maxRows, maxRowCol) .End (xlUp) .Row lConRow = lSummaryRow + 1 End If If ActiveSheet.Name = "Dec "Quindi Exit Sub Next End Sub 

Nota

Grazie a rizvisa1 per questo suggerimento sul foru.

Articolo Precedente Articolo Successivo

I Migliori Consigli