将Lastrow变量转换为公式

时间:2018-11-16 01:27:32

标签: excel vba

我知道这个问题已经问了好几次,并且反应良好,但是我仍然无法解决这个问题。 找到一列的最后一行后(假设该列中没有空白值),我想在公式中使用lastrow变量

以下方法工作正常,可以将公式复制到最后一行

LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row ' obtains the last row value

Worksheets("Test").Range("i2:i" & LastRow).Formula = "=SUMPRODUCT(-- 
($B$2:$B$189<=B2)*(B2<=$D$2:$D$189))"

我需要做的是使用串联的lastrow变量     公式中的$ B $ 189和$ D $ 189引用

我尝试了以下但没有成功;

Worksheets("Test").Range("i2:i" & LastRow).Formula = "=SUMPRODUCT(-- 
(""$B$2:$B$"" & LastRow<=B2)*(B2<=""$D$2:$D$"" & LastRow))"

2 个答案:

答案 0 :(得分:1)

您在公式中的引号和连接有一些问题。

尝试

"=SUMPRODUCT(--($B$2:$B$" & LastRow & "<=B2)*(B2<=$D$2:$D$" & LastRow & "))"

答案 1 :(得分:1)

您必须更加小心自己的地址和公式。似乎您正在尝试用公式填充列I,因此您应该计算列H(第8列)-LastRow = .Cells(.Rows.Count, 8).End(xlUp).Row中的行。如果不确定如何使用VBA输入公式,请尝试使用Record Macro函数将其记录下来,并检查代码中的想法。下面的代码应该可以帮助您完成任务:

    Dim LastRow As Double

    With Worksheets("Test")
        LastRow = .Cells(.Rows.Count, 8).End(xlUp).Row
        .Range("i2:i" & LastRow).Formula = "=SUMPRODUCT(-- ($B$2:$B$" & LastRow & "<=B2)*(B2<=$D$2:$D$" & LastRow & "))"
    End With