обработка ячеек с определённым форматом

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

Задача: допустим есть столбец значений, в котором некоторый ячейки вделены жирным шрифтом. Как просуммировать выделенные числа?
А без макросов? Может есть стандартные функции? Что-то типа СУММЕСЛИ и в качестве критерия - жирный=true :)
ЯЧЕЙКА судя по хэлпу формат фонта не обрабатывает :(
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Нет. Не обрабатывает.
Это принцип. "Данные отдельно, а форматирвоание отдельно".
Он нарушается в одну сторону (условное форматирование), но не наоборот.
Наоборот нужно ручками.

Обязательно потребуется что-то типа

Код: Выделить всё

Function qwe(x)
  qwe = x.Font.Color
End Function
Однако, эта функция на листе требует ручного пересчета (F9), так как форматирование не приводит к автоматическому пересчету ячеек.
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Ничего не приходит в голову из стандартных средств,
В сущности надо найти в Excele "то", что определит - формат ячейки жирный или нет.

вот только такой вариант в виде макроса... :(

Код: Выделить всё

Public Function Sum_Bold(RangeSUM As Range)
Application.Volatile True

On Error GoTo err1
Dim iCell As Range
Dim S As Double

S = 0
For Each iCell In RangeSUM
    If iCell.Font.Bold = True Then S = S + iCell.Value
Next
Sum_Bold = S
  
Exit Function
err1: Resume Next
End Function
Хотя, если создать собственный пользовательский числовой формат, и копировать его на необходимые ячейки для суммирования в диапазоне, то функция Ячейка уже наверно сможет отличить такую ячейку от простой без формата.
Пользовательский числовой формат может окрашивать текст в ячейке в один из цветов.
[Черный] [Синий]
[Голубой] [Зеленый]
[Розовый] [Красный]
[Белый] [Желтый]
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

всем спасибо :)
Avsha, макрос я уже наваял, просто спросил, вдруг велосипед уже сделали у Билла :)
Изображение
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Игорь Акопян, про велосипед...
Работаю со SCADA-пакетом, который также как Excel, обладает кучей функций,
Но нам понадобилась функция схожая с вашей, выбрать параметры на мнемосхеме в набор (выделить жирным шрифтом ячейки) и
произвести с ними определенное действие, например вывести на график (в вашем варианте - посчитать сумму).

Ответ один - где вам нехватает функциональности, используйте VBA, для этого его и внедряли в приложение.
Хотя нам эта функция также показалась стандартной и "велосипедной", чтож будем ждать...
Sokl
Сообщения: 451
Зарегистрирован: 12 сен 2005, 08:52
Откуда: ОМ

Не я один такой изобретатель... Это хорошо...
В свое время выкрутился аналогично, но проблема "F9" осталась:

Код: Выделить всё

Public Function isBold(r As Range) As Boolean
    Application.Volatile
    isBold = r.Font.Bold
End Function
Хотя, по-моему, была у меня в далеком прошлом идея заменить кнопочку ЖИРНЫЙ на нестандартную и перехватывать "Ctrl+B", а всё это оформить в надстройке...
Так вот тогда я и решил - проще F9 нажать :D
Ответить