添加3列并粘贴结果到不同的列

我在Excel中有一个表,我想添加3列,并把总和在同一张表中的另一列使用VBA。 不过,即使我的数据只有2000多行,代码似乎也会将其运行到最后(行1048576)。 当我定义表格时,我将它定义为从列A到列R,所以我不知道如何修改代码,所以它只会经过数据中的其他行。

你可以看到下面的图片,它真的跑到了表格的底部,这不是我所要求的。 3列是只有像1,2和3的值。为什么我设置数据为表是因为每个星期我得到不同行数的新数据。 我试图实现不同的公式,但它看起来像代码将运行到列的最后,而不是停在数据的末尾。 所以这显然不是关于公式的问题,而是我设置数据范围或表格的方式。

Sub Prem_Inc() Dim lRow As Long Dim ws As Worksheet Set ws = Worksheets("TB") lRow = ws.Cells(Rows.Count, "G").End(xlUp).Row For i = 2 To lRow Worksheets("TB").Cells(i, 13).Value = "=Sum(RC[-3], RC[-2], RC[-1])" Next i With Range("M2", "M" & lRow) .Style = "Currency" .NumberFormat = "_($* #,##0.0_);_($* (#,##0.0);_($* ""-""??_);_(@_)" .NumberFormat = "_($* #,##0_);_($* (#,##0);_($* ""-""??_);_(@_)" End With With Range("P2", "R" & lRow) .Style = "Currency" .NumberFormat = "_($* #,##0.0_);_($* (#,##0.0);_($* ""-""??_);_(@_)" .NumberFormat = "_($* #,##0_);_($* (#,##0);_($* ""-""??_);_(@_)" End With End Sub 

在这里输入图像说明

在这里输入图像说明

这似乎只是Excel在表格中的正常行为。 如果您input一个公式(或一个公式伪装成一个值)到表中,并且该列中没有任何内容,则会将该公式复制到该列的所有行中。

此代码将通过将公式写入特定行来避免此问题。 (如果第2行是最后一行数据,则可能仍然存在问题,但我认为这对您不成问题。)

 Sub Prem_Inc() Dim lRow As Long Dim i As Long With Worksheets("TB") lRow = .Cells(.Rows.Count, "G").End(xlUp).Row With .Range(.Cells(2, "M"), .Cells(lRow, "M")) .FormulaR1C1 = "=Sum(RC[-3], RC[-2], RC[-1])" .Style = "Currency" 'Why set NumberFormat twice?? .NumberFormat = "_($* #,##0.0_);_($* (#,##0.0);_($* ""-""??_);_(@_)" .NumberFormat = "_($* #,##0_);_($* (#,##0);_($* ""-""??_);_(@_)" End With With .Range(.Cells(2, "P"), .Cells(lRow, "R")) .Style = "Currency" .NumberFormat = "_($* #,##0.0_);_($* (#,##0.0);_($* ""-""??_);_(@_)" .NumberFormat = "_($* #,##0_);_($* (#,##0);_($* ""-""??_);_(@_)" End With End With End Sub