VBA:将数据复制到新工作表中,同时保持其相对性
我的excel文件中有两张表,一张是客户的后端数据(日期、数量、费率等),另一张是汇总表,只有在交易“打开”时才列出这些信息。因此,后端数据表有一列说明事务是否打开,如果打开,则将其复制到摘要表中。因此,汇总表的行数基本上是不断变化的。这是我的代码(附言,它是有效的)。这段代码基本上是复制粘贴交易打开时的信息,删除交易不再打开时的信息,然后删除任何空行 我的主要问题是:VBA:将数据复制到新工作表中,同时保持其相对性,vba,excel,Vba,Excel,我的excel文件中有两张表,一张是客户的后端数据(日期、数量、费率等),另一张是汇总表,只有在交易“打开”时才列出这些信息。因此,后端数据表有一列说明事务是否打开,如果打开,则将其复制到摘要表中。因此,汇总表的行数基本上是不断变化的。这是我的代码(附言,它是有效的)。这段代码基本上是复制粘贴交易打开时的信息,删除交易不再打开时的信息,然后删除任何空行 我的主要问题是: 我希望这个代码是相对的,这样我就可以在汇总表的上面和下面插入行,而不影响数据 如果数据存在于汇总表之外,我不希望它被删除。基
在
ws1.Range(“A”&i,“D”&i).PasteSpecial
中,而不是使用i
确定要粘贴到该工作表中的行。例如,“在最后使用的行之后”或“在具有特定名称的行之前”(例如Range(“BeforeThisRow”)。偏移量(-1,0)。row
是命名范围之前的行)等,然后使用此行号而不是i
粘贴到此处这取决于你如何确定这个行号,因为我们不知道你的工作表是什么样子。谢谢你的回复!我已经添加了摘要表的屏幕截图(包括一个命名的范围摘要)。如何将信息粘贴到命名范围的第1行,然后粘贴到第2行,以此类推?我试着循环它,但没有成功。我想你可以使用ws1.Range(“Summary”).Rows(I).PasteSpecial
。这将粘贴到相对于汇总范围的行i
。
Option Explicit
Sub Main()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim Last_Row2 As Long, i As Integer
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Last_Row2 = ws2.Range("A" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
With ws2
For i = 1 To Last_Row2 Step 1
If .Range("F" & i).Value = "OPEN" Then
' copy pastes the info if the transaction is OPEN
ws2.Range("B" & i, "E" & i).Copy
ws1.Range("A" & i, "D" & i).PasteSpecial
ElseIf .Range("F" & i).Value = "" Then
' deletes the info if the transaction is no longer OPEN
ws1.Range("A" & i, "D" & i).ClearContents
End If
Next i
End With
Application.ScreenUpdating = True
' deletes blank rows in Summary Sheet
Dim iCounter As Long
Worksheets("Sheet1").Range("A3:D50").Select
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
For iCounter = Selection.Rows.Count To 1 Step -1
If WorksheetFunction.CountA(Selection.Rows(iCounter)) = 0 Then
Selection.Rows(iCounter).EntireRow.Delete
End If
Next iCounter
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
ws1.Cells(1, 1).Select
End Sub