在vba中添加acorss表

我有两张表,表1称为BW,表2称为原因。

在表1中,我有列AD到AW,必须单独添加。 我有sheet2表,在那里我列出AD的列名直到AW。 在工作表2的第二列我需要列AD的总和直到AW。 我尝试了下面的代码

Sub sum() Dim BWlRow As Long, CWlRow As Long, i As Long Dim Sformula As String Dim wsBW As Worksheet, wsCW As Worksheet Set wsBW = Sheets("BW"): Set wsCW = Sheets("Reasons") BWlRow = wsBW.Cells(wsBW.Rows.Count, "A").End(xlUp).Row CWlRow = wsCW.Cells(wsCW.Rows.Count, "A").End(xlUp).Row For i = 30 To 47 ' Sformula = "=SUM(AD2, BW)" With wsBW With .Range(.Cells(2, i), .Cells(BWlRow, i)) .Formula = Sformula .Value = .Value End With End With Next i End Sub 

我无法用这个成功。

从AD栏到AW,我有这样的表格 我需要有这个结果。

假设:

  1. Sheets("BW")是为什么您有来自Column AD-AW数据的表格
  2. Sheets("Reasons") Column A ,按照相同的顺序列出了Sheets("BW") Column AD-AW的标题,因此不需要匹配表头
  3. 您需要相应Sheets("Reasons")总和Sheets("Reasons") Sheets("Reasons") Column A项目Sheets("Reasons") Column B
  4. 每张纸的最后一行是基于两张纸的Column A的logging数

     Sub sum() Dim BWlRow As Long, CWlRow As Long, i As Long Dim Sformula As String Dim wsBW As Worksheet, wsCW As Worksheet Set wsBW = Sheets("BW"): Set wsCW = Sheets("Reasons") BWlRow = wsBW.Cells(wsBW.Rows.Count, "A").End(xlUp).Row CWlRow = wsCW.Cells(wsCW.Rows.Count, "A").End(xlUp).Row Sformula = "=SUM(INDIRECT(""BW!"" & CELL(""address"",OFFSET(AD$2,0,ROW()-2)) & "":"" & CELL(""address"",OFFSET(AD$10,0,ROW()-2))))" With wsCW With .Range(.Cells(2, 2), .Cells(CWlRow, 2)) .Formula = Sformula .Value = .Value End With End With End Sub