当前,我从一张纸进行复制并粘贴到另一张纸上的特定位置。我希望新工作表上的列的值有28个添加到其现有值。这些值是日期。
这是我到目前为止所拥有的。不知道在哪里插入附加内容。有没有办法做到这一点而没有循环?由于我可以精确地复制范围,因此也许有一种更简单的方法。
endRowDevelopment = wsOut.Cells(Rows.Count, 1).End(xlUp).Row
Set r1 = ws.Range(.Cells(2, 1), .Cells(endRowSheet1, 1))
r1.Copy Destination:=wsOut.Range("A" & endRowDevelopment + 1)
答案 0 :(得分:0)
您可以使用设置了一个值的辅助单元格来执行此操作,复制该单元格,然后使用“选择性粘贴”和“添加”选项将复制的值添加到所有指定的单元格中。
<cfquery name="wellPaidEmployee" dbtype="query">
SELECT employee, salary
FROM employeeData WHERE salary > <cfqueryparam cfsqltype="cf_sql_integer" value="10000">
</cfquery>
答案 1 :(得分:0)
对于无循环播放,您可以使用teylin答案。但是,除非您拥有大量数据,否则循环不应该花费那么多时间。如果您可以接受循环,那么这里可能包含您先前的问题。
Sub test()
Set ws = Application.Worksheets("Sheet1")
endRowSheet1 = ws.Cells(Rows.Count, 1).End(xlUp).Row
Set wsOut = Application.Worksheets("Load File")
With ws
Set r1 = .Range(.Cells(2, 1), .Cells(endRowSheet1, 1))
r1.Copy Destination:=wsOut.Range("A2")
Set r2 = .Range(.Cells(2, 6), .Cells(endRowSheet1, 6))
r2.Copy Destination:=wsOut.Range("E2")
End With
endRowDevelopment = wsOut.Cells(Rows.Count, 1).End(xlUp).Row
r1.Copy Destination:=wsOut.Range("A" & endRowDevelopment + 1)
r2.Copy Destination:=wsOut.Range("E" & endRowDevelopment + 1)
'--- adding 28 to the pasted ranges
With wsOut
Set r3 = .Range(.Cells(endRowDevelopment + 1, "A"), .Cells(endRowDevelopment + endRowSheet1 - 1, "A"))
Set r4 = .Range(.Cells(endRowDevelopment + 1, "E"), .Cells(endRowDevelopment + endRowSheet1 - 1, "E"))
End With
For Each rngCell In r3.Cells
rngCell.Value = rngCell.Value + 28
Next rngCell
For Each rngCell In r4.Cells
rngCell.Value = rngCell.Value + 28
Next rngCell
End Sub
有时候,当excel编译代码时,在代码中显示为“不循环”的实际上是一个循环。知道哪种方法更有效的唯一方法是编写不同的代码并对它们计时。在这种情况下,循环可能会更干净一些。
答案 2 :(得分:-1)