excel 在特定行添加公式,且公式具有特定范围

fkaflof6  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(172)

我想问一下,是否可以在每一行中添加公式,但在该行中具有不同的特定范围

在每个黄色单元格中,我将使用以下公式添加sum:
1.植物群总数=总和(B2:B3)
1.动物总数= SUM(B5:B9)
有可能做到吗?
我尝试定义植物群总数和动物群总数,但我不知道应用vba来查找它是植物群还是动物群

rslzwgfq

rslzwgfq1#

你已经标记了vba,并且你已经要求vba来做这件事......所以这里有一个使用vba的解决方案。有些人(大多数!)可能会认为这是矫枉过正。
下面的代码在开始之前扫描工作表并寻找表的边缘。因此,除了这个表之外,A列和第1行需要为空--就像你的屏幕截图一样。
然后,它检查表中的每个单元格,如果最左边的单元格以单词“Total”结尾,它将创建一个公式,从最后一个小计向下求和到公式上方的单元格。

Sub try_this()
    
    Dim wb As Workbook, ws As Worksheet
    Dim x As Long, y as Long, lastrow As Long, lastcolumn As Long
    Dim last_subtotal as long
    
    Set wb = ActiveWorkbook
    Set ws = wb.ActiveSheet
    
    With ws
    
        lastcolumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
        lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
        
        For x = 2 To lastcolumn
            last_subtotal = 1
            For y = 2 To lastrow
                If Right(.Cells(y, 1).Value, 5) = "Total" Then
                    .Cells(y, x).Formula2 = "=sum(" & .Cells(last_subtotal + 1, x).Address & ":" & .Cells(y - 1, x).Address & ")"
                    last_subtotal = y
                End If
            Next
        Next
        
    End With

End Sub

每次运行时,它都会覆盖之前的公式,因此可以用于“纠正”由于用户在错误的位置插入行等而变得不正确的公式。如果您希望完全过度删除,您什至可以使用一个事件来确保它们一直被重写。

相关问题