在我没有设计的Excel文档中工作。将数据复制并粘贴到VBA创建的工作表
我想将原始数据自动化成报告类型电子表格。
总之。我的代码能够完成我所需要的所有工作,包括格式化,移动列,计算,查找等等。我甚至可以根据特定列中的数据创建新工作表。我们的目标是为每个拥有其数据和其数据的行政人员提供表格。维护一张包含所有数据的表单。所以我需要将他们的数据复制并传输到他们的工作表中。我真的很接近......我想。
目前代码创建正确的工作表,它甚至正确地命名它们。但是,它会错误地移动数据。例如,我期望在表2中有15条记录,但我预计有10条记录,并且有17条随机的记录。此外,您可以运行宏两次并在工作表上获得不同的结果。
我已经用尽了另外两个人,并且今天有几个搜索。我不知道如何解决它。这段代码上面有很多格式化代码。我是VBA的基本用户。我可以用它做很多事情,但是这段代码来自一位有着更多经验的同事,但是他不知道为什么它做了它的事情。我没时间了。所以我真的很感激任何帮助。
代码如下。
'create new sheets
On Error GoTo ErrHandle
Dim vl As String
wb = ActiveWorkbook.Name
cnt = Application.WorksheetFunction.CountA(ActiveWorkbook.Sheets("Sheet1").Range("S:S"))
For i = 2 To cnt
vl = Workbooks(wb).Sheets("Sheet1").Cells(i, 19).Value
WS_Count = Workbooks(wb).Worksheets.Count
a = 0
For j = 1 To WS_Count
If vl = Workbooks(wb).Worksheets(j).Name Then
a = 1
Exit For
End If
Next
If a = 0 Then
Sheets.Add After:=ActiveSheet
ActiveSheet.Name = vl
Sheets("Sheet1").Activate
Range("A1:V1").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets(vl).Activate
Range("A1").Select
ActiveSheet.Paste
End If
Next
Sheets("Sheet1").Activate
j = 2
old_val = Cells(2, 19).Value
For i = 3 To cnt
new_val = Cells(i, 19).Value
If old_val <> new_val Then
Range("A" & j & ":V" & i).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets(old_val).Activate
Range("A2").Select
ActiveSheet.Paste
Sheets("Sheet1").Activate
old_val = Cells(i + 1, 19).Value
j = i + 1
End If
Next
On Error GoTo ErrHandle
Worksheets("0").Activate
ActiveSheet.Name = "External Companies"
Worksheets("Sheet1").Activate
ActiveSheet.Name = "All Data"
Worksheets("All Data").Activate
Range("A1").Select
Workbooks("PERSONAL.xlsb").Close SaveChanges:=False
ActiveWorkbook.SaveAs ("Indirect_AVID_Approval")
Exit Sub
ErrHandle:
MsgBox "Row: " & i & " Value =:" & vl
End Sub
我的歉意,我知道我是一个凌乱的代码作家。如果你说不出来,我主要是自学成才。
在此先感谢。
我不明白你为什么要循环浏览数据,当你总是粘贴到'表格(old_val)'中的'A2'? – KyloRen