我写了代码,如果有数据,它会转到每一行,并将数据复制到特定单元格中的另一个文件中。
现在,我要遍历每列而不是行,直到没有数据为止。
我正在运行的行的代码是:
Sub Row_copying()
'load my workbooks
Dim Header As Workbook
Workbooks.Open FileName:="/Users/Header.xlsx"
Set Header = Workbooks("Header.xlsx")
Dim samplelist As Workbook
Workbooks.Open FileName:="/Users/samplelist.xlsx"
Set samplelist = Workbooks("samplelist.xlsx")
samplelist.Activate
' Loop through each row that has data
Dim lRow As Long
For lRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Range("A" & lRow).Value <> "" Then
'copy cell
Range("D" & lRow).Copy
Header.Activate
Range("K5:M5").Select
ActiveSheet.Paste
samplelist.Activate
Range("H" & lRow).Copy
Header.Activate
Range("F5:G5").Select
ActiveSheet.Paste
Dim DName As String, dataname As String, path As String
samplelist.Activate
path = "/Users/newdata/"
DName = "sample_"
dataname = path & DName & Format(Range("A") & lRow.Value, "000") & ".xlsx"
Header.Activate
ActiveWorkbook.SaveAs FileName:= dataname
End If
samplelist.Activate
Next lRow
Workbooks("samplelist.xlsx").Close
End Sub
我可以通过将lRow更改为来检查有多少列具有数据
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox"last Column: "&lCol
我无法管理它遍历每一列并复制单元格。
除了使用Range()引用要检查的单元格外,还可以使用Cells(x,y)。由于您知道行和列的数量,因此可以有一个嵌套的For,即For Each Row Loop All Columns。
Option Explicit
Public Sub sCopy()
Dim numberOfColumns As Long, numberOfRows As Long
Dim x As Long, y As Long
Dim ws As Worksheet
'set number of rows/columns
'set workbooks / worksheets
For x = 1 To numberOfRows
For y = 1 To numberOfColumns
If ws.Cells(x, y).Value <> "" Then
'Do what you have to do
End If
Next y
Next x
End Sub
这是我要用每个样本的文件中数据填充的列表。我希望将数据填充到相应的示例列中。因此,请务必+1列。我有一个遍历文件夹和每个文件的代码。但是在上面的代码中,它总是将数据粘贴到一个单元格,因此会覆盖前一个单元格。
samplelist where I want to summariese all data for each sample
0
是的。抱歉无法描述我的整个问题,因为现在我在其他地方卡住了。我现在的问题是,ell的目的地在右边,但是我希望每次打开一个新文件时它都会继续前进。目前,它仍然覆盖相同的单元格。因此,每次打开新文件时,代码都不会与打开循环连接。我认为我需要在代码中进行另一个循环。通过不同文件的代码:
path = "/Users/Header/"
Extension = ".xls"
Dim strFile As String
Set dest = Range("B2")
If path ="" Then
Exit Sub
Else
strFile = Dir(path& Extension)
Do While Len(strFile) > 0 ' opens step by step all data in the folder
' should I do hear a loop that specify the action for each file?
Workbooks.Open FileName:= path & strFile
Range("C3").Copy
' from file that is changing each time, but always value in same cell
sampleliste.Activate ' sry could not manage to make it run with nicer code
dest.Select ' this cell should change in column for each new file
ActiveSheet.Paste
Workbooks(strFile).Close
strFile =Dir() ' open next file in folder
Loop
End If
以某种方式我被卡住了...