2016-06-14 28 views
-1

Hallo Neuling (sehr neu) hier, Ich habe eine variable Daten von 12 Blatt (Monate). Jedes Blatt zeigt die Ausgaben eines Kunden für diesen Monat, ich muss irgendwie jeden Kunden auf ein Blatt zusammentragen.Kopieren von einem Arbeitsblatt variabler Länge zu einem anderen

Normalerweise würde ich etwas Einfaches wie eine Vlookup-Formel in Excel verwenden, aber weil neue Kunden das ganze Jahr über beitreten können, brauche ich eine andere Möglichkeit, diese Informationen zu sortieren. Normalerweise würde ich den Account-Code als meine vlookup-Quelle verwenden.

Also ich glaube, ich muss VBA verwenden, aber kämpfen, um zu finden, wo sogar auf so etwas zu beginnen.

Alle Hilfen würden geschätzt werden.

Das erste, was ich denke, wäre am besten, jeden Monat auf ein Hauptblatt zu kopieren und dann von dort zu gehen. Wenn das der Fall ist, denke ich, dass ich die Anzahl der Zeilen im aktiven Blatt finden muss, um sie dann auf das Hauptblatt zu kopieren, ohne das zu überschreiben, was ich dort schon kopiert habe.

Könnte mir jemand in die richtige Richtung zeigen?

Ja

+0

Bitte denken Sie an folgende Zeilen. Zuerst eine einzigartige Liste von Kunden, die bei Hinzufügen eines neuen Kunden dynamisch aktualisiert werden. Aus meiner Sicht sind Monatsblätter nicht wichtig. Es kann besser sein, Kunden weisen Blatt als monatliche Ausgaben können einfach durch Formeln oder VBA-Codierung berechnet werden. In jedem Fall ist Ihre Link ID der Kunde. Wenn also ein neuer Kunde hinzugefügt wird, wird sein Blatt automatisch generiert und wenn ein Kunde sein Blatt verlässt, wird es archiviert, aber das Stammblatt behält seine historischen Aufzeichnungen. Bereiten Sie zuerst einen Blaudruck vor, was und wie die Daten zwischen verschiedenen Datenpunkten fließen. – skkakkar

Antwort

0

Sie können die erste leere Zeile in jedem Arbeitsblatt mit dem folgenden Code finden:

Dim ws As Worksheet : Set ws = ThisWorkbook.Worksheets("SheetName") 
Dim firstEmptyRow 
' Get the first empty row in column "A" by finding the last used row and adding 1. 
firstEmptyRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1 

ws.Range("A" & firstEmptyRow).Value = "Whatever you want to put in the first empty row" 
0

Im Idealfall würden Sie eine Test-Stub und einen groben Entwurf der Ergebnisse, die Sie suchen, um leisten. Aber ich kann dich immer noch fangen.

  1. Diese Makro Schleife durch das alle Arbeitsblatt
  2. Kopieren Sie die Gebrauchte Bereich jedes Arbeitsblatt in eine neue Arbeitsmappe
  3. Zwei zusätzlich Zuschnitte Linien zwischen den Daten
  4. Gefolgt von der Blattname hinzugefügt werden
  5. Und zwei weitere Leerzeilen

Ich weiß nichts über die Form Ihrer Daten. Aber es ist ein guter Ausgangspunkt.

Sub CombineWorksheets() 
    Dim lastRow As Long, r As Range 
    Dim ws As Worksheet 
    Dim wbNew As Workbook 
    Set wbNew = Workbooks.Add 

    For Each ws In ThisWorkbook.Worksheets 
     Set r = ws.UsedRange 
     lastRow = lastRow + r.Rows.Count + 5 
     wbNew.Worksheets(1).Cells(lastRow - 2, 1) = ws.Name 

     r.Copy Destination:=wbNew.Worksheets(1).Cells(lastRow, 1) 
    Next 

End Sub 
+0

Danke, ich werde anfangen zu spielen und zu sehen, was ich mit dem Code machen kann. – user6463851

Verwandte Themen