0

Excel 2003 を使用して、個々の条件の合計を見つけようとしています。私は現在この式を使用しており、正常に機能しています。

データ A1:G1776 はデータベースです --- データ C1 - 合計したい列です --- そして F4:F5 は、一致する行の基準を設定した列です。

=DSUM(DATA!$A$1:$G$17996,DATA!$C$1,$F$4:F5)

私が直面している問題は、ファイル サイズが 5 MB を超えていることです。これは、他の人に電子メールで送信しようとすると非常に大きくなります。

ファイルサイズを縮小し、ドキュメントの速度を向上させながら、その式を複製する方法について何か提案はありますか? ピボットテーブルを使用したくない

4

1 に答える 1

0

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内のすべてのシートの計算を無効にします。

上記の方法は、[ツール]->[オプション]で[自動/手動計算]を変更しても効果がありません。

于 2012-07-30T12:07:06.260 に答える