Excel VBA代码用于小滚动,右边有一个值

我有一个macros从2个报告中提取数据。 在第二次报告中我有date,我复制。 我需要取一个date,并从中减去14天

在这里输入图像说明

我去D列中的第一个空白单元格,然后我想计算C列中的公式,并向下滚动而不键入多less个单元格(因为它是一个每天的macros,数据量将会改变)。 我想这样做,直到我复制的数据结束。 最后我想把它作为值复制到B列。

这是我的代码(所有macros的一部分):

'first we go to the buttom of the column 'for NOW - change manually the top of the range you paste to 'Now, paste to OP_wb workbook: OP_wb.Sheets("Optic Main").Range("D1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues ' Calculate Due Date to MFG tools ' it means date we copied from MFG daily minus 14 days _wb.Sheets("Optic Main").Activate Range("C1").End(xlDown).Offset(1, 0).Activate ActiveCell.FormulaR1C1 = "=RC[1]-14"enter code here 

您需要从第一行循环到最后一行。 一般来说, 有很多好的方法来定义给定列的最后一行 。 完成之后,请replacelngEndRow的值并运行以下代码:

 Option Explicit Public Sub TestMe() Dim lngStartRow As Long: lngStartRow = 1 Dim lngEndRow As Long: lngEndRow = 100 Dim rngMyRange As Range Dim rngMyCell As Range With ActiveSheet Set rngMyRange = .Range(.Cells(lngStartRow, 5), .Cells(lngEndRow, 5)) End With For Each rngMyCell In rngMyRange rngMyCell.FormulaR1C1 = "=RC[1]-14" Next rngMyCell End Sub 

然后用正确的表格更改ActiveSheet ,并将硬编码的列更改为5 。 在空的Excel中运行上面的代码,了解它的function。 然后改变一下,直到它符合你的需求。