Microsoft ExcelでVBAを使用して、すべてのワークシートの範囲内のセルを数える
組み込みのCOUNT()またはCOUNTA()でこれを実現することが可能です
機能しますが、ワークブックに多くのワークシートが含まれている場合、または新しいワークシートをワークブックに頻繁に追加する場合、これは大きな作業になる可能性があります。
複数のワークシートから範囲をカウントするには、次のようなCOUNTA関数を使用できます。
COUNTA(Sheet1:Sheet10!A1:A100)
上記の数式は、ワークシートSheet1からSheet10のA1:A100の範囲にあるすべての非空白セルをカウントします。
以下のカスタム関数を使用すると、ワークブック内のすべてのワークシートから範囲内のセルを簡単にカウントできます。
Function CountAllWorksheets(InputRange As Range, InclAWS As Boolean) As Double ' counts the content of InputRange in all worksheets in the workbook Dim ws As Worksheet, TempCount As Long Application.Volatile True ' calculates every time a cell changes TempCount = 0 For Each ws In ActiveWorkbook.Worksheets If InclAWS Then ' include the active worksheet TempCount = TempCount + _ Application.WorksheetFunction.Count(ws.Range(InputRange.Address)) Else ' exclude the active worksheet If ws.Name <> ActiveSheet.Name Then ' not the active worksheet TempCount = TempCount + _ Application.WorksheetFunction.Count(ws.Range(InputRange.Address)) End If End If Next ws Set ws = Nothing CountAllWorksheets = TempCount End Function
この関数は、組み込みのワークシート関数と同じように使用されます。
Excel 5/95では、変数InputRangeをRangeではなくVariantとして定義する必要があります。
この関数は、ブック内のすべてのワークシートで使用する他のワークシート関数で使用するために簡単に適合させることができます。