2016-08-05 17 views
0

你能告訴我如何把總和公式放在最後一行。我不想總結最後一行的值。我試着用下面的代碼來解釋你。如何把總和公式放在拉斯特羅通過vba

Sub Sum_Formula_In_Lastrow() 
lr = Cells(Rows.Count, 2).End(xlUp).Row 
lc = Cells(1, 1).End(xlToRight).Column 
For x = 4 To lc 
Cells(lr, x).Select 
Selection.Formula = "=sum(Range(Cells(x, 2), Cells(lr, x)))" 
Next x 
End Sub 

請建議我,我知道上面的代碼是錯誤的,但我試圖解釋我的要求。

回答

1

您的變量和範圍對象需要在引號之外並與&連接。 Range的默認值是.Value。你想通過不是值的地址。

Sub Sum_Formula_In_Lastrow() 
lr = Cells(Rows.Count, 2).End(xlUp).Row 
lc = Cells(1, 1).End(xlToRight).Column 
For x = 4 To lc 
    Cells(lr, x).Formula = "=SUM(" & Range(Cells(2, x), Cells(lr - 1, x)).Address & ")" 
Next x 
End Sub 

當然這正是R1C1的設計目的。您可以填寫整行不反覆:您希望將範圍限定,即使是主動用片材

Sub Sum_Formula_In_Lastrow() 
lr = Cells(Rows.Count, 2).End(xlUp).Row 
lc = Cells(1, 1).End(xlToRight).Column 
Range(Cells(lr, 4),Cells(lr,lc)).FormulaR1C1 = "=SUM(R2C:R" & lr -1 & "C)" 

End Sub 

一個最後一個音符。以防萬一表格發生變化。

Sub Sum_Formula_In_Lastrow() 
With ActiveSheet 
    lr = .Cells(.Rows.Count, 2).End(xlUp).Row 
    lc = .Cells(1, 1).End(xlToRight).Column 
    .Range(.Cells(lr, 4),.Cells(lr,lc)).FormulaR1C1 = "=SUM(R2C:R" & lr -1 & "C)" 
End With 
End Sub 
+0

@Scott克萊納 - 第一個代碼被成功地將公式中所需的細胞,但不正常 –

+0

@Scott克萊納 - 第二個代碼工作按我的要求,非常感謝 –

+0

@saikrishna解決了該問題與第一個代碼。請在答案上點擊複選標記,標記爲正確。 –