Kopieren von bestimmten Zeilen aus excel-basierend auf einer bestimmten Zelle der Wert
Ich habe mehrere Arbeitsblätter in einem excel-Buch und jeder der diese Arbeitsblatt enthält Modul wise-Daten. Ich möchten, kopieren Sie die Modul-Daten aus jedem Arbeitsblatt, und fügen Sie Sie in ein neues excel-Buch. Wie kann dies durchgeführt werden, indem VBScript?
Alle Blätter sieht so etwas in rawData.xls
A B C
Module1 999 asda
Module2 22 asda
Module1 33 asda
Module7 44 asda
Module3 55 asda
Module2 66 asda
Module5 77 asda
Muss ich Durchlaufen alle Blätter in rawData.xls, kopieren Sie alle Zeilen mit "Module1" und fügen Sie es zu result.xls, und wiederholen Sie für Modul2, Modul3, ...
Gibt es eine Möglichkeit, diese Art von eine automatisierte man mit VB-Skript?
Jede Hilfe ist willkommen. Vielen Dank im Voraus
Mein Code:
Sub copy()
Set objRawData = objExcel.Workbooks.Open("rawData.xls")
Set objPasteData = objExcel.Workbooks.Open("result.xls")
StartRow = 1 RowNum = 2
Do Until IsEmpty(objRawData.WorkSheets("Sheet1").Range("C" & RowNum))
If objRawData.WorkSheets("Sheet1").Range("C" & RowNum) = "module1" Then
StartRow = StartRow + 1
objPasteData.WorkSheets("Final").Rows(StartRow).Value = _
objRawData.WorkSheets("Sheet1").Rows(RowNum).Value
End If
RowNum = RowNum + 1
Loop
End Sub
Könntest du bitte richten Sie Ihre Probe genaueres? es ist nicht klar, wo Zeilen / Spalten voneinander getrennt sind.
Sorry für die falsche Formatierung.
Dies ist alles, was ich in der Lage war zu tun, bis jetzt <pre> Sub kopieren() Set objRawData = objExcel.Arbeitsmappen.Open("a.xls") objPasteData = objExcel.Arbeitsmappen.Open("Final.xls") StartRow = 1 RowNum = 2 Do Until IsEmpty(objRawData.WorkSheets("Sheet1").Range("C" & RowNum)) Wenn objRawData.WorkSheets("Sheet1").Range("C" & RowNum) = "module1" Dann StartRow = StartRow + 1 objPasteData.WorkSheets("Final").Zeilen(StartRow).Wert = objRawData.WorkSheets("Sheet1").Zeilen(RowNum).Wert End If RowNum = RowNum + 1 Loop End Sub ich muss es wiederholen für jedes Modul, aber es wird Hinzugefügt, um den Start der Seite.
bin nicht in der Lage, formatieren Sie es in den Kommentaren Abschnitte
Sorry für die falsche Formatierung.
Dies ist alles, was ich in der Lage war zu tun, bis jetzt <pre> Sub kopieren() Set objRawData = objExcel.Arbeitsmappen.Open("a.xls") objPasteData = objExcel.Arbeitsmappen.Open("Final.xls") StartRow = 1 RowNum = 2 Do Until IsEmpty(objRawData.WorkSheets("Sheet1").Range("C" & RowNum)) Wenn objRawData.WorkSheets("Sheet1").Range("C" & RowNum) = "module1" Dann StartRow = StartRow + 1 objPasteData.WorkSheets("Final").Zeilen(StartRow).Wert = objRawData.WorkSheets("Sheet1").Zeilen(RowNum).Wert End If RowNum = RowNum + 1 Loop End Sub ich muss es wiederholen für jedes Modul, aber es wird Hinzugefügt, um den Start der Seite.
bin nicht in der Lage, formatieren Sie es in den Kommentaren Abschnitte
InformationsquelleAutor Warlord | 2013-01-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstatt der beliebten " Was haben Sie versucht?' zwingen Sie zu schreiben
code ohne einen plan, überlegen Sie (und Fragen) das know-how/wissen/Methoden/tools
notwendig für die Auswahl bestimmter Zeilen der Blätter/Tabellen in neue Blätter/Tabellen.
"wählen" bedeutet SQL und während Excel ist kein Datenbank-mangement-system können Sie
verwenden Sie ein .XLS als Datenbank: mit ein wenig Hilfe von ADO.
Also mein plan wäre:
(1) Öffnen Sie ein ADODB.Verbindung zu Ihrer Quelle .XLS
(2) Holen Sie sich eine Liste aller Blätter/Tabellen zu verarbeiten
(3) (2) zum erzeugen einer Anweisung wie
(4) Ausführen, (3) und Schleife über das resultset
(5) Für Jede Module1 ... ModuleLast
(5a) Zu erstellen, die neues Blatt/Tabelle für das Modul M am Ziel .XLS, ausführen einer Anweisung, wie
(5b) Für Jede Tbl2 ... TblLast fügen Sie den ModuleM Zeilen mit Aussagen wie
Demo-code, um Ihnen etwas Vertrauen in den plan und einige Stichworte zum nachschlagen:
Ausgabe:
InformationsquelleAutor Ekkehard.Horner
Hier ist mein Ansatz: sehr einfach und verstößt gegen viele Programmier-Prinzipien, z.B. "vermeiden Sie das kopieren/einfügen-Nutzung", sondern von Lern-Perspektive scheint es sehr einfach zu verstehen, und über 80% des Codes wurden generiert mit MacroRecorder. Hier ist es:
Als ein Ergebnis, neue Arbeitsmappe
Results.xlsx
wird in demselben Ordner erstellt, als Quelle. Die wichtigsten Punkte meiner Vorgehensweise:Beispiel-Datei ist auch geteilt: https://www.dropbox.com/s/ual33s5me1gzhus/DataToBook.xlsm
Hoffe, dass wird hilfreich sein, irgendwie, zumindest in Bezug auf das lernen von basic, VBA Programmieren.
InformationsquelleAutor Peter L.
Ich gab es einen weiteren Ansatz, abgesehen von SQL und Arten (bereits vorher).
Getestet habe ich diesen code und es funktioniert.
Die Allgemeine Idee hinter diesem code:
Dieser code enthält:
Der große Vorteil dieses Ansatzes ist die Flexibilität. Da laden Sie alle Daten in einen Rahmen, Sie können praktisch beliebige Aktionen ausführen danach durch festlegen der Klassen und den Aufruf Ihrer Eigenschaften.
Klassenmodul namens "clsModule"
Klassenmodul namens "clsSheet"
InformationsquelleAutor Trace
@Peter L, @Kim Gysen & @Ekkehard.Horner, Danke Jungs für all die codes, die Sie Jungs gab. Der code ist aber weit über meinem Kopf. Wie auch immer ich Tat, dieses Problem zu lösen. Ich habe gerade kopiert alle Daten von allen Platten in die neue excel-Buch und gerade sortiert wird das gesamte Daten-basiert auf Modulen. Also ich war in der Lage, um die Lösung zu erhalten.
InformationsquelleAutor Warlord