我是这个小组的新手,对VBA只知道一点。
我在电子表格中有很多工作表。报表中的数据将加载到工作表“数据”中。行数可以变化。我的宏需要将工作表“数据”中的某些列复制到另一个名为“T2”的工作表。一旦'T2'被填充,我需要将单元格'N'加到'S'并将结果放在单元格'M'中。这需要在从第3行到工作表末尾的每一行上进行。从工作表'数据'到工作表'T2'的'复制'功能工作正常,但我无法使SUM功能起作用。我得到的最近(因为它至少擦除了列“M”中单元格的内容)如下所示。注释掉了两组命令行。第一个是工作时设置的“复制”。第二个是我已经尝试过的SUM命令的变体。非常感谢您阅读本文。
Sub Copy_range()
Sheets("data").Activate
Dim LastRow As Long
Dim iRow As Long
With ActiveSheet
LastRow = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
End With
' MsgBox LastRow
'Worksheets("data").Range("A1:G" & LastRow).Copy
'Worksheets("T2").Range("E2").PasteSpecial
'Worksheets("data").Range("J1:AA" & LastRow).Copy
'Worksheets("T2").Range("N2").PasteSpecial
With Application.WorksheetFunction
Sheets("T2").Activate
For iRow = 3 To LastRow + 1
'Cells(iRow, "M") = Cells(iRow, "N") + Cells(iRow, "O") + Cells(iRow, "P") + Cells(iRow, "Q") + Cells(iRow, "R") + Cells(iRow, "S")
'ActiveSheet.Cells(iRow, "M") = Application.WorksheetFunction.Sum(Range(Cells(iRow, "N"), Cells(iRow, "S")))
'ActiveSheet.Cells(iRow, "M").Value = Sum((iRow & N):(iRow & S))
' BEST SO FAR: Worksheets("T2").Cells(iRow, "M").Value = Application.Sum(Range(Cells(iRow, "N"), Cells(iRow, "S")))
Worksheets("T2").Cells(iRow, "M").Value = Application.Sum(Range(Cells(iRow, "N"), Cells(iRow, "S")))
'Worksheets("T2").Cells(iRow, "M").Value = "=SUM(" & Range(Cells(iRow, "N"), Cells(iRow, "S")) & ")"
'Range("A1").Formula = "=SUM(" & Range(Cells(2, 1), Cells(3, 2)).Address(False, False) & ")"
Next iRow
End With
End Sub
答案 0 :(得分:0)
更换
Worksheets("T2").Cells(iRow, "M").Value = Application.Sum(Range(Cells(iRow, "N"), Cells(iRow, "S")))
与
Worksheets("T2").Cells(iRow, "M").FormulaR1C1 = "=SUM(RC[1]:RC[6])"
我认为应该有用。
现在不在我的工作计算机上,所以我无法测试它,但是。我怀疑你问题的一部分是你没有在你的等号的右边指定你想要求和的单元格的工作表。就个人而言,我喜欢始终明确说明我正在使用的工作表和范围,以避免混淆。