求和函数选错值

时间:2017-05-04 05:49:01

标签: vba excel-vba sum worksheet-function excel

我已激活" sheet2"但即使这样,sum函数也会从" sheet1"中获取值。而不是" sheet2"。

Worksheets("sheet2").Activate
Sheets("sheet2").Cells(fl1, nf) = Application.WorksheetFunction.Sum(Range(Cells(fl1, locrng1.Column), Cells(fl1, (nf - 1))))
Sheets("sheet2").Cells(fl1, of) = Sheets("Sheet2").Cells(fl1, nf) * Sheets("Sheet2").Cells(fl1, firstlevel1.Offset(0, 1).Column)
Sheets("sheet2").Cells(fl1, rf) = Sheets("Sheet2").Cells(fl1, nf) * (1 - (Sheets("Sheet2").Cells(fl1, firstlevel1.Offset(0, 1).Column)))

1 个答案:

答案 0 :(得分:2)

您应该使用With语句了解它,它会为您节省大量的输入。

注意:您的代码中Set firstlevel1范围在哪里?可能在您将ActivateWorksheets("sheet2").Activate一起使用之前。

请记住几乎没有任何理由使用Activate,这只会减慢您的代码运行时间。

尝试以下代码:

With Worksheets("sheet2")
    .Cells(fl1, nf) = Application.WorksheetFunction.Sum(.Range(.Cells(fl1, locrng1.Column), .Cells(fl1, (nf - 1))))
    .Cells(fl1, of) = .Cells(fl1, nf) * .Cells(fl1, firstlevel1.Offset(0, 1).Column)
    .Cells(fl1, rf) = .Cells(fl1, nf) * (1 - (.Cells(fl1, firstlevel1.Offset(0, 1).Column)))
End With