Excel - Copiați rândurile în pagina totală

Problema

Am o foaie de calcul Excel cu 13 foi de lucru. Primele 12 foi de lucru sunt ianuarie-decembrie. Cea de-a 13-a foaie de lucru este totală. Fiecare foaie de lucru are coloane și rânduri identice.

În toate foile de lucru există aproximativ 10 coloane cum ar fi data, numele, adresa, numărul contului, departamentul, numele angajatului etc.

Ceea ce încerc să fac este să introduc informațiile în fiecare foaie de lucru lunară și să am datele copiate automat copiate în foaia de lucru totală. Foaia de lucru totală ar conține toate datele introduse. Aș avea o defalcare lunară, dar pagina totală conține toate tranzacțiile.

Am toate foile de lucru configurate, dar nu pot veni cu codul pentru a face copia. Orice sugestii vă rog?

Soluţie

Incearca asta. Desigur, asigurați-vă că faceți o copie de rezervă a fișierului original înainte de testare

Ipoteze.

  • 1. Foile sunt numite Jan, Feb, ....
  • 2. Foaia Master se numește Master
  • 3. Coloana 1 nu are valoare goală (se folosește pentru a găsi numărul maxim de rânduri)
  • 4. Nu există mai mult de 11 coloane
  • 5. Foaia principală are deja un rând antet.

 Sub copyData () Dim maxRowsDe lungime Dim maxCols ca Integer Dim conSheet Ca nume de coardă consolidat Dim lConRow As Long Dim maxRowCol Ca integer 'folosit pentru a găsi numărul maxim de rânduri maxCols = 11 luni = Array ("Jan", "Feb", "Mar", "Apr", "Mai", "Iunie", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec") maxRowCol = 1 conSheet = (selectați celule) (Selectați celulele (65536, 256)). Selectați Selection.End (xlDown) .Selectați maxRows = Selecție.Rândul Range ("A2", Selecție) .Select Selection.ClearContents lConRow = 2 Pentru x = 0 Pentru Sheets.Count - 2 Sheets (luni (x)) Selectați dacă ActiveSheet.AutoFilterMode Apoi Cells.Select Selection.AutoFilter End Dacă Cells.Select Dim lastRow As Long lastRow = Celule (maxRows, maxRowCol) .End ( xLUp) .Row Dacă (lastRow> 1) Apoi, intervalul (celule (2, 1), celule (lastRow, maxCols)) Select Selection.Copy Sheets (conSheet) .Select Cells (lConRow, 1) .Select Selection.PasteSpecial lConRow = Celule (maxRows, maxRowCol) .End (xlUp) .Rând lConRow = lSummaryRow + 1 Sfârșit Dacă Dacă ActiveSheet.Name = "Dec "Apoi Exit Sub Next End Sub 

Notă

Vă mulțumim pentru rizvisa1 pentru acest sfat pe foru.

Articolul Precedent Articolul Următor

Cele Mai Importante Sfaturi