Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用excel formua自动汇总所有工作表_Excel_Vba_Sum - Fatal编程技术网

如何使用excel formua自动汇总所有工作表

如何使用excel formua自动汇总所有工作表,excel,vba,sum,Excel,Vba,Sum,我的工作簿包含多个工作表。我想要一个函数,它显示当前工作表的自动求和以及以前的非全部。例如,如果我在表1上,并且单元格“E12”中的值为1,则我将写入函数=自动求和(E12),该函数将以E13=1的形式显示结果。然后,在表2中,如果相同的单元格范围E12=2,并且我应用了功能“=autosum(E12),则它应显示在表2中E13=3。但是当我返回表1时,它应显示为与1相同,而不应显示全部合计 我正在使用此函数,但它在所有工作表上显示相同的总数。函数如下所示 Function AutoSu

我的工作簿包含多个工作表。我想要一个函数,它显示当前工作表的自动求和以及以前的非全部。例如,如果我在表1上,并且单元格“E12”中的值为1,则我将写入函数=自动求和(E12),该函数将以E13=1的形式显示结果。然后,在表2中,如果相同的单元格范围E12=2,并且我应用了功能“=autosum(E12),则它应显示在表2中E13=3。但是当我返回表1时,它应显示为与1相同,而不应显示全部合计

我正在使用此函数,但它在所有工作表上显示相同的总数。函数如下所示

    Function AutoSum(rng As Range) As Variant
    AutoSum = ActiveSheet.Range("E12").Value
    Application.Volatile True
    For Each WS In Worksheets
        If Not WS Is Application.ThisCell.Parent Then
            AutoSum = AutoSum + WS.Range(rng.Address)
        End If
    Next
End Function
图纸布局如下所示

    Function AutoSum(rng As Range) As Variant
    AutoSum = ActiveSheet.Range("E12").Value
    Application.Volatile True
    For Each WS In Worksheets
        If Not WS Is Application.ThisCell.Parent Then
            AutoSum = AutoSum + WS.Range(rng.Address)
        End If
    Next
End Function


您的所有代码都是正确的,只需要很少的更改

AutoSum = ActiveSheet.Range("E12").Value

或者按照youtube视频lin使用以下代码

结束功能

考虑:

Public Function AutoSum(rng As Range) As Variant
    Application.Volatile
    Dim addy As String, ws As Worksheet, wName As String
    Dim wb As Workbook
    
    addy = rng.Address
    wName = rng.Parent.Name
    Set wb = rng.Parent.Parent
    AutoSum = 0
    
    For Each ws In wb.Sheets
        AutoSum = AutoSum + ws.Range(addy)
        If ws.Name = wName Then Exit Function
    Next ws
    
End Function

这将对所有工作表中的给定单元格加总,包括包含公式的工作表。

Brother我的代码工作正常,生成了相同的结果,但我正在寻找代码中的修改,以便每个工作簿显示其工具和以前的工具。例如,sheet1应仅显示其总sheet2它和以前的总数一样。
Public Function AutoSum(rng As Range) As Variant
    Application.Volatile
    Dim addy As String, ws As Worksheet, wName As String
    Dim wb As Workbook
    
    addy = rng.Address
    wName = rng.Parent.Name
    Set wb = rng.Parent.Parent
    AutoSum = 0
    
    For Each ws In wb.Sheets
        AutoSum = AutoSum + ws.Range(addy)
        If ws.Name = wName Then Exit Function
    Next ws
    
End Function