查找不同工作簿中的总和

时间:2015-11-16 18:52:38

标签: excel vba excel-vba

我有六本工作簿,都是一样的。每个工作簿在工作簿第二页的A2,B2,C2单元格中都有一些价值。我想要一个合并的Excel工作表,它将产生所有工作簿的sheet2的A2s,B2s,C2之和。我将所有六个工作簿放在一个新文件夹中并创建了一个新工作簿并使用了以下代码,

Sub SumWB()
  Dim Arr(2) As Long, MyWB As Workbook, fStr As String
  Const Folder = "C:\Users\satsobek\Downloads\New folder\"
  fStr = Dir(Folder)
  While (file <> "")
    Set MyWB = Workbooks.Open(Folder & fStr, , True)
    Arr(0) = Arr(0) + MyWB.Sheets(2).Range("A2").Value
    Arr(1) = Arr(1) + MyWB.Sheets(2).Range("B2").Value
    Arr(2) = Arr(2) + MyWB.Sheets(2).Range("C2").Value
    MyWB.Close
    file = Dir
  Wend
  Debug.Print Arr(0) & " - " & Arr(1) & " - " & Arr(2)
End Sub

并且想要初步检查输出是否产生总和。但我只是

0-0-0

作为输出。

有人可以帮我调试代码,找到各种工作簿中sheet2的A2,B2和C2的总和吗?

1 个答案:

答案 0 :(得分:2)

问题在于如何定义要搜索的文件。

您设置fStr = Dir(Folder)然后您说While (file <> "")由于最初未设置fileWhile Loop将立即退出(因为file无法获得设置直到第一个循环 - 从未发生过。)

fStr的所有引用更改为file,它将有效。

Sub SumWB()
  Dim Arr(2) As Long, MyWB As Workbook, fStr As String
  Const Folder = "C:\Users\satsobek\Downloads\New folder\"
  file = Dir(Folder)
  While (file <> "")

    If file <> "consol.xlsx" Then 
       Set MyWB = Workbooks.Open(Folder & file, , True)
       Arr(0) = Arr(0) + MyWB.Sheets(2).Range("A2").Value
       Arr(1) = Arr(1) + MyWB.Sheets(2).Range("B2").Value
       Arr(2) = Arr(2) + MyWB.Sheets(2).Range("C2").Value
       MyWB.Close
    End If
    file = Dir
  Wend
  Debug.Print Arr(0) & " - " & Arr(1) & " - " & Arr(2)
End Sub