我有一个电子表格,其中包含31个不同的日常数据标签,然后将其汇总到每月标签中,然后将每天的数据转换为软件上传。为了加快我的流程,我试图将每天的每日上传结合到另一个标签中,而不是每天手动复制/粘贴。目前为了查看每天的上传,我将单元格B3中的数字更改为我需要的日期,它将为我提供上传数据。
编辑:
我希望这会起作用,宏将在“上传”选项卡的单元格B3中放置“1”,获取A10:I34中的数据,将其粘贴到“上载文件”选项卡上A列中的第一个空单元格,然后返回上传选项卡,将单元格B3更改为“2”,复制A10:I34中的数据,将其粘贴到“上载文件”选项卡上A列中的下一个空单元格...重复,直到第31天的数据为止已粘贴到“上载文件”选项卡上。
编辑:
我现在的问题是,我无法让它返回上传标签并将日期更改为第二天,然后继续使用空单元格循环。它最终只是将数据粘贴到原始数据上,或者不将单元格值更改为第二天。以下是我改变日子的方法。
编辑#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
有什么建议吗?之前的尝试只是简单地在“上传文件”选项卡上选择了先前数据结束的确切单元格,但在“上传”选项卡中添加行意味着我必须手动重新计算将粘贴数据的单元格,这大约相当耗时手动做整件事。
谢谢,
答案 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