2017-03-13 3 views
0

Ich muss einen Datenbereich von einem anderen Blatt kopieren, das den Monat der Daten enthält, die sich in der Zelle A1 befinden. So habe ich Februar 2017 in Zelle A1 und eine Reihe von Daten in einem anderen Blatt vom 1. Januar 2017 bis 31. Dezember 2017 mit den Daten ist Zeile A und die Daten in den Zeilen darunter. Ich möchte ein Makro erstellen, dass, wenn ich es ausführe, es Zelle A1 liest und wenn es Februar 2017 ist, wird es die Spalten der Daten vom 1. Februar 2017 bis 28. Februar 2017 kopieren und wenn die Zelle A1 März 2017 ist, wird es Kopie vom 1. März 2017 bis 31. März 2017. Wie kann ich das tun?Referenzieren einer Zelle in VBA mithilfe von Werten in einer anderen Zelle

Ich habe das Makro aufgezeichnet, aber die Zelle, auf die verwiesen wird, ist gesperrt, so dass es immer vom 1. Februar 2017 bis zum 28. Februar 2017 kopiert wird, was ich nicht wollte.

Windows("MASTERFILE.xlsm").Activate 
Range("FA2:FT2").Select 
Selection.Copy 
Windows("NEW_FILE.xlsm").Activate 
Sheets("borrowing").Select 
Range("B2").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Windows("MASTERFILE.xlsm").Activate 
Range("FA25:FT28").Select 
Application.CutCopyMode = False 
Selection.Copy 
Windows("NEW_FILE.xlsm").Activate 
Range("B3").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Sheets("Main Page").Select 

End Sub

Bitte helfen. Vielen Dank!

Antwort

0

Dies kann helfen.

Sub GetDataByMonth() 
    Dim mth As Integer, year As Integer, data As Range, item As Range 

    With Worksheets("Sheet1") 
     mth = VBA.DatePart("m", .Range("A1")) 
     year = VBA.DatePart("yyyy", .Range("A1")) 
    End With 

    Set data = Worksheets("Sheet2").Range("A1:A200") 

    For Each item In data 
     If VBA.DatePart("m", item) = mth And VBA.DatePart("yyyy", item) = year Then 
      Range(Cells(Item.Row, 2), Cells(Item.Row, 40)).Copy 
      Item.Offset(0, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
     End If 
    Next item 
End Sub 
  • Geht davon Ihre Reisedaten wie Daten in s/Blatt
  • Es kopiert jede Zeile zu einem Zeitpunkt formatiert sind.
  • nimmt die Daten, die Sie in Spalte B (2) auf AN (40)
+0

Hallo Danke für Ihre Hilfe kopieren möchten! Es hat funktioniert, aber wie mache ich es so, dass es nur ab B statt der ganzen Reihe kopiert? – yeocs93

+0

Kennen Sie die Breite der Reihe genau? Zum Beispiel, wird es immer von B nach H sein? –

+0

Angenommen, Sie möchten die Zeile von Spalte B nach H kopieren. Aktualisieren Sie die Datei "item.EntireRow.Copy" in "Bereich (Zellen (item.Row, 2), Cells (item.Row, 8)). EntireRow.Copy-Ziel : = Arbeitsblätter ("Sheet3"). Range ("A" & rw) ' –

Verwandte Themen