为什么我在这个使用SumProduct的代码行上挂了?

出于某种原因,这部分代码挂在“rng3.Value …”行上。 请帮忙。

Set rng4 = ActiveSheet.Columns("D").Find(strFind, , xlValues, xlWhole) rng4.Select Set lastCell2 = ActiveSheet.Cells(ActiveSheet.Rows.Count, (4)).End(xlUp) lastCell2.Select Set rng5 = Range(rng4, lastCell2) rng5.Select Set rng5 = rng5.Offset(0, 0).Resize(rng5.Rows.Count - 1) rng5.Select For i = 0 To 29 Worksheets("Resource Plan").Select Set rng1 = ActiveSheet.Columns("J").Find(strFind, , xlValues, xlWhole) rng1.Select Set lastCell = ActiveSheet.Cells(ActiveSheet.Rows.Count, (10)).End(xlUp) lastCell.Select Set rng2 = Range(rng1, lastCell) Set rng2 = rng2.Offset(4, i).Resize(rng2.Rows.Count - 5, rng2.Columns.Count) rng2.Select Set rng3 = Sheets("Results").Cells(18, (i + 7)) 'rng3.Value = Worksheets("Resource Plan").Evaluate("Sum(," & rng2.Address(0, 0) & ")") rng3.Value = WorksheetFunction.SumProduct("rng5", "rng3") Worksheets("Results").Select Next i 

他们是变数,没有引号。 还要调整rng5来放下标题。 然后将其读入一个数组。 目前您正在使用一个范围和sumproduct需要一个数组。

 Set rng5 = rng5.Offset(1, 0).Resize(rng5.Rows.Count - 1) For Each cell In rng5 i = i + 1 aRng5(i) = cell.Value Next cell rng3.Value = WorksheetFunction.SumProduct(rng5, rng3) 

主要的问题似乎是目前数组的维数不匹配。 你不能在数组中产生单个单元。 如果你想通过一个值来复制每个单元格,然后将它们加在一起,你可能会最终循环通过rng5。 在这种情况下,您不需要将其读入数组,但仍然可以将其用于下一个格式,以循环,乘法,然后将结果添加到variables中。 如果第二个范围应该匹配的大小,那么您将需要使用该范围也为该范围的下一个循环逻辑。