如何在列的每个单元格的值上加上28?该列每个单元格中的值是日期

时间:2019-08-12 18:56:27

标签: excel vba

当前,我从一张纸进行复制并粘贴到另一张纸上的特定位置。我希望新工作表上的列的值有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)

3 个答案:

答案 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)

如果您有两个相等的范围,则可以使用公式来执行此操作。 (根据需要调整范围)

Sub copy_add_amt()
Dim copyRng As Range, destRng As Range
Set copyRng = Range("A1:A6")
Set destRng = Range("B1:B6")
destRng.Formula = "=" & copyRng.Address & "+28"
End Sub

enter image description here