在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
我无法用这个成功。
假设:
-
Sheets("BW")
是为什么您有来自Column AD-AW
数据的表格 - 在
Sheets("Reasons")
Column A
,按照相同的顺序列出了Sheets("BW")
Column AD-AW
的标题,因此不需要匹配表头 - 您需要相应
Sheets("Reasons")
总和Sheets("Reasons")
Sheets("Reasons")
Column A
项目Sheets("Reasons")
Column B
-
每张纸的最后一行是基于两张纸的
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