excel - 如何创建一个对任意数量的行进行小计并将总计放在正确的行中的宏?
问题描述
我每个月都会做一次合并发票,我们从在线同步和格式化。我想自动化格式,我有;但是,我无法将行从一张发票更改为下一张,因为它们永远不会相同。一个可能是 195 行,另一个可能是 320 行。
例如,在这部分中,我需要在 D 列中排序,但并不总是到第 272 行。我怎样才能让它搜索到需要的任何点?
ActiveWorkbook.Worksheets("invoicedetails").Sort.SortFields.Add Key:=Range( _
"D2:D272"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveCell.Offset(0, -16).Range("A1:P121").Select
Selection.Subtotal GroupBy:=4, Function:=xlSum, TotalList:=Array(16), _
Replace:=True, PageBreaks:=False, SummaryBelowData:=True
ActiveCell.Offset(0, 3).Columns("A:A").EntireColumn.Select
Selection.AutoFilter
Selection.AutoFilter
ActiveSheet.Range("$D$1:$D$181").AutoFilter Field:=1, Criteria1:=Array( _
"3821463 Total", "3827540 Total", "3827541 Total", "3827543 Total", "3827544 Total" _
, "3827556 Total", "3827558 Total", "3827559 Total", "3827560 Total", _
"3827562 Total", "3827563 Total", "3827564 Total", "3827576 Total", "3827577 Total" _
, "3827579 Total", "3827580 Total", "3827581 Total", "3827583 Total", _
"3827584 Total", "3827596 Total", "3848953 Total", "3848980 Total", "3850398 Total" _
, "3850421 Total", "3863863 Total", "3863864 Total", "3904249 Total", "Grand Total") _
, Operator:=xlFilterValues
这是当我对总计进行小计并且总计打印大约 30 行时记录的内容
解决方案
只要 D 列内部没有空格,您就可以使用Range("D1").End(xlDown)
(End.Down) 之类的东西,相当于按 Ctrl + Down) 这将返回 Excel 表格中包含数据的最后一个单元格。
Range("D1").End(xlDown).Row
将返回您需要使用的行号
如果 D 列中确实有空单元格,您还可以使用每行都有数据的标识符列来获取该行。
然后,您可以通过简单地连接它来更改范围以包含该行,如下所示:Range("D1:D" & Range("D1").End(xlDown))
这不是最优雅的解决方案,但对我来说,它对于类似问题来说是最可靠的。您也可以查看 CurrentRegion 和 UBound 属性,它们也可以提供帮助,但正如我所说,我发现 End 工作得最好
推荐阅读
- dataset - 如何对数据集标签进行分类以进行情感分析
- swift - Dow Swift 的 UIColorWell 能否提供 selectedColor 的十六进制表示?
- ef-code-first - .NET 6 - 带有 EFCore 的 WebAPI - 生成迁移时出错
- amazon-web-services - AWS Glue 中的更改数据捕获
- reactjs - React 侧边栏菜单
- javascript - 以页的形式划分数组时遗漏的元素
- javascript - 查询返回生产中的空字段
- html - 如何将 ul 并排放置?
- r - 如何在 R 中创建处理不存在的对象的 n 个用户输入对象(即 `...` )的列表?
- java - 构建战争文件:java.sql.SQLInvalidAuthorizationSpecException:用户'root'@'localhost'的访问被拒绝