2009-03-26 26 views
1

Die Liste: - "Problemblatt" (Arbeitsblatt).Excel VBA Makro

Ich habe eine Excel-Tabelle, die eine Liste von Problemen (Zeilen) darstellt, die jeden Tag in der Größe variiert (zB mehr oder weniger Zeilen); Jeder Zeile wurde ein Name zugewiesen; Der zugewiesene Name ist immer in der gleichen Spalte "M" des "Problem Sheet"; Ein individueller Zuweisungsname taucht nicht notwendigerweise jeden Tag auf oder er kann mehrmals (in mehr als einer Zeile) an einem bestimmten Tag auftreten.

Ich habe bereits ein Makro, das eine eindeutige Liste (Arbeitsblatt) von Zuweisungsnamen erstellt, wobei jeder in Spalte M des Problemblatts erscheinende Name einmal im Arbeitsblatt "Eindeutige Liste" aufgezeichnet wird; Das gleiche Makro erstellt ein einzelnes neues Arbeitsblatt (in derselben Arbeitsmappe) für jedes eindeutige Vorkommen eines Zuweisungsnamens. Der Name der Aufgabe wird automatisch in der neuen Registerkarte für einzelne Arbeitsblätter aufgezeichnet.

Erforderlich: - Ein Makro, das Spalte M des Haupt "Problem Sheet" überprüft; Für jede Zeile/jedes Problem, wo ein bestimmter Zuweisungsname in Spalte M des Problemblatts auftritt, stimmen Sie den Zuweisungsnamen mit dem gleichnamigen Arbeitsblatt ab, kopieren und fügen Sie dann die Details der gesamten Zeile aus dem "Problemblatt" in das erste leere Zeile des korrekten (gleichen zugewiesenen Namens) Arbeitsblatts in der vorhandenen Arbeitsmappe Diese Routine muss für jede Zeile im Problemblatt wiederholt werden.

+0

Gibt es einen besonderen Grund, die Sie zwingt Excel zu verwenden? Dinge wie diese sind in SQL leicht zu erreichen, und in einer Datenbank vermute ich, dass die Daten sowieso stammen. Vielleicht kann das direkt in der DB gelöst werden? – Tomalak

+0

Die Daten werden zuerst geändert und dann zu einer Reihe von Formatierungen, vor der Mail-Aufnahme wurde mir mitgeteilt, dass die Formatierung mit SQL problematisch wäre. Ich weiß bereits, dass diese Schritte in VBA ausgeführt werden können, weil ich habe das erreicht, aber ich bin jetzt bei der Mailbox fest –

+0

Kein Zweifel, das ist in VBA möglich. Aber es wird ein Schmerz in den Arsch sein, um zu trainieren. Normalerweise würden Sie die richtigen Sachen in SQL AUSWÄHLEN, und dann in Excel und formatieren Sie es/was auch immer. Nicht zuerst in Excel und dann versuchen, eine SQL-Abfrage in VBA zu imitieren ... – Tomalak

Antwort

0

Wenn Auftrag, spielt keine Rolle, könnte dies die beste Wahl

Sub x() 
    Dim rngProbs As Range 
    With ThisWorkbook.Worksheets("Problem Sheet") 
     Set rngProbs = .Range("M1", .Range("M1").End(xlDown)) 
    End With 

    Dim r As Range 


    For Each r In rngProbs 
     r.EntireRow.Copy 
     ThisWorkbook.Worksheets(r.Text).Rows(1).EntireRow.Insert 
    Next r 

End Sub 
+0

Antwort funktioniert einwandfrei, änderte Zeilen (1) in Zeilen (2), um zu vermeiden, Titelleiste bereits in jedem Blatt. –

Verwandte Themen