Excel 如何记录一个范围内连续单元格之间的差异?
我有一个功能强大的宏,它可以每秒将实时数据表(sheet)中的实时数据静态值复制粘贴到单独的工作表(Sheet2)上。代码如下。请参考,范围(“B2:B2195”)是股票代码,而范围(“H2:H2195”)是股票报价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
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数学函数