2016-11-23 3 views
0

Ich möchte einen Dateinamen (sagen "CVC") aus der ersten leeren Zelle der Spalte D der Zeile der Spalte zuweisen, die der letzten nicht entspricht leere Zeile der Spalte E (ähnlich einem Filldown-Verfahren). Ich habe jedoch Probleme mit der Kopiermethode in der letzten Codezeile. dies ist mein Versuch:Kopieren Sie den Dateinamen in einen Bereich der Länge der angrenzenden Spalte (als Filldown) Makro

Dim WB As Workbook 
Dim lastRow As Long 

Set WB = Workbooks.Open(fileName:= _ 
     "C:\Users\gustavo\Documents\Minambiente\TUA\2015\Consolidar_base\CVC.xlsx") 

WBname = Replace(WB.Name, ".xlsx", "") 

lastRow = ThisWorkbook.Sheets(1).Range("E" & Rows.Count).End(xlUp).Row 

ThisWorkbook.Sheets(1).Range(Cells(Rows.Count, 4).End(xlUp).Offset(1, 0), "D" & lastRow).Value = WBname 

Gerade jetzt, meine Daten sieht wie folgt aus:

"column D" ¦ "Column E" 
    valueD ¦ ValueE 
    valueD ¦ ValueE 
      ¦ ValueE 
      ¦ ValueE 
      ¦ ValueE 

Nachdem das Makro ausgeführt wird, würde sich die Daten als

"column D" ¦ "Column E" 
    valueD ¦ ValueE 
    valueD ¦ ValueE 
    CVC  ¦ ValueE 
    CVC  ¦ ValueE 
    CVC  ¦ ValueE --> Note that what I am coping is the filename CVC 
+0

nicht klar, was Sie versuchen zu erreichen? Können Sie es manuell in einer Excel-Tabelle simulieren und Ihrem Post hinzufügen? Es hilft uns, Ihnen zu helfen –

+0

Ich habe gerade ein Beispiel für die Daten hinzugefügt –

Antwort

1

folgt Wenn ich richtig zu verstehen, was Sie zu tun versuchen (dh Kopieren WBName in jede Zelle in Spalte D, beginnend mit der Zeile nach der letzten verwendeten Zelle in Spalte D und Beenden in der Zeile der zuletzt verwendeten Zelle in Spalte E), die n dies sollte funktionieren:

Dim WB As Workbook 
Dim lastRowD As Long 
Dim lastRowE As Long 
Dim WBname As String 

Set WB = Workbooks.Open(fileName:= _ 
     "C:\Users\gustavo\Documents\Minambiente\TUA\2015\Consolidar_base\CVC.xlsx") 

WBname = Replace(WB.Name, ".xlsx", "") 

With ThisWorkbook.Sheets(1) 
    lastRowD = .Range("D" & .Rows.Count).End(xlUp).Row 
    lastRowE = .Range("E" & .Rows.Count).End(xlUp).Row 
    .Range(.Cells(lastRowD + 1, "D"), .Cells(lastRowE, "D")).Value = WBname 
End With 

Die Linie, die die Werte Einstellung alternativ geschrieben werden als:

.Range("D" & (lastRowD + 1) & ":D" & lastRowE).Value = WBname 
Verwandte Themen