JeyCi, ввиду того, что кол-во столбцов с цветными ячейками и текстовыми критериями планируется гораздо больше, чем в исходном тестовом файле, то вводить дополнительные столбцы с просчетом протягиванием функции определения цветового индекса будет неудобным. Мне как раз требовался расчет нужных значений по одной формуле в одной ячейке. Согласен, что конечная формула не выглядит лаконичной, но на данный момент удовлетворяет всем ожиданиям. Извиняюсь, если ввел в заблуждение на каком-то этапе И большое спасибо за дельные советы, акценты на нюансы и последнюю ссылку!
The_Prist, благодарю за ссылки! Со временем кол-во критериев будет больше. Но, под иную похожую задачу — очень кстати!
Казанский, спасибо большое! Здорово, когда мысли в нужное русло направляются! =SUMPRODUCT помог решить задачу, выкладываю файл с решением. Функция, предложенная JeyCi, почему-то не отрабатывает, с функцией от The_Prist, все в порядке.
Цитата
Казанский написал: Criteria_range1: is the range of cells
Да, я обращал на это внимание и не знал, как поступить. Но, раз уж вопрос решен другим способом, то теперь чисто спортивный интерес — можно ли массив преобразовать в диапазон для подстановки в виде аргумента в функцию =SUMIFS?
Моя изначальная задумка, похоже, не совсем сработала. Попробую объяснить задачу введения данной функции в контексте более широкой задачи.
Имеются 2 столбца: 1 заполнен цветными ячейками и числовыми значениями этих ячеек, 2 — текстовыми примечаниями ("Действие 1", "Действие 2"). Необходимо найти сумму ячеек на основе цвета и текстового примечания, т.е., всего 4 суммы: 2 для красных и Действия 1, 2 — для оранжевых и Действия 2.
Искомая функция нужна была для возвращения диапазона значений индексов цвета выбранных ячеек, чтобы в дальнейшем при помощи функции =SUMIFS, критерия по индексу цвета, диапазону текстовых примечаний и критерия самого примечания вычислить сумму значений ячеек. Я пробовал вычислить эти суммы, задействовав макросы от JeyCi, и The_Prist, и переименовав функции в них как cCol_JC и cCol_TP для удобства, но всегда получал ошибку #VALUE!
Заметил, что 2 варианта кода работают не совсем корректно. Если диапазон начинается с 1 ячейки столбца, то все отлично, однако если задать произвольный диапазон, например, А3:А6, то результатом работы функции будут коды ячеек А1:А4. См. прикрепленный файл.
Пожалуй, это самый быстрый верный ответ, который я когда-либо получал на форумах. Огромное вам спасибо! Сразу увидел весь провал своего опыта в VBA До вашего варианта я бы еще очень долго думал.
Третий день бьюсь над задачей, видимо, пора уже сдаться и попросить совета у вас.
Имею в таблице столбец, заполненный цветными ячейками. Требуется получить численный массив из индексов цветов ячеек выбранного диапазона как результат работы функции. Привязки к диапазону не должно быть, т.е. при инициализации функции в качестве параметра выбирается диапазон, по которому функция будет формировать численный массив из цветовых индексов ячеек (как при нажатии на F9 формируется массив значений выбранных ячеек).
Пробовал такой код (знаю, что ерунда и он неверный):
Код
Function cellColor(targetRange As Range)
Dim cArr As Variant
For Each cArr In targetRange
cArr = targetRange.Interior.ColorIndex
Next
cellColor = cArr
End Function
И еще множество его вариантов с переменными для сохранения массива, результатов они не дали, кроме вывода цветового индекса одной выбранной ячейки.