Страницы: 1
RSS
Счет не пустых ячеек в книге
 
Здравствуйте.

Нужно автоматизировать процесс подсчета количества не пустых ячеек во всей книге (vba/формула). Попытался приспособить СЧЁТЗ но оно не подходит, т.к. листов много и всегда разные называния. Пока считаем через ctrl-A в ручную.  
 
А зачем это надо?
...примерчик бы к вашей задаче...
 
Цитата
scp написал:
СЧЁТЗ но оно не подходит
СЧЁТЗ может работать с диапазоном листов
Соблюдение правил форума не освобождает от модераторского произвола
 
Михаил Витальевич С., диспетчер на основе количества заполненных ячеек высчитывает т.н. "сложность" предоставляемого заказчику отчета,коих в месяц сотни. По сложности высчитывается что то вроде стоимость каждого отдельного отчета. Пример приложил, суть в том что бы быстро получить цифру всех заполненных ячеек в книге.
buchlotnik, можно, пожалуйста, поподробнее? Это будет работать если название и количество листов каждый раз разное?  
Изменено: scp - 10.08.2020 14:57:25
 
scp,
Код
Sub fd()
Dim lr As Long, lcol As Long
Dim sh As Worksheet
Dim rng As Range
Application.ScreenUpdating = False

Z = 0
For Each sh In Worksheets
    sh.Activate
    lr = ActiveSheet.UsedRange.Rows.Count
    lcol = ActiveSheet.UsedRange.Columns.Count
    x = Application.WorksheetFunction.Count(Range(Cells(1, 1), Cells(lr, lcol)))
    Z = Z + x
Next sh
    Worksheets(1).Activate
    Worksheets(1).Cells(1, 2) = Z + 1
    
Application.ScreenUpdating = True
End Sub



Не бойтесь совершенства. Вам его не достичь.
 
Цитата
scp написал: на основе количества заполненных ячеек высчитывает т.н. "сложность" предоставляемого заказчику отчета
Цитата
Mershik: .UsedRange.Rows.Count
Здорово... Записать строку нулевой длины ("")  в ячейку AAA1000000 - и значения в ячейках глаза не мозолят, и сложность - ух ты! :)
 
Mershik,
Код
Sub fd1()
Dim sh As Worksheet
For Each sh In Worksheets
    Z = Z + Application.WorksheetFunction.Count(sh.UsedRange)
Next sh
    Worksheets(1).Cells(1, 2) = Z
End Sub

Sub fd2()
    Worksheets(1).Cells(1, 3) = Application.Evaluate("=COUNT('" & Worksheets(1).Name & ":" & Worksheets(Worksheets.Count).Name & "'!1:" & Rows.Count & ")")
  End Sub
По вопросам из тем форума, личку не читаю.
 
Mershik, БМВ, большое спасибо!
 
Код
=СЧЁТЗ(Лист1:ЛитХ!1:1048576)
циклические ссылки д.б. разрешены
Соблюдение правил форума не освобождает от модераторского произвола
Страницы: 1
Наверх