同一行宏中的小计和计数

Posted

技术标签:

【中文标题】同一行宏中的小计和计数【英文标题】:Subtotal and Count in Same Row Macro 【发布时间】:2014-08-15 15:16:04 【问题描述】:

我有一份我正在尝试生成的报告,该报告显示了在政策之外进行的贷款,按信贷员分组,以及在政策之外提供的美元金额的小计。我也想计算贷款的数量,但我无法让计数与小计出现在同一行。

 Range("A2:K2", ActiveCell.End(xlDown)).Select
Selection.CurrentRegion.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(1, 7, 8), _
    Replace:=True, PageBreaks:=False, SummaryBelowData:=True
Selection.CurrentRegion.Subtotal GroupBy:=2, Function:=xlCount, TotalList:=Array(4), _
    Replace:=False, PageBreaks:=False, SummaryBelowData:=True

这会在第 1、7 和 8 列中产生我想要的小计,但在小计上方插入了一行,并且计数显示在小计上方一行的第 4 列中。最后,我在真/假陈述中尝试了不同的变体。我还尝试在每笔贷款旁边添加一个 1 的“虚拟”列,但是我想隐藏“虚拟”列,以便报告可以放在一张纸上,我不知道如何抵消结果小计,因为不同信贷员在政策范围之外提供的贷款数量在不同时期会有所不同。有没有办法做到这一点?

【问题讨论】:

谢谢,但我该怎么做呢?根据我周末阅读的内容,我需要类似于:Dim rng As Range Set rng = ("D3:D35565") For Each cCell In rng If rng.Cells.Formula Like "SUBTOTAL(9,*:*)" Then ActiveCell.Formula = SUBTOTAL(2,*:*) End If Next cCell 但是,我的语法不正确。这是我应该如何解决这个问题吗? (编译器特别不喜欢SUBTOTAL(2,*:*)表达式中的通配符,但我只想改变SUBTOTAL(9部分,就像你说的那样。 就是这样!我需要使用 subtotal(3 代替,但它起作用了!我看不到我可以在哪里投票 @pnuts,或者我可能没有足够的声誉,但我希望任何寻找这个问题的人都知道这就是答案! 如果你有时间回答,我会选择它作为正确的。同时,我在下面引用并发布了您的工作,以防其他人也在寻找相同的东西。 【参考方案1】:

正如 pnuts 在上面的 cmets 中解决的那样,为了让我的报告在适当的列(本例中为 1、7 和 8)中包含小计,并在相应列中(本例中为第 4 列)中包含计数,以下代码效果很好:

Range("A2:K2", ActiveCell.End(xlDown)).Select
Selection.CurrentRegion.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(1, 7, 8), _
    Replace:=True, PageBreaks:=False, SummaryBelowData:=True
Columns(4).Replace What:="subtotal(9", Replacement:="subtotal(3", LookAt:=xlPart

请记住,如果您想计算某个范围内的所有单元格,请使用 CountA 函数:“subtotal(3”)。如果您只需要计算包含数字的单元格(例如,不包括逻辑值、文本,错误值等)然后使用Count函数:“subtotal(2”。

再次感谢pnuts给出正确答案!

【讨论】:

以上是关于同一行宏中的小计和计数的主要内容,如果未能解决你的问题,请参考以下文章

使用自动填充和清除匹配相邻列 - 宏中的错误提示

有没有办法检查左侧单元格的值并将计数加两个,除非在同一行的另一个单元格中输入了一个值?

在组中的所有单元格中放置小计值

将单元格数据复制到宏中以避免更新宏

Tableau 插入自定义的小计行

在R中的同一行上打印字符串和变量内容