SUM(B1..B20)
式を使用して列を合計しますが、隣接する列でデータをフィルター処理すると、合計はフィルター処理されていない行のみを反映するように更新されません。これをどのように行うのですか?
[〜#〜]小計[〜#〜]関数を使用する必要があります。 [〜#〜] subtotal [〜#〜]関数は、フィルターによって除外された行を無視します。
数式は次のようになります。
=SUBTOTAL(9,B1:B20)
関数番号9、[〜#〜] sum [〜#〜]データ範囲の関数B1:B20。
行を非表示にすることで「filtering」の場合、関数番号は109に更新する必要があります。
=SUBTOTAL(109,B1:B20)
関数番号109は、[〜#〜] sum [〜#〜]も機能しますが、非表示の行は無視されます。
自動フィルターを使用していない場合(つまり、手動で非表示の行がある場合)、AGGREGATE
の代わりに SUBTOTAL
関数を使用する必要があります。
オートフィルターを使用して結果をフィルター処理する場合、Excelは結果を非表示にすることすらしません。行の高さをゼロに設定するだけです(少なくとも2003年まで。2007年は不明)。
したがって、次のカスタム関数を使用すると、必要なことを行うためのスターターが提供されます(整数でテストされ、他の何も遊んでいない)。
Function SumVis(r As Range)
Dim cell As Excel.Range
Dim total As Variant
For Each cell In r.Cells
If cell.Height <> 0 Then
total = total + cell.Value
End If
Next
SumVis = total
End Function
編集:
ブックにモジュールを作成して関数を挿入する必要があります。その後、他の関数(= SumVis(A1:A14))と同様にシート上でモジュールを呼び出すことができます。モジュールのセットアップにヘルプが必要な場合は、お知らせください。