提问人:memo 提问时间:11/10/2023 最后编辑:Mayukh Bhattacharyamemo 更新时间:11/11/2023 访问量:26
动态列和动态行的自动求和循环工作表和循环工作簿
Autosum for dynamic columns and dynamic rows loop thru sheet and loop workbook
问:
我有一个固定的损益表,需要所有总单元格的公式。
我需要一个 vba 代码: 首先,自动求和(左边两个单元格)Jan Total 列,将公式向下复制到最后一行 total (Cost of Goods Sold Total);下一个自动求和(左边四个单元格)2 月 Total 列,将公式向下复制到最后一行 total (Cost of Goods Sold Total),根据需要循环多次。下一个自动求和总计列(1 月、2 月、3 月等的单元格值)。
接下来,在A列中,找到第一个带有“总计”的单元格,在单元格上方自动求和,复制公式并粘贴到右端。循环到最后一行(总销售成本)
最后,对工作簿中的每个工作表(x,y,z等)重复上述操作。
对于列,我手动自动求和列,复制,粘贴公式。 对于行,我得到了第一个需要自动求和的单元格。
Selection.Copy
Range(Selection, Selection.End(xlToRight)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveCell.Offset(0, -1).Range("A1").Select
Cells.Find(What:="total", After:=ActiveCell, LookIn:=xlFormulas2, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 1).Range("A1").Select
这可行,但很耗时。
答:
1赞
taller
11/11/2023
#1
这是应用公式的代码。columns
我不确定逻辑是什么.例如:总收入autosum above cells
Option Explicit
Sub AutoColSum()
Dim i As Long, aMth(1 To 12) As String
Dim lastRow As Long, c As Range, ColCnt As Long
Dim ColRng As Range, SumRng As Range
Const HEADER_ROW = 4
Const GRAND = "Grand Total"
For i = 1 To 12
aMth(i) = Format(DateSerial(2023, i, 1), "MMM yyyy Total")
Next
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
If lastRow > HEADER_ROW + 1 Then
For i = 1 To 12
Set c = Range(HEADER_ROW & ":" & HEADER_ROW + 1).Find(What:=aMth(i), LookIn:=xlValues, _
LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
If Not c Is Nothing Then
If i = 1 Then
Set SumRng = c.Offset(2)
Else
Set SumRng = Union(SumRng, c.Offset(2))
End If
ColCnt = IIf(i = 1, 2, 4)
Set ColRng = Range(Cells(HEADER_ROW + 2, c.Column), Cells(lastRow, c.Column))
ColRng.FormulaR1C1 = "=SUM(RC[-" & ColCnt & "]:RC[-1])"
End If
Next
Set c = Cells(HEADER_ROW, Columns.Count).End(xlToLeft)
If StrComp(c.Value, GRAND, vbTextCompare) = 0 Then
Set ColRng = Range(Cells(HEADER_ROW + 2, c.Column), Cells(lastRow, c.Column))
ColRng.Formula = "=SUM(" & SumRng.Address(0, 0) & ")"
End If
End If
End Sub
上一个:CSS 滚动条-装订线
评论