Excel 如何记录一个范围内连续单元格之间的差异?

Excel 如何记录一个范围内连续单元格之间的差异?,excel,vba,Excel,Vba,我有一个功能强大的宏,它可以每秒将实时数据表(sheet)中的实时数据静态值复制粘贴到单独的工作表(Sheet2)上。代码如下。请参考,范围(“B2:B2195”)是股票代码,而范围(“H2:H2195”)是股票报价 Sub copypaste_RECENT() Dim ab As Integer Worksheets("Sheet").Range("B2:B2195").Copy With Sheets("Sheet2") .Range("B1").PasteSpecial

我有一个功能强大的宏,它可以每秒将实时数据表(sheet)中的实时数据静态值复制粘贴到单独的工作表(Sheet2)上。代码如下。请参考,范围(“B2:B2195”)是股票代码,而范围(“H2:H2195”)是股票报价

Sub copypaste_RECENT()

Dim ab As Integer



Worksheets("Sheet").Range("B2:B2195").Copy


With Sheets("Sheet2")
    .Range("B1").PasteSpecial Transpose:=True

    ab = .Cells(.Rows.Count, 1).End(xlUp).Row + 1

    .Cells(1, 1).Value = "Time"
    .Cells(ab, 1).Value = Now


    Worksheets("Sheet").Range("H2:H2195").Copy
    .Range("B" & ab).PasteSpecial Paste:=xlPasteValues, Transpose:=True


End With


Application.OnTime Now + TimeSerial(0, 0, 1), "copypaste_RECENT"

End Sub
我的下一步是我遇到麻烦的一步。我想记录股票报价之间的差异。这意味着计算某个单元格与其上方单元格之间的差值,并将该差值记录在单独的表格上(第3页)。这将与上面的代码同时运行,因此我尝试在应用程序结束之后和之前包含一个附加代码。代码如下

Worksheets("Sheet").Range("B2:B2195").Copy

With Sheets("Sheet3")

    .Range("B1").PasteSpecial Transpose:=True

    Dim xy As Long, yz As Long

    ab = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    bc = .Cells(1, .Columns.Count).End(x1toleft).Column + 1


    .Cells(1, 1).Value = "Time"
    .Cells(ab, 1).Value = Now

    xy = Worksheets("Sheet2").Cells(.Rows.Count, 1).End(x1up).Row
    yz = Worksheets("Sheet2").Cells(.Rows.Count, 1).End(x1up).Row.Offset(-1, 0)


    For ab = 1 To Cells(Rows.Count, 1).End(x1up).Row + 1
    For bc = 1 To Cells(1, Columns.Count).End(x1toleft).Column + 1
        .Cells(ab, bc).Value = xy - yz
    Next ab
    Next bc



End With
我是VBA新手,我知道这是完全错误的。我已经挣扎了一段时间,但我希望这有点道理

提前谢谢

授予


EDIT1:这是一个简单的计算,计算某个单元格与其上方单元格之间的差值,并将该值记录在单独的表格中。这个计算是针对范围内的每个单元格进行的。

我没有完全理解您想要实现的目标。它是alog,所以您编写了连续的复制和计算条目行,或者只是一些计算。因此,根据这一点,您至少有三种选择:

1) 使用数学函数复制/粘贴

将复制/过去与特殊数学函数(加、减、乘、除)一起使用

2) 公式

在第3张表格中输入B2=+2张表格!B4-2!B3将自动计算此值

3) 计算并存储差异

如上所述进行计算,并将结果复制/粘贴到最终目的地

编辑

Excel是用来做计算的!那你为什么要重做这个

您可以使用VBA完成上述所有解决方案。与您所做的相同的方法是使用上面的复制和粘贴

这是一个短makro,它显示了我的意思

Sub Makro1()
'
' Makro1 Makro
'

'
    ActiveCell.FormulaR1C1 = "Line 1"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "8"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "5"
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "6"
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "4"
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "6"
    Range("G1").Select
    ActiveCell.FormulaR1C1 = "3"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "12"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "Line 2"
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "15"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "456"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "23"
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "42"
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "45"
    Range("G2").Select
    ActiveCell.FormulaR1C1 = "77"
    Range("A1:G1").Select
    Selection.Copy
    Range("A5").Select
    ActiveSheet.Paste
    Range("B2:G2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("B5").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlSubtract, _
        SkipBlanks:=False, Transpose:=False
End Sub

我相信这只是一些计算。我想我一直在尝试选择3。但我可能把它复杂化了。。。因为宏是连续的,我想我仍然需要VBA代码,而不仅仅是excel数学函数