公式 =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 我似乎没有找到一个可行的公式。
我希望满足条件的所有工作表的单元格值之和
如果您必须处理设计如此糟糕的电子表格,并且带有内置函数的公式太麻烦(而且也很糟糕),那么只需编写自己的函数即可。例如,像这样:
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")
并得到结果。