2013-07-24 3 views
5

グローバル範囲と可視(フィルタリングされた)範囲の合計数& sumifをフィルタリングして表示する必要があります。VBAの可視行の合計を取得

AtmCurrentCount = Range("X3:X4533").SpecialCells(xlCellTypeVisible).Count 
AtmCurrentSum = ??? 

でした誰の助け:私は、フィルタリングの範囲の数を表示することができています。この部分では

AtmCount = Application.WorksheetFunction.CountIf(Range("X3:X4533"), ">0") 
AtmSum = Application.WorksheetFunction.Sum(Range("X3:X4533")) 

:次のコードで、私は世界の範囲の数& SUMIFを表示することができています私は入手する目に見える行の合計

+0

これは理想的な解決策ではないかもしれませんが、使用した範囲を新しいシートにコピーすると、フィルタリングされたデータのみがコピーされ、必要な計算を簡単に実行できます。 – Ripster

+0

データとしてリップスターも変更されます頻繁に。 – CustomX

答えて

6

これは、あなたが望むことをします。 visibleTotalを合計の適切なデータ型に設定し、wsとrngオブジェクトをワークブックにあるものと一致するように変更します。あなたが唯一のフィルタリング範囲の一部を合計したい場合には

Sub SumVisible() 
    Dim ws As Worksheet 
    Dim rng As Range 
    Dim visibleTotal As Long 

    Set ws = ThisWorkbook.Sheets("Sheet1") 
    Set rng = ws.Range("B1:B7") 

    ws.AutoFilterMode = False 
    rng.AutoFilter field:=1, Criteria1:=5 

    visibleTotal = Application.WorksheetFunction.Sum(rng.SpecialCells(xlCellTypeVisible)) 
    ' print to the immediate window 
    Debug.Print visibleTotal 
End Sub 

(例えば、あなたが列Aにフィルタリングするが、B列の合計をしたい)、この質問と回答を参照してください。Copy/Paste/Calculate Visible Cells from One Column of a Filtered Tableを。

+0

作品は魅力的です:) – CustomX

2

あなただけではなく

AtmCurrentSum = application.worksheetfunction.subtotal(9, Range("X3:X4533")) 
+0

あなたのコードサンプルには情報がありませんか? – CustomX

+0

変数を考えてみました;-) – JosieP

+0

変数ではありません;)あなたの関数 'WorksheetFunction ...を追加したとき、コードにエラーが発生しました – CustomX

関連する問題