autofilter vba之后的列总和

时间:2016-05-19 21:08:14

标签: excel vba excel-vba

我正在努力:
- 打开文件 "perpetual.xlsx"
- 根据标准过滤列 - 获取另一列的总和并将其输入我在另一列的原始文件中。我的原始文件如下图所示 - 继续从步骤2到原始文件的最后一行循环。

enter image description here这是我的代码:

Private Sub CommandButton1_Click()
Dim RowLast As Long
Dim tempLast As Long
tempLast = ThisWorkbook.Sheets("combine BOMs").Cells(Rows.Count, "B").End(xlUp).Row
Dim perporig As Workbook

'ThisWorkbook.Sheets("combine BOMs").Cells(1, 9).Value = here
For i = 5 To tempLast
    Set perporig = Workbooks.Open("\\Etnfps02\vol1\DATA\Inventory\Daily tracking\perpetual.xlsx", UpdateLinks:=False, ReadOnly:=True)
    With perporig.Sheets("perpetual")
        .AutoFilterMode = False
        RowLast = .Cells(Rows.Count, "A").End(xlUp).Row
        .Range("A3:J" & RowLast).AutoFilter field:=1, criteria:=Range("B" & i).Value
        ThisWorkbook.Sheets("combine BOMs").Cells(i, 5).Value = Application.WorksheetFunction.Sum(Columns("H:H"))
        .AutoFilterMode = False
    End With
    perporig.Close savechanges:=False
    ThisWorkbook.Sheets("myperpetual").Activate
Next i
Cells(1, 9).Value = here
End Sub

代码只运行到第9行,即:设置perporig = ....然后由于某种原因停止。文件“perpetual.xlsx”打开,代码停止。如果我删除第6行中的撇号,则代码似乎根本不运行。

编辑代码: 谢谢你的建议。不知道在哪里放我的代码,所以在这里。同样,代码只运行到第7行,即:Set perporig = ....之后由于某种原因停止。文件“perpetual.xlsx”打开,代码停止。如果我删除第6行中的撇号,代码似乎根本不运行。请帮忙。

Private Sub CommandButton1_Click()
Dim RowLast As Long
Dim tempLast As Long
tempLast = ThisWorkbook.Sheets("combine BOMs").Cells(Rows.Count, "B").End(xlUp).Row
Dim perporig As Workbook
'ThisWorkbook.Sheets("combine BOMs").Cells(1, 9).Value = "here"
Set perporig = Workbooks.Open("\\Etnfps02\vol1\DATA\Inventory\Daily tracking\perpetual.xlsx", UpdateLinks:=False, ReadOnly:=True)
For i = 5 To tempLast
    With perporig.Sheets("perpetual")
        .AutoFilterMode = False
        RowLast = .Cells(Rows.Count, "A").End(xlUp).Row
        .Range("A3:J" & RowLast).AutoFilter field:=1, criteria:=ThisWorkbook.Sheets("combine BOMs").Cells(i, 2).Value
        ThisWorkbook.Sheets("combine BOMs").Cells(i, 5).Value = Application.WorksheetFunction.Sum(Range("H:H").SpecialCells(xlCellTypeVisible))
        .AutoFilterMode = False
    End With
Next
perporig.Close savechanges:=False
ThisWorkbook.Sheets("combine BOMs").Activate
Cells(1, 9).Value = "here"
End Sub

2 个答案:

答案 0 :(得分:1)

7号线不会运行的原因是因为你没有在这里定义什么'是。如果你想在那个单元格中放置文本,你应该用=" here"结束这一行,这样该值就是一个字符串。

正如另一位评论者所说。您不应该在循环中打开工作簿。首先打开工作簿,然后打开本书(perporig)进行循环操作。

答案 1 :(得分:0)

终于搞定了,这是一个简单的错误,除了其他人的建议外,我还有mentioend标准:=而不是标准1:=
愚蠢的错误。