Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
ILYA1994rus
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 6
1

Функция подсчета ячеек в диапазоне, если она определенного цвета и в ней есть определенный текст

01.11.2016, 06:21. Просмотров 1191. Ответов 10
Метки нет (Все метки)

Нужна функция счета ячеек в диапазоне если она определенного цвета и в ней есть определенный текст.
Имеется табель. И есть норма часов. Когда работник в отпуске или на больничном норма часов для него меняется. я привел пример как ведётся подсчет нормы труда. и нужна формула которая это всё учитывала. А для этого нужно просто что бы он проверял есть ли в выбранном диапазоне буква "О" или "Б" и является ли эта ячейка где нашлась эта буква определенного цвета. Я уже искал на форумах функцию подсчета количества ячеек определенного цвета но я не могу туда внедрить условие если в этой ячейки буква "Б" или "О" то тогда считать как 1. Он просто почитывает все ячейки выбранного цвета

использовал вот эту формулу

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Function СЧЁТЗАЛИВКА(ДИАПАЗОН As Range, ЯЧЕЙКА) As Long
    Dim S As Double
    Dim rCell As Range
    Dim ColCell As Long
 
    ColCell = ЯЧЕЙКА.Interior.Color
    S = 0
 
    For Each rCell In ДИАПАЗОН
        If rCell.Interior.Color = ColCell Then
            S = S + 1
        End If
    Next
 
    СЧЁТЗАЛИВКА = S
End Function
Может ли кто нить помочь. Буду признателен. Можно писать в ВК. Т.к. могу не углядеть когда тут ответили. https://vk.com/id76287909
0
Вложения
Тип файла: xlsx Пример.xlsx (19.4 Кб, 4 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2016, 06:21
Ответы с готовыми решениями:

Если в диапазоне ячеек есть текст, то в другой ячейке выполняется условие
Всем привет! Подскажите пожалуйста, как реализовать такую логику: Если в диапазоне ячеек,...

Если в диапазоне ячеек есть СЕГОДНЯ, то взять значение слева от этой ячейки
Был бы очень благодарен помощи в подборе нужной формулы. Нужно, чтобы в отдельно стоящую...

Если в элементе есть определенный текст, то элемент оставить
Здравствуйте, подскажите как мне сделать такой скрипт? Есть сайт https://gryazeviky.ru/, на нем...

Если на странице есть определенный текст, то сохранять URL страницы в файл
Здравствуйте! Ну вот совсем я что-то дубовый, как ни делаю ничего не работает. Задача для...

Суммировать цифры в диапазоне ячеек. Буквы заменить на цифры, если таковые есть
Добрый день. Помогите кто может.(Excel) Есть диапазон ячеек, в котором есть и буквы и цифры. Надо...

10
kasan
Чорумфанин
343 / 343 / 320
Регистрация: 06.03.2014
Сообщений: 899
01.11.2016, 09:21 2
В строку 10 добавить условие
Visual Basic
1
If rCell.Interior.Color = ColCell and (rCell.Value="Б" or rCell.Value="О") Then
1
ILYA1994rus
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 6
02.11.2016, 10:59  [ТС] 3
Всё хорошо, но столкнулся с проблемой. Эта формула не учитывает цвет УСЛОВНОГО ФОРМАТИРОВАНИЯ. Ячейки по условию стали зеленые, а он их воспринимает как белые. Как это исправить?
0
ILYA1994rus
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 6
02.11.2016, 11:55  [ТС] 4
Вот чтобы было нагляднее о чём я говорю
0
Вложения
Тип файла: rar Пример 2.rar (35.6 Кб, 2 просмотров)
KoGG
5329 / 1395 / 330
Регистрация: 23.12.2010
Сообщений: 2,071
Записей в блоге: 1
02.11.2016, 13:52 5
Для Офиса 2010 и выше:
Visual Basic
1
If rCell.DisplayFormat.Interior.Color = ColCell and (rCell.Value="Б" or rCell.Value="О") Then
1
ILYA1994rus
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 6
03.11.2016, 08:54  [ТС] 6
KoGG, Щас попробую. Тока на работе 2007 стоит. Поставлю поновее.

Добавлено через 1 час 1 минуту
KoGG, на 2016 екселе не работает. Пишет знач и всё. В чем может быть проблема

Добавлено через 2 часа 41 минуту
KoGG, поправка в 2013 екселе
0
KoGG
5329 / 1395 / 330
Регистрация: 23.12.2010
Сообщений: 2,071
Записей в блоге: 1
03.11.2016, 09:19 7
DisplayFormat - капризная вещь, работает в процедурах, но не работает в UDF, запускаемых из ячейки листа.
0
ILYA1994rus
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 6
03.11.2016, 10:12  [ТС] 8
KoGG, оказалось на работе 2010 офис стоит. И вот и на 2010 версии и на 2013 версии не работает эта формула. И что теперь ни как не вылечить это безобразие?
0
kasan
Чорумфанин
343 / 343 / 320
Регистрация: 06.03.2014
Сообщений: 899
03.11.2016, 11:05 9
Условное форматирование закрашивает ячейки при заданных условиях, почему эти условия не прописать в IF?
Всмысле не сравнивать цвета, а значения.
0
ILYA1994rus
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 6
03.11.2016, 11:59  [ТС] 10
kasan, мне надо что бы она сравнивала значение в ячейки в которой есть буква (Б или О) и была определенного цвета закрашена.
0
Миниатюры
Функция подсчета ячеек в диапазоне, если она определенного цвета и в ней есть определенный текст  
Вложения
Тип файла: rar Пример 2 без проги.rar (36.4 Кб, 4 просмотров)
KoGG
5329 / 1395 / 330
Регистрация: 23.12.2010
Сообщений: 2,071
Записей в блоге: 1
03.11.2016, 14:03 11
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Function СчетДеньНедели(ДИАПАЗОН As Range, TipDnyaZadanniy) As Long
    ' TipDnyaZadanniy 1 - будни, 6 - суббота, 7 воскресение
    Application.Volatile True
    Dim S As Double
    Dim rCell As Range
    Dim ColCell As Long
    Dim TipDnyaTekuschiy%
    S = 0
    For Each rCell In ДИАПАЗОН
        Select Case rCell.Row
            Case 12, 18, 30, 36
                TipDnyaTekuschiy = Weekday(rCell.Parent.Cells(8, rCell.Column), vbMonday)
            Case 14, 20, 32, 38
                TipDnyaTekuschiy = Weekday(rCell.Parent.Cells(9, rCell.Column), vbMonday)
            Case Else
        End Select
        If TipDnyaTekuschiy < 6 Then TipDnyaTekuschiy = 1
        If TipDnyaTekuschiy = TipDnyaZadanniy And (rCell.Value = "Б" Or rCell.Value = "О") Then
            S = S + 1
        End If
    Next
    СчетДеньНедели = S
End Function
0
03.11.2016, 14:03
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2016, 14:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Есть функция. Как сделать, что бы текст, который выводиться в Memo был не стандартного цвета?
void __fastcall TForm1::Button5Click(TObject *Sender) { Memo1-&gt;SelText =...

Защита ячеек определенного цвета макросом
Добрый день! Подскажите пожалуйста как сделать с помощью ВБА запрет на редактирование всех ячеек...

Скрывает блоке если есть определенный текст Например "Дата:"
Можно сделать что бы если в .miniblock находило слово например: &quot;Дата:&quot;, то блок .miniblock,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.