首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在空行之间插入动态公式?

如何在空行之间插入动态公式?
EN

Stack Overflow用户
提问于 2019-07-19 00:42:54
回答 1查看 129关注 0票数 0

*编辑7/19 @AcsErno求和公式工作得很好,但是由于有8行,所以它在每一个空白行中输入sum。有办法在代码中输入一个以上的公式吗?

我试图复制公式(单元格(LastRow+ 2,j).FormulaLocal.)并将+1更改为+2 (以此类推),但只有第一个空白行与所需的范围相加,其他行要么求和/等于上面的行。

更新Excel

代码语言:javascript
复制
'sum inbetween blanks
    finalRow = Cells(Worksheets("page1").Rows.Count, 1).End(xlUp).Row
    For Each j In Array(12, 13, 14) 'original: For j = 1 To finalCol

        For i = finalRow + 1 To 1 Step -1
            If IsEmpty(Cells(i, j)) Then
                If IsEmpty(Cells(i - 2, j)) Then
                    firstrow = i - 1
                    LastRow = firstrow
                Else
                    LastRow = i - 1
                    firstrow = Cells(i - 1, j).End(xlUp).Row
                End If
                Cells(LastRow + 1, j).FormulaLocal = _
                    "= sum(" & Range(Cells(firstrow, j), Cells(LastRow, j)).Address(False, False) & ")"
                Cells(LastRow + 2, j).FormulaLocal = _
                    "= sum(" & Range(Cells(firstrow, j), Cells(LastRow, j)).Address(False, False) & ")"
            End If
        Next i
    Next j

    Application.ScreenUpdating = True

如果有帮助,下面是我将要使用的一些公式:

代码语言:javascript
复制
=SUMIF(P138:P158,"<>*Hold*",L138:L158)
=SUM(SUMIF(H5:H21,{"China"},L5:L21)) 
=SUM(SUMIF(H5:H21,{"Other"},L5:L21)) 
=SUM(SUMIF(O12:O28,{"*H1*"},L12:L28))
=SUM(SUMIF(O12:O28,{"H2","H2-PRESSED"},L12:L28))

连接到求和码 链接以输入空白行

我的数据是用8行空行分隔的,每个不同的星期数都有8行空白。我需要插入公式,在每周内/在空白之间对特定的事情进行求和。

行数将是动态的,因此公式也必须是动态的。我用来求和的唯一代码只有在中间有1行空行(而不是8行)时才能正常工作,而且我不知道如何添加更多的行/公式。

下面是excel的外观(简写版)

这就是我想让它看起来像什么

代码语言:javascript
复制
'insert blank columns based on change in wk
    Dim X As Long, LastRow As Long
    Const DataCol As String = "A"
    Const StartRow = 2
    LastRow = Cells(Rows.Count, DataCol).End(xlUp).Row
    For X = LastRow To StartRow + 1 Step -1
        If Cells(X, DataCol).Value <> Cells(X - 1, DataCol) Then Rows(X).Resize(8).Insert
    Next

    finalRow = Cells(Worksheets("page1").Rows.Count, 1).End(xlUp).Row
    finalCol = Cells(1, Worksheets("page1").Columns.Count).End(xlToLeft).Column
    For j = 12 To 14 'original: For j = 1 To finalCol
        For i = finalRow + 1 To 1 Step -1
            If IsEmpty(Cells(i, j)) Then
                If IsEmpty(Cells(i - 2, j)) Then
                    firstrow = i - 1
                    LastRow = firstrow
                Else
                    LastRow = i - 1
                    firstrow = Cells(i - 1, j).End(xlUp).Row
                End If
                Cells(i, j) = Application.WorksheetFunction.Sum(Range(Cells(firstrow, j), Cells(LastRow, j)))
            End If
        Next i
    Next j
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-19 06:56:11

还不清楚为什么要更改每个循环中的第一行。此外,为什么要覆盖列中的原始值。如果您有一个静态表,并且希望对下面的列进行汇总,只需标识第一行和最后一行(正如正确的做法),以及

代码语言:javascript
复制
Cells(LastRow + 1, j) = Application.WorksheetFunction.Sum(Range(Cells(firstrow, j), Cells(LastRow, j)))

或者你可以插入一个公式

代码语言:javascript
复制
Cells(LastRow + 1, j).FormulaLocal = _
          "=sum(" & Range(Cells(firstrow, j), Cells(LastRow, j)).Address(False, False) & ")" 

您还可以考虑SUMIF只添加H1和H2类别。

还不清楚为什么要总结字符串列。这没有任何意义。您可以准确地知道数字列的位置,以便指定列号。我建议备选案文1:

代码语言:javascript
复制
For j = 6 To 8

或备选案文2:

代码语言:javascript
复制
For Each j in Array (6,7,8)  ' it is more flexible
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57104204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档