55

数式を使用しSUM(B1..B20)て列を合計しますが、隣接する列でデータをフィルター処理すると、フィルター処理されていない行のみを反映するように合計が更新されません。どうやってこれを行うのですか?

4

3 に答える 3

100

SUBTOTAL関数を使用する必要があります。SUBTOTAL関数は、フィルターによって除外された行を無視します

式は次のようになります。

=SUBTOTAL(9,B1:B20)

関数番号9は、データ範囲B1:B20でSUM関数を使用するように指示します。

行を非表示にして「フィルタリング」している場合は、関数番号を109に更新する必要があります。

=SUBTOTAL(109,B1:B20)

関数番号109もSUM関数用ですが、非表示の行は無視されます。

于 2009-04-17T10:31:13.640 に答える
2

オートフィルターを使用して結果をフィルター処理する場合、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)) と同様にシートで呼び出すことができます。モジュールのセットアップについてサポートが必要な場合は、お知らせください。

于 2009-04-17T09:32:04.500 に答える