Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2010, 13:44   #1
fuzzylogic
Новичок
Джуниор
 
Регистрация: 01.03.2010
Сообщений: 4
По умолчанию Подсчет количества заполненных строк.

Здравствуйте, уважаемые Гуру. Необходима помощь специалиста. Есть файл Excel (в аттаче), в котором очень много листов. Необходимо для каждого листа подсчитать количество заполненных строк (за исключением "шапки", т.е. с 5 строки), а затем просуммировать и получить общее количество заполненных строк для всех листов.
Заранее спасибо за помощь.
Вложения
Тип файла: zip 22311111.zip (15.1 Кб, 60 просмотров)
fuzzylogic вне форума Ответить с цитированием
Старый 01.03.2010, 14:13   #2
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

Код:
Sub pp()
Dim sh As Worksheet
Dim sum As Integer
Dim i As Integer
For Each sh In Worksheets
i = sh.Cells(Rows.Count, 1).End(xlUp).Row
If i > 4 Then
sum = sum + i - 4
End If
Next sh
MsgBox "всего " & sum & " строк"
End Sub
Dophin вне форума Ответить с цитированием
Старый 01.03.2010, 14:45   #3
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Dophin, можно поворчу?

Код:
Dim i As Integer
i = sh.Cells(Rows.Count, 1).End(xlUp).Row
Объявляя переменную i как Integer необходимо учитывать тот момент, что максимальный предел для переменной данного типа - 32767(для отрицательных значений - -32768). Из этого следует, что если строк будет больше этого числа - Вы получите ошибку. При работе со строками лучше использовать тип Long. Он может принять целое число до 2147483647(и к тому же инициализируется быстрее).

Тоже самое и с переменной sum. Она-то вообще собирает данные со всех листов.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 01.03.2010, 15:21   #4
fuzzylogic
Новичок
Джуниор
 
Регистрация: 01.03.2010
Сообщений: 4
По умолчанию

Большое спасибо за оперативную помощь! Но есть небольшая загвоздка:
после выполнения кода пишет что всего 91 строка, на самом же деле их 96. Может быть подскажите где копать? Вроде бы код, который Вы предоставили, верный.
fuzzylogic вне форума Ответить с цитированием
Старый 01.03.2010, 15:39   #5
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

2 The_Prist: спасибо, учту на будущее

2 fuzzylogic: последняя заполненная строка ищется в первом столбце, Вам скорее всего надо в седьмом, если да то замените

Код:
i = sh.Cells(Rows.Count, 1).End(xlUp).Row
на
Код:
i = sh.Cells(Rows.Count, 7).End(xlUp).Row
Dophin вне форума Ответить с цитированием
Старый 01.03.2010, 15:49   #6
fuzzylogic
Новичок
Джуниор
 
Регистрация: 01.03.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Dophin Посмотреть сообщение
2 The_Prist: спасибо, учту на будущее

2 fuzzylogic: последняя заполненная строка ищется в первом столбце, Вам скорее всего надо в седьмом, если да то замените

Код:
i = sh.Cells(Rows.Count, 1).End(xlUp).Row
на
Код:
i = sh.Cells(Rows.Count, 7).End(xlUp).Row
Насколько я понял счетчик увеличивается только если в столбце 1 или 7 есть значение. Т.е. если к примеру в 1 (или 7) столбце ячейка будет пустая, а в других ячейках этой строки что-нибудь будет, то строка будет считаться пустой?
Т.е. мне еще необходимо добавить проверку каждой ячейки данной строки?!
Спасибо за содействие )
fuzzylogic вне форума Ответить с цитированием
Старый 02.03.2010, 07:37   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

А что делать, если, например, на одном из листов (или нескольких) внутри заполненного диапазона встречаются пустые строки? Их считать? Предлагаемый код подсчитает во всех листах только заполненные строки (т.е. содержащие хотя бы 1 значение),начиная со строки 5, не зависимо от того, в каком из столбцов этих значений больше.
Код:
Sub pp1()
    Dim sh As Worksheet, sum As Long, i As Long
    For Each sh In Sheets
        For i = 5 To sh.UsedRange.Row + sh.UsedRange.Rows.Count
            If sh.Rows(i).Text = "" Then Else sum = sum + 1
    Next: Next
    MsgBox "всего " & sum & " заполненных строк"
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 02.03.2010, 11:38   #8
fuzzylogic
Новичок
Джуниор
 
Регистрация: 01.03.2010
Сообщений: 4
По умолчанию

Спасибо большое, все прекрасно работает. Прям и не знаем чтобы без вас делали. Еще раз спасибо!
fuzzylogic вне форума Ответить с цитированием
Старый 11.03.2010, 18:37   #9
korn8881
Новичок
Джуниор
 
Регистрация: 11.03.2010
Сообщений: 5
По умолчанию

встав те на лист
ЕСЛИ(ЕПУСТО(B9:B16);"";СЧЁТЗ($B$6:B 9))
наведите на формулу и поймете 2 диапазона столбец А и Б
встав те значения и внизу автосумму
korn8881 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет количества числовых значений Amelie_L Microsoft Office Excel 2 28.01.2010 08:26
подсчет заполненных ячеек extremobile Microsoft Office Excel 2 28.05.2009 17:26
Подсчет количества в Excel срочно!!! Kunia Microsoft Office Excel 5 03.02.2009 07:31
Подсчет общего количества студентов NikolayGVB Microsoft Office Excel 4 19.01.2009 19:10
Подсчет количества и частоты Ensoph Помощь студентам 6 08.05.2008 10:16