Excel - Kopier rækker til den samlede side

Problem

Jeg har et Excel-regneark med 13 regneark. De første 12 regneark er januar til december. Det 13. arbejdsark er en total. Hvert regneark har ens kolonner og rækker.

I alle regneark er der omkring 10 kolonner som Dato, Navn, Adresse, Kontonummer, Afdeling, Medarbejdernavn osv. ...

Hvad jeg forsøger at gøre, er at indtaste oplysningerne i hvert månedligt regneark og få de data, jeg skriver ind automatisk kopieret til det samlede regneark. Det samlede regneark vil indeholde alle de indtastede data. Jeg ville have en månedlig sammenbrud, men den samlede side indeholder alle transaktioner.

Jeg har alle regnearkene oprettet, men kan ikke komme med koden til at lave kopien. Eventuelle forslag venligst?

Opløsning

Prøv dette. Selvfølgelig skal du sørge for at lave en sikkerhedskopi af originalfilen før testning

Antagelser.

  • 1. Arkene er navne Jan, Feb, ....
  • 2. Hovedarket hedder Master
  • 3. Kolonnen 1 har ikke blank værdi (den bruges til at finde det maksimale antal rækker)
  • 4. Der er højst 11 kolonner
  • 5. Hovedarket har allerede overskriftsrække.

 Sub copyData () Dim maxRows As Long Dim maxColer Som Integer Dim ConSheet Som String 'consolidated sheet name Dim lConRow As Long Dim maxRowCol As Integer' bruges til at finde maksimalt antal rækker maxCols = 11 måneder = Array ("Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec") maxRowCol = 1 conSheet = "Master" Sheets (cSheet) .Vælg område ("A2"). Vælg celler (65536, 256) .Vælg Selection.End (xlDown) .Vælg maxRows = Selection.Row Range ("A2", Selection) .Vælg Selection.ClearContents lConRow = 2 For x = 0 Til Sheets.Count - 2 Sheets (months (x)). Vælg Hvis ActiveSheet.AutoFilterMode Then Cells.Select Selection.AutoFilter Slutt Hvis Cells.Select Dim lastRow As Long lastRow = Celler (maxRows, maxRowCol) .End ( xLUp) .Row If (lastRow> 1) Så rækkevidde (celler (2, 1), celler (sidsteRow, maxCols)) .Vælg Selection.Copy Sheets (conSheet) .Vælg celler (lConRow, 1) .Vælg Selection.PasteSpecial lConRow = Celler (maxRows, maxRowCol) .End (xlUp) .Row lConRow = lSummaryRow + 1 End Hvis Hvis ActiveSheet.Name = "Dec "Afslut derefter Sub Next End Sub 

Bemærk

Takket være rizvisa1 for dette tip på foru.

Forrige Artikel Næste Artikel

Top Tips