找到空单元格然后循环以获取新数据

时间:2018-03-20 15:32:43

标签: excel vba excel-vba loops

我有一个电子表格,其中包含31个不同的日常数据标签,然后将其汇总到每月标签中,然后将每天的数据转换为软件上传。为了加快我的流程,我试图将每天的每日上传结合到另一个标签中,而不是每天手动复制/粘贴。目前为了查看每天的上传,我将单元格B3中的数字更改为我需要的日期,它将为我提供上传数据。

编辑:

我希望这会起作用,宏将在“上传”选项卡的单元格B3中放置“1”,获取A10:I34中的数据,将其粘贴到“上载文件”选项卡上A列中的第一个空单元格,然后返回上传选项卡,将单元格B3更改为“2”,复制A10:I34中的数据,将其粘贴到“上载文件”选项卡上A列中的下一个空单元格...重复,直到第31天的数据为止已粘贴到“上载文件”选项卡上。

  1. 数据位于名为“上传”的标签中
  2. “上传”标签上可以更改的唯一单元格是单元格“B3”
  3. 数据范围为“A10:I34”
  4. 数据需要在“上传文件”标签上粘贴值
  5. “上传文件”包含软件所需的第1行格式数据
  6. 编辑:

    1. 宏需要在每天粘贴数据后查找下一个空行
    2. 循环需要在第31天停止
    3. 我现在的问题是,我无法让它返回上传标签并将日期更改为第二天,然后继续使用空单元格循环。它最终只是将数据粘贴到原始数据上,或者不将单元格值更改为第二天。以下是我改变日子的方法。

      编辑#3:我调整了它,它现在有效。如果您认为可以改进,请查看并告诉我。添加了For / next。

      Dim Count as integer
      
      Dim x as Long
      
      Count = 2
      
      For x = 1 to 30
      
         Do While Worksheets("Upload Files").Range("A" & Count).Value <> ""
      
            Count = Count +1
      
         Loop
      
            Worksheets ("Upload").Range("B3").Value = Worksheets("Upload").Range("B3").Value +1
            Worksheets("Upload").Range("A10:I34").Copy
            Worksheets("Upload Files").Range("A" & Count).PasteSpecial xl PasteValues
      Next x
      

      有什么建议吗?之前的尝试只是简单地在“上传文件”选项卡上选择了先前数据结束的确切单元格,但在“上传”选项卡中添加行意味着我必须手动重新计算将粘贴数据的单元格,这大约相当耗时手动做整件事。

      谢谢,

2 个答案:

答案 0 :(得分:1)

我在代码中添加了一些您的理解评论:

Sub Test1()

    Dim Count As Integer
    Dim lLastRow As Long
    Dim i As Long

    Count = 2

    ' This would give you the last used row in the Sheet
    lLastRow = Worksheets("Upload Files").Cells(Worksheets("Upload Files").Rows.Count, 1).End(xlUp).Row

    For i = 1 To lLastRow

        ' You don't specify if you are trying to do anything in this section inside de Loop
        ' but if you just want to cound for the last row, you can remove the loop.
    Next i


    If Worksheets("Upload").Range("B3").Value < 32 Then

        ' Dont need this.
        'Worksheets("Upload").Range("B3").Select

        Worksheets("Upload").Range("B3").Value = Worksheets("Upload").Range("B3").Value + 1

        ' Here it would be nice if you specify from what Sheet you are copying this range. I guess is Upload.
        Worksheets("Upload").Range("A10:I34").Copy
        Worksheets("Upload Files").Range("A" & Count).PasteSpecial xlPasteValues

    End If

End Sub

答案 1 :(得分:0)

我猜你是在追求以下内容:

Option Explicit
Sub upload()
    Dim targetSht As Worksheet
    Set targetSht = Worksheets("Upload Files")
    Dim i As Long

    With Worksheets("Upload")
        For i = 1 To 31
            .Range("B3").Value = i
            Application.Calculate

            With .Range("A10:I34")
                targetSht.Cells(targetSht.Rows.Count, 1).End(xlUp).Offset(1).Resize(.Rows.Count, .Columns.Count).Value = .Value
            End With
        Next
    End With
End Sub