Excel vba使用来自不同工作簿的数据进行计算

时间:2013-12-02 19:37:59

标签: excel-vba vba excel

我有两个工作簿,我想从中提取数据,然后在总数据上运行excel函数,并将结果存储在第三个工作簿中。另外,我不知道我将使用哪个列名或行号,因此我需要对我的数据范围进行推广。我试图在下面的代码中执行此操作,但我收到错误438,对象不支持此属性。

我还想将计算值存储为值而不是公式,因为在我进行计算之后,我想重新格式化原始的excel文件(定期插入标题行),因此公式将不再起作用。

Sub gathering()

Dim var1 As Double

Dim var2 As Double

Dim var3 As Double



Set wb1 = Workbooks.Open("C:\Users\wb459349\Desktop\test1.xlsx")
Set wb2 = Workbooks.Open("C:\Users\wb459349\Desktop\test2.xlsx")


With wb1


FinalColumn = .Worksheets("Sheet1").Cells(1, .Worksheets("Sheet1").Columns.Count).End(xlToLeft).Column
        FinalRow = .Worksheets("Sheet1").Cells(.Worksheets("Sheet1").Rows.Count, 1).End(xlUp).Row
         For j = 1 To FinalColumn
                        If .Worksheets("Sheet1").Cells(1, j).Value = "Effec.Date" Then
                                Effective_Date_Column = j
                            ElseIf .Worksheets("Sheet1").Cells(1, j).Value = "FolderId" Then
                                FolderId_column = j
                            ElseIf .Worksheets("Sheet1").Cells(1, j).Value = "FolderNotional USD" Then
                                FolderNotionalUSD_column = j
                            ElseIf .Worksheets("Sheet1").Cells(1, j).Value = "Spread" Then

                                Spread_column = j
                        End If
         Next j

.range1 = .Worksheets("Sheet1").Cells(2, FolderNotionalUSD_column).Address & ":" & .Worksheets("Sheet1").Cells(FinalRow, FolderNotionalUSD_column).Address

var1 = Application.WorksheetFunction.Sum(.range1)
End With


With wb2

.range2 = .Worksheets("Sheet1").Cells(2, Spread_column).Address & ":" & .Worksheets("Sheet1").Cells(FinalRow, Spread_column).Address
 var2 = Application.WorksheetFunction.Sum(.range2)

End With

var3 = var1 * var2



ThisWorkbook.Worksheets("sheet1").Cells(1, 1).Value = var3


End Sub

修改

好的,现在正在运作。这是我改变的:

这是原创

    .range1 = .Worksheets("Sheet1").Cells(2, FolderNotionalUSD_column).Address & ":" & .Worksheets("Sheet1").Cells(FinalRow, FolderNotionalUSD_column).Address
var1 = Application.WorksheetFunction.Sum(.range1)

这是当前的工作版本

range1 = .Worksheets("Sheet1").Cells(2, FolderNotionalUSD_column).Address & ":" & .Worksheets("Sheet1").Cells(FinalRow, FolderNotionalUSD_column).Address
var1 = Application.WorksheetFunction.Sum(Range(range1))

0 个答案:

没有答案