Vba 为什么我要挂断这行使用SumProduct的代码?
由于某种原因,这段代码挂起在“rng3.Value…”行上。请帮忙Vba 为什么我要挂断这行使用SumProduct的代码?,vba,excel,Vba,Excel,由于某种原因,这段代码挂起在“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, last
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中循环。在这种情况下,您不需要将其读入数组,但仍可以将其用于下一个格式循环、乘法,然后将结果添加到变量中。如果第二个范围的大小应该匹配,那么您也需要将其用于该范围上的下一个循环逻辑。它们是变量,没有引号。同时调整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中循环。在这种情况下,您不需要将其读入数组,但仍可以将其用于下一个格式循环、乘法,然后将结果添加到变量中。如果第二个范围的大小应该匹配,那么您也需要在该范围上的下一个循环逻辑中使用相同的值。仍然无法使用。错误现在显示为“无法获取WorksheetFunction类的SumProduct属性”这是否意味着您不能在VBA中使用SumProduct?如果这样做不起作用,请逐行检查,当您到达该行时,请检查rng5和rng3的数据类型。你应该能够很好地使用这个函数。当您传递错误的数据类型时,经常会出现这种错误。rng3和rng5都被标注为范围。实际上,我想我找到了它。您选择的范围错误。如果您单步执行,并且每次执行.select时,请查看工作表,当您到达for语句前的行时,您会在列中倒数第二个单元格中选择找到的字符串。我想你想去掉顶部的字符串而不是底部的数字?哦,消息交叉了。。。sumproduct接受数组相乘,而不是范围相乘。如果您声明一个数组并用数字填充它,然后再过一秒钟,您就可以很好地使用它们进行sumproduct。通常,您只需声明数组并使其等于范围,但这会给您一个2d数组,sumproduct似乎不喜欢2d数组。我认为您必须使用设置的范围来填充它。我看看能不能给你一个适合你的片段,还是不行。错误现在显示为“无法获取WorksheetFunction类的SumProduct属性”这是否意味着您不能在VBA中使用SumProduct?如果这样做不起作用,请逐行检查,当您到达该行时,请检查rng5和rng3的数据类型。你应该能够很好地使用这个函数。当您传递错误的数据类型时,经常会出现这种错误。rng3和rng5都被标注为范围。实际上,我想我找到了它。您选择的范围错误。如果您单步执行,并且每次执行.select时,请查看工作表,当您到达for语句前的行时,您会在列中倒数第二个单元格中选择找到的字符串。我想你想去掉顶部的字符串而不是底部的数字?哦,消息交叉了。。。sumproduct接受数组相乘,而不是范围相乘。如果您声明一个数组并用数字填充它,然后再过一秒钟,您就可以很好地使用它们进行sumproduct。通常,您只需声明数组并使其等于范围,但这会给您一个2d数组,sumproduct似乎不喜欢2d数组。我认为您必须使用设置的范围来填充它。我看看能不能给你一个适合你的片段。