具有可变列的Vba中的SumIf函数

时间:2014-09-12 21:11:37

标签: excel-vba vba excel

我试图做一个sumif公式,但遇到了困难。首先,我想移动到A3行最后一个单元格旁边的单元格。我的第一部分似乎就是这样做的。其次,我想做一个sumif公式(sumif(范围,标准,sum_range)),其中值落在活动单元格上。但是,我似乎无法让形式发挥作用。我的列数可以改变,所以我不能保持不变。我希望范围从G1到最后一个活动列(即JW1或其他值而不是JW),我的标准是字母" M"并且我的总和范围是G3到最后一个活动列,它将匹配我第一个范围中的最后一个活动列。然后,我想自动填充到最后一行,我的第一个范围被锁定,但总和范围没有被锁定。

Sub Sumif()


Dim lastColumn As Range
Dim NextlastColumn As Range

lastColumn = Range("G1" & Column.Count).End(xlToRight).Column
NextlastColumn = Range("G3" & Column.Count).End(xlToRight).Column
Range("A3").Select
Selection.End(xlToRight).Offset(, 1).Select

ActiveCell.Formula = "=SUMIF(lastColumn,{"M"}, NextlastColumn))"


End Sub

2 个答案:

答案 0 :(得分:0)

我有一个答案,但它不是我希望它的工作方式。如果函数方式向右偏远,我做了一个正常的求和,然后做了另一个删除空白列的宏。

Sub Netpay()
' netpay Macro

lastRow = Range("A" & Rows.Count).End(xlUp).Row

    Range("KU1").Select
    ActiveCell.Value = "Net Pay"

    Sheets("Sheet1").Select
    Range("A4:D4").Select
    Selection.Copy
    Sheets("Job Cost").Select
    Range("KU3").Select
    ActiveCell.FormulaR1C1 = "=SUMIF(R1C8:R1C305,""M"",RC[-299]:RC[-2])"
    ActiveCell.FormulaR1C1 = _
        "=SUMIF(R1C8:R1C305,""M"",RC[-299]:RC[-2])-SUMIF(R1C8:R1C305,""N"",RC[-299]:RC[-2])-SUMIF(R1C8:R1C305,""S"",RC[-299]:RC[-2])-SUMIF(R1C8:R1C305,""T"",RC[-299]:RC[-2])"
    Range("KU3").Select
    Selection.AutoFill Destination:=Range("KU3:KU" & lastRow)
End Sub

然后这个

Sub DeleteBlankColumns()

Dim lColumn As Long
 Dim iCntr As Long
 lColumn = 1000
 For iCntr = lColumn To 1 Step -1
 If Cells(1, iCntr) = "" Then
 Columns(iCntr).Delete
 End If
 Next
End Sub

答案 1 :(得分:0)

我怀疑你只是想要这样的东西:

Sub Sumif()

Dim lastColumn As Long

lastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
Cells(3, lastColumn + 1).FormulaR1C1 = "=SUMIF(R1C3:R1C" & lastColumn & ",""M"",RC3:RC" & lastColumn & ")"

End Sub