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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2009, 15:47   #1
catano
Новичок
Джуниор
 
Регистрация: 07.08.2009
Сообщений: 1
По умолчанию Формула для определения количества закрашенных ячеек

Добрый день!

Подскажите возможно ли, чтобы Excel подсчитывал в таблице количество закрашенных (залитых) и пустых ячеек? Какая должна быть формула?
catano вне форума Ответить с цитированием
Старый 07.08.2009, 16:03   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Встроенные функции тут вряд ли помогут.

Но можно написать пользовательскую функцию, которая возвратит количество закрашенных ячеек.

На форуме есть примеры - осталось только поискать.
Если найду - выложу ссылку.

(добавлено)
Найти не смог - пришлось делать снова
Вот весь код:
Код:
Function КолвоЧистыхЯчеек(ByRef ra As Range) As Long
    Dim cell As Range
    For Each cell In ra.Cells
        КолвоЧистыхЯчеек = КолвоЧистыхЯчеек - (cell.Interior.ColorIndex = xlNone)
    Next cell
End Function

Function КолвоЗакрашенныхЯчеек(ByRef ra As Range) As Long
    Dim cell As Range
    For Each cell In ra.Cells
        КолвоЗакрашенныхЯчеек = КолвоЗакрашенныхЯчеек - (cell.Interior.ColorIndex <> xlNone)
    Next cell
End Function

Обратите внимание на формулы в ячейках:
Код:
  Ячейка: A2      Формула  (стиль A1):   =КолвоЧистыхЯчеек(C1:C19)
                  Формула  (стиль R1C1): =КолвоЧистыхЯчеек(R[-1]C[2]:R[17]C[2])

  Ячейка: A3      Формула  (стиль A1):   =КолвоЗакрашенныхЯчеек(C2:D10)
                  Формула  (стиль R1C1): =КолвоЗакрашенныхЯчеек(R[-1]C[2]:R[7]C[3])


Последний раз редактировалось EducatedFool; 07.08.2009 в 16:12.
EducatedFool вне форума Ответить с цитированием
Старый 07.08.2009, 16:49   #3
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Можно и встроенными функциями если не требовать автоматического пересчёта
Допустим таблица это [A1:A5]
Определяем имя ЗАЛИВКА как =ПОЛУЧИТЬ.ЯЧЕЙКУ(63;A1) и помещаем в
[B1:B5] формулу =ЗАЛИВКА
Тогда число ячеек с заливкой определяется как
=СЧЁТЕСЛИ(B1:B5;"<>0")

Кстати, вопрос несколько усложняется если учитывать условное форматирование
Посмотрите пример:
http://www.vbaexpress.com/kb/getarticle.php?kb_id=190
Ну и вот эта ссылка, полагаю,может пригодиться
http://www.planetaexcel.ru/forum.php?thread_id=8934

Последний раз редактировалось Aent; 07.08.2009 в 17:34.
Aent вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Красивая и сложная формула с запароливанием ячеек ru3000 Microsoft Office Excel 15 07.08.2009 05:45
макрос - подсчитать для каждой строки кол-во ячеек с «+», кол-во ячеек с «-» Vadim_abs Microsoft Office Excel 36 14.07.2009 12:08
Программа для определения любимых стилей игроков. offland Помощь студентам 0 11.06.2009 17:40
Программа для определения CPU netsky2004 Паскаль, Turbo Pascal, PascalABC.NET 0 10.01.2009 02:07
Считывание из файла, для определения кодировки Arteom Общие вопросы Delphi 6 04.05.2008 10:11