DSUMの代わりに、sumproduct式を使用できます。
=SUMPRODUCT((DATA!$C$2:$C$17996)*(DATA!$A$2:$A$17996="Boys")*(DATA!$B$2:$B17996>18))
上記の例では、次の行のみを含む合計列Cを作成します。列Aは「男の子」で、列Bは18より大きい。この例では、行1がヘッダー行であると想定しています。
計算を高速化するために、VBAを使用して個々のシートの計算を有効にすることができます。
計算を有効にするためのVBA:
Public Sub enableCalc(ParamArray sheetsInUse())
Dim i As Integer
For i = 0 To UBound(sheetsInUse) Step 1
sheetsInUse(i).EnableCalculation = True
Next i
End Sub
次を使用して呼び出されます:enableCalc activeworkbook.Worksheets( "Sheet1")これはactiveworkbookの計算Sheet1を有効にします
ブック内のすべてのシートの計算を無効にするためのVBA:
Public Sub finishedUse(wrkbook As Workbook)
Dim i As Integer
Dim wrkSheet As Worksheet
For Each wrkSheet In wrkbook.Worksheets
wrkSheet.EnableCalculation = False
Next wrkSheet
End Sub
使用して呼び出されます:finishedUse activeworkbookこれは、activeworkbook内のすべてのシートの計算を無効にします。
上記の方法は、[ツール]->[オプション]で[自動/手動計算]を変更しても効果がありません。