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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2007, 11:19   #1
Sasha K
 
Регистрация: 30.01.2007
Сообщений: 6
По умолчанию Количество ячеек

Подскажите, надо посчитать кол-во ячеек:

ColCell = Application.WorksheetFunction.Count A(Range("A:A"))

Это работает превосходно, но я поставил автофильтр и количество отображаемых ячеек соответственно уменьшилось, но это выражение считает вместе со скрытыми строками. Как быть?
Sasha K вне форума Ответить с цитированием
Старый 31.01.2007, 13:24   #2
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Стандартная функция рабочего листа =СЧЁТЗ() возвращает количество заполненных ячеек в указанном диапазоне, а наличие фильтра не имеет к этой функции никакого отношения. Однако, в MS Excel есть функция, которая учитывает наличие фильтра, а именно =ПРОМЕЖУТОЧНЫЕ.ИТОГИ()

Код:
iCountCells = Application.Subtotal(3, Range("A:A"))
iCountCells = WorksheetFunction.Subtotal(3, Range("A:A"))
iCountCells = Application.WorksheetFunction.Subtotal(3, Range("A:A"))
P.S. Если есть время и желание, то можно 'поиграться' ещё и непосредственно с об'ектом AutoFilter
pashulka вне форума Ответить с цитированием
Старый 31.01.2007, 13:47   #3
Sasha K
 
Регистрация: 30.01.2007
Сообщений: 6
По умолчанию

у меня английский офис, как функция =СЧЁТЗ() =ПРОМЕЖУТОЧНЫЕ.ИТОГИ()
будет в английском варианте?

Последний раз редактировалось Sasha K; 31.01.2007 в 14:02.
Sasha K вне форума Ответить с цитированием
Старый 31.01.2007, 14:18   #4
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Это шутка ? Названия этих функций уже присутствуют в английском варианте в этом топике.
pashulka вне форума Ответить с цитированием
Старый 31.01.2007, 15:04   #5
Sasha K
 
Регистрация: 30.01.2007
Сообщений: 6
По умолчанию

Ooops, sorry
Sasha K вне форума Ответить с цитированием
Старый 25.02.2009, 14:43   #6
eda
Пользователь
 
Регистрация: 14.08.2008
Сообщений: 78
По умолчанию

Скажите, пожалуйста, как в цикле for сделать обращение только к фильтрованным ячейкам?
eda вне форума Ответить с цитированием
Старый 26.02.2009, 06:04   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
как в цикле for сделать обращение только к фильтрованным ячейкам?
Не оговорено, цикл по всем ячейкам, или по ячейкам, например, какого-то конкретного столбца?
Например, для столбца:
Код:
Sub Main()
    Dim x As Range, c As Long, Cell
    c = 1 'Номер столбца
    Set x = Range(Cells(1, c), Cells(Rows.Count, c).End(xlUp)).SpecialCells(xlCellTypeVisible)
    For Each Cell In x
        'Ваш код для каждой видимой ячейки столбца
    Next
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение ячеек Katherina_Koval Microsoft Office Excel 3 29.07.2008 06:53
Сумма ячеек artemavd Общие вопросы Delphi 11 24.07.2008 16:36
Форматирование ячеек shmelvs Microsoft Office Excel 6 24.07.2008 10:24
Умноженеие ячеек Droid Общие вопросы Delphi 8 26.04.2008 13:06
Форматирование ячеек Andr Microsoft Office Excel 12 18.08.2007 20:15