Получить сумму видимых строк в VBA

Вопрос:Я хочу иметь возможность фильтровать и отображать count и sumif глобального диапазона и видимого (фильтрованного) диапазона. В следующем коде я могу отобразить счетчик и сумма глобального диапазона: AtmCount = Application.WorksheetFunction.CountIf(Range("X3:X4533"), ">0") AtmSum = Application.WorksheetFunction.Sum(Range("X3:X4533")) С этой частью я могу отображать счетчик отфильтрованного диапазона: AtmCurrentCount = Range("X3:X4533").SpecialCells(xlCellTypeVisible).Count AtmCurrentSum = ??? Может ли кто-нибудь помочь мне получить

Вопрос:

Я хочу иметь возможность фильтровать и отображать count и sumif глобального диапазона и видимого (фильтрованного) диапазона. В следующем коде я могу отобразить счетчик и сумма глобального диапазона:

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

С этой частью я могу отображать счетчик отфильтрованного диапазона:

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

Может ли кто-нибудь помочь мне получить Сумма только видимых строк?

Лучший ответ:

Это сделает то, что вы хотите. Установите 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), см. этот вопрос и ответ: Копировать/Вставить/Вычислить видимые ячейки из одного столбца фильтрованной таблицы.

Ответ №1

если вам нужна только сумма, а не sumif

AtmCurrentSum = application.worksheetfunction.subtotal(9, Range(«X3:X4533»)) Ответ №2

Я просто наткнулся на этот сайт.

Основная формула   x = Application.WorksheetFunction.Subtotal( “номер кода”, “диапазон” )
Формула, которую вы хотите,   x = Application.WorksheetFunction.Subtotal(109, range (x, y))

Оцените статью
Добавить комментарий