【问题标题】:Excel VBA : add calculation to every tables in same sheetExcel VBA:将计算添加到同一工作表中的每个表
【发布时间】:2017-04-15 22:31:59
【问题描述】:

这是here的更新版本。

Desired output

Table

感谢@sktneer 帮助我解决了第一部分的问题,现在我想

  1. 调整代码,因为我在表名和表名之间添加了几行(行) 表,也添加了列
  2. 将公式添加到表格右侧的表格名称

我在“尝试失败”图像中包含了我对先前答案中的代码(作为 cmets)的一些假设。
请问各位大神说的对不对?
因为我不完全理解代码是如何工作的,即使我在声明中搜索过。

【问题讨论】:

    标签: vba excel excel-formula


    【解决方案1】:

    试试下面的代码。 下面的代码在进行 Total 摘要时不会插入类的名称。 但是代码将为您在所需输出中显示的每个表创建一个摘要权,前提是工作表上每个表的右侧有足够的空间用于摘要,否则代码将覆盖任何在那里找到的数据。

    Sub InsertSummaryForEachTable()
    Dim ws As Worksheet
    Dim rng As Range
    Dim i As Integer, c As Long
    
    Application.ScreenUpdating = False
    
    Set ws = ActiveSheet
    
    For Each rng In ws.UsedRange.SpecialCells(xlCellTypeConstants, 3).Areas
        If rng.Rows.Count > 1 And rng.Columns.Count = 4 Then
            c = rng.Cells(1, rng.Columns.Count).Column + 2
            Cells(rng.Rows(1).Row, c).Value = "Total"
            For i = 2 To rng.Rows.Count
                rng.Rows(i).Cells(1).Select
                Cells(rng.Rows(i).Row, c) = rng.Rows(i).Cells(1)
                Cells(rng.Rows(i).Row, c + 1) = "=SUM(" & rng.Rows(i).Address & ")"
            Next i
        End If
    Next rng
    Application.ScreenUpdating = True
    End Sub
    

    【讨论】:

    • 嗨@sktneer,我已经尝试了上面的代码,它不起作用(使用旧表)。表保持不变。另外,对于没有更新所需的输出表示歉意(正如我所提到的,我从上一个问题中添加了一些列和行,然后我尝试从您的代码中进行更改,但尝试失败)
    • 在每个表周围插入一个空白行和一个空白列,代码将起作用。该代码假定每个表由一个空白行和一个空白列分隔。如果表格上方有一些文字,请插入一个空白行。
    • 嗨@sktneer,我已经上传了我现在在工作表上的输出。我得到了每个表的总数,但没有得到最后一列的总数(使用之前提供的代码)。而且我认为我实际上在列之间有空白列?
    • 在展示样本数据时应该保持一致。之前您展示了每个表将有四列名称和三个主题。在您的新示例中有四列。
    • 嗨@sktneer,很抱歉没有为这个问题更新我想要的输出图像。之前发布的图像是我在上一个问题中试图得到的。但是由于您建议我创建一个新问题,所以我创建了这个问题而没有获得以前所需的输出。总而言之,我创建这个问题的原因是为了改进我的失败尝试代码(如上一个问题所示)并从表中获取所需的输出。再次,我为造成这样的混乱道歉。
    猜你喜欢
    • 1970-01-01
    • 2015-04-12
    • 2011-08-13
    • 2020-02-29
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多