我试图根据每张纸中的条件对多张纸中的单元格进行求和。使用 libreoffice calc

问题描述 投票:0回答:1

公式 =SUM(IF($Sheet1.C16=main.B12,$Sheet1.M9,0)+IF($Sheet2.C16=main.B12,$Sheet2.M9,0)) 有效,但列出一百张纸不可行我尝试过 =SUM(IF($Sheet1.C16=main.B12,$Sheet1.M9,0):IF($Sheet2.C16=main.B12,$Sheet2.M9,0)) 和许多变体sumifs 和 sumif 我似乎没有找到一个可行的公式。

我希望满足条件的所有工作表的单元格值之和

libreoffice-calc
1个回答
0
投票

如果您必须处理设计如此糟糕的电子表格,并且带有内置函数的公式太麻烦(而且也很糟糕),那么只需编写自己的函数即可。例如,像这样:

Option Explicit 
Function Sheets_SUMIF(vCriterion As Variant, sCellCompare As String, sCellToSum As String, Optional sExcludeSheet As String) As Double 
Dim oSheets As Variant, oSheet As Variant, aTemp As Variant, aRes As Double 
    If isMissing(sExcludeSheet) Then sExcludeSheet = ""
    For Each oSheet In ThisComponent.getSheets()
        If StrComp(oSheet.getName(), sExcludeSheet, 0) <> 0 Then
            aTemp = oSheet.getCellRangeByName(sCellCompare).getDataArray()
            If aTemp(0)(0) = vCriterion Then aRes = aRes + oSheet.getCellRangeByName(sCellCompare).getValue()
        EndIf 
    Next oSheet
    Sheets_SUMIF = aRes
End Function

这并不比在一个公式中列出一百张纸的名称长多少。 称之为

=SHEETS_SUMIF($main.B12;"C16";"M9";"main")
并得到结果。

© www.soinside.com 2019 - 2024. All rights reserved.