繁体   English   中英

VBA-在公式中使用Columns()

[英]VBA - Using Columns() in Formula

现在我正在将此代码用于SumIf公式:

Public Sub CommandButton1_Click()

    Dim lastrow As Long

    lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1

    i = 4
    calc = "=SUM(SUMIF($A$2:$A$22,N3,$B$2:$B$22),"
    Do Until i = lastrow + 1
        calc = calc & "SUMIF($A$2:$A$22,N" & i & ",$B$2:$B$22),"
        i = i + 1
    Loop
    ActiveSheet.Range("N" & lastrow + 1 & ":BI" & lastrow + 1).Value = calc & ")"
End Sub 

我现在的问题是,有没有一种方法可以更改calc = calc&SUMIF($ A $ 2:$ A $ 22, N“ &i&”,$ B $ 2:$ B $ 22)的条件部分,从N列跳到M列,直到BI列?

实际上,我的代码工作正常,但是如果我在表中移动了一些单元格,它也会移动公式。 如果我添加$符号,它仅使用列N。

我试图添加它,但是没有用

i = 4
lCol = 14
calc = "=SUM(SUMIF($A$2:$A$22,N3,$B$2:$B$22),"
Do Until i = lastrow + 1
    calc = calc & "SUMIF($A$2:$A$22," & Columns(i, lCol) & ",$B$2:$B$22),"
    i = i + 1
    lCol = lCol + 1
Loop

我希望我的意思很清楚,有人可以帮助我。

尝试创建一个单元并使用其地址。

calc = calc & "SUMIF($A$2:$A$22," & Cells(i, lCol).address(0, 0) & ",$B$2:$B$22),"

@Jeeped:

我试图更改.address的语法,但仍然无法解决我的问题。 我希望通过以下图片可以更好地解释它。

在第一张图片中,您可以看到我的表格外观以及公式中使用了哪些单元格。

在此处输入图片说明

在第二张图片中,我向左移动了一些单元格,不幸的是公式也移动了。 这就是我要防止的

在此处输入图片说明

如果我使用.Address(0,1),则每一列的公式如下:

= SUM(SUMIF($ A $ 2:$ A $ 22; $ N3; $ B $ 2:$ B $ 22),SUMIF($ A $ 2:$ A $ 22; $ N4; $ B $ 2:$ B $ 22 ...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM