遍历列和复制单元格

问题描述 投票:0回答:3

我写了代码,如果有数据,它会转到每一行,并将数据复制到特定单元格中的另一个文件中。

现在,我要遍历每列而不是行,直到没有数据为止。

我正在运行的行的代码是:

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

我无法管理它遍历每一列并复制单元格。

excel vba
3个回答
1
投票

除了使用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

0
投票

这是我要用每个样本的文件中数据填充的列表。我希望将数据填充到相应的示例列中。因此,请务必+1列。我有一个遍历文件夹和每个文件的代码。但是在上面的代码中,它总是将数据粘贴到一个单元格,因此会覆盖前一个单元格。

samplelist where I want to summariese all data for each sample

an example of the header for each of my samples


0
投票

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

以某种方式我被卡住了...

© www.soinside.com 2019 - 2024. All rights reserved.