/ / So erhalten Sie bestimmte Daten in einer Spalte, indem Sie nur Daten aus einer Zelle verwenden - excel, vba, excel-vba, excel-2007

Wie man spezifische Daten in einer Spalte erhält, indem nur Daten von einer Zelle verwendet werden - Excel, VBA, Excel-VBA, Excel-2007

Ich habe viele Verkaufsaufträge, die ich ausfüllen mussviele Daten aus verschiedenen Excel-Arbeitsmappen und Arbeitsblättern. Also brauche ich ein Makro, das es für mich erledigen kann. Ich habe 4 verschiedene Excel-Arbeitsmappen. 1 wo die Daten eingefügt werden müssen und 3 wo ich die Daten abrufen muss. Alle Excel-Arbeitsmappen enthalten die aufgelisteten Verkaufsaufträge.

Das Makro muss also für jeden Kundenauftrag in jeder Arbeitsmappe einen Scan durchführen und dann bestimmte Daten aus den Arbeitsmappen abrufen.

Bildbeschreibung hier eingeben

Dies ist ein Beispiel für die Arbeitsmappe, in die die Daten eingefügt werden.

Bildbeschreibung hier eingeben

Hier ist ein Beispiel für eine Arbeitsmappe, in der ich die Daten kopieren muss.

Also muss es kopieren:

Bildbeschreibung hier eingeben

Und füge es dann in die Arbeitsmappe ein, wo ich die Daten einfügen muss.

Wenn mir jemand einen Startplatz oder einen Code geben könnte, wäre ich mehr als glücklich!

Antworten:

1 für die Antwort № 1

BEARBEITETE LÖSUNG UNTEN. Nicht der schönste Code und es ist wahrscheinlich ein besserer Weg, es zu tun, aber es sollte das tun, was Sie wollen, um es herumzugeben.

Kopieren Sie dieses Makro in ein Modul in Ihrem Master-Buch, das Sie kopieren ZU und irgendwo als XLSM-Datei speichern.

Platzieren Sie alle 3 Blätter (oder so viele, wie Sie möchten), die Sie kopieren möchten VON innerhalb eines anderen Ordners irgendwo und fügen Sie dann diesen Dateipfad dort ein, wo er im Makro angegeben ist.

Dies sollte jede Datei am angegebenen Speicherort durchlaufen, alle verwendeten Zellen mit Ausnahme der Kopfzeile packen und in die nächsten verfügbaren Zeilen in Sheet2 in Ihrem Master-Buch einfügen.

Dann führt das Makro einen Lookup für die kopierten Daten anhand der Verkaufsauftragsnummern aus und fügt Sonderzeichen ein, um sie in Werte zurückzusetzen. Zum Schluss wird Sheet2 für den nächsten Start gelöscht.

Wenn Ihre Blätter einen anderen Namen haben, können Sie dies natürlich ändern oder auf die Nummer verweisen, aber es sollte Ihnen zumindest einen Startpunkt geben.

Sub CopyTheData()

Dim Folder As String
Dim File As Variant
Dim wbk As Workbook
Dim This As Worksheet, That As Worksheet

Folder = "[FOLDER LOCATION HERE]"
File = Dir(Folder & "*.*")
Set This = ThisWorkbook.Sheets(1)
Set That = ThisWorkbook.Sheets(2)

Application.ScreenUpdating = False

While (File <> "")
Set wbk = Workbooks.Open(Folder & File)


With wbk
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
Selection.Copy Destination:=That.Range("B65536").End(xlUp)(2).Offset(0, -1)
End With

wbk.Close

File = Dir
Wend

This.Activate
This.Range("B2", Range("A2").End(xlDown).Offset(0, 1)).Formula = "=VLOOKUP(A2, Sheet2!$A:$H,2,FALSE)"
This.Range("C2", Range("A2").End(xlDown).Offset(0, 2)).Formula = "=VLOOKUP(A2,Sheet2!$A:$H,4,FALSE)"
This.Range("D2", Range("A2").End(xlDown).Offset(0, 3)).Formula = "=VLOOKUP(A2,Sheet2!$A:$H,6,FALSE)"
This.Range("E2", Range("A2").End(xlDown).Offset(0, 4)).Formula = "=VLOOKUP(A2,Sheet2!$A:$H,8,FALSE)"

With This.Range("B2", Range("A2").End(xlDown).Offset(0, 4))
.Copy
.PasteSpecial Paste:=xlPasteValues
End With

Columns("D:E").NumberFormat = "m/d/yyyy"

That.Cells.ClearContents


Application.ScreenUpdating = True

End Sub

1 für die Antwort № 2

Der Code von Harley sieht gut aus, wenn Sie nur bestimmte Blätter verwenden möchten, obwohl Sie in jedes der Blätter, die Sie dem Masterblatt hinzufügen möchten, Folgendes einfügen können.

Dim owb As Workbook
Dim Master As Worksheet
Dim Slave As Worksheet "the following declares both master and slave as worksheets

fpath = "location of master workbook"


Set owb = Application.Workbooks.Open(fpath) "opens the file path

Set Master = ThisWorkbook.Worksheets("name of sheet in workbook your pasting from") "declares this workbook and sheet as "master"
Set Slave = owb.Worksheets("name of sheet in master you are pasting to") "declares the workbook and sheet you"re copying to as "slave"


For j = 1 To 10000 "(the master sheet) "goes through each row from 1 to 10000

For i = 1 To 10000 "(the slave sheet) "again does the same and the slave sheet
If Trim(Master.Cells(j, 4).Value2) = vbNullString Then Exit For "if the ID is blank it will exit and move on to the next row
If Master.Cells(j, 1).Value = Slave.Cells(i, 1).Value Then "the 1 represents column A, if cell in column A matches the cell in column D in the masterwork book then it will..

Slave.Cells(i, 2).Value = Master.Cells(j, 2).Value
"the cell here represent column B as it"s a 2, you can change and add as many as you like to bring through the column


End If
Next


Next


MsgBox ("Successful")