如何减去两个动态范围并将其粘贴到另一个单元格

时间:2019-04-09 12:14:25

标签: excel vba

我创建了一个宏,该宏将两个动态表列从一个工作表复制到另一个工作表。在第二个工作表上,我想减去这两列并将结果粘贴到单独的列/向量上。由于我计划每天运行一次宏,因此所有这些都必须是动态的。

我最接近的是以下代码:

Sub Makro2()

Dim ws_3 As Worksheet
Set ws_3 = ThisWorkbook.Worksheets(2)


Application.CutCopyMode = False
ws_3.Range("E3:E400").FormulaR1C1 = "=RC[-2]-RC[-1]"

End Sub

所以实际上我需要E3:E400保持动态,因为其他两列的范围每天都在变化。

PS。在VBA上还算是新事物。

2 个答案:

答案 0 :(得分:1)

这只是基本的操作,请确保您声明变量。

Dim lRow As Long
lRow = Range("D" & Rows.Count).End(xlUp).Row
Range("E3:E" & lRow).FormulaR1C1 =

答案 1 :(得分:0)

您可以尝试:

Option Explicit

Sub test()

    Dim wsSource As Worksheet, wsDestination As Worksheet
    Dim LastRow1 As Long, LastRow2 As Long, rng1  As Range, rng2 As Range, LastColumn As Long

    With ThisWorkbook
        Set wsSource = .Worksheets("Sheet1") '<- Data appears here
        Set wsDestination = .Worksheets("Sheet2") '<- Data will be copy here
    End With

    With wsSource
        'Let's say the two columns we want to copy is column A & B. Find Last row of A & B
        LastRow1 = .Cells(.Rows.Count, "A").End(xlUp).Row
        LastRow2 = .Cells(.Rows.Count, "B").End(xlUp).Row

        'Create the ranges you want to copy
        Set rng1 = .Range("A1:A" & LastRow1)
        Set rng2 = .Range("B1:B" & LastRow2)
    End With

    With wsDestination
        'Paste column after the last column of row 1. Find last column row 1
        LastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column

        rng1.Copy
        .Cells(1, LastColumn + 1).PasteSpecial xlPasteValues
        rng2.Copy
        .Cells(1, LastColumn + 2).PasteSpecial xlPasteValues

    End With

    Application.CutCopyMode = False

End Sub