Мне нужна идея, с чего начать / превзойти - PullRequest
0 голосов
/ 10 января 2019

Мне нужно, чтобы все мои работодатели работали по часам ... на фото я сделал формулу VBA для цветных ячеек (1 цветовая ячейка = 12 ч) только зеленого и синего цветов, где "отсутствует" У меня есть формула if сосчитать все отсутствующие дни.

photo of excel template

хорошо, теперь проблема в том, что мне нужна формула / vba для достижения предела (рабочий предел 160 часов), скажем, в «день 24» ячейка будет выделена или что-то в этом роде.

Большое спасибо, я не знаю, с чего начать.

Ответы [ 3 ]

0 голосов
/ 10 января 2019

Здесь поместите это в модуль "ThisWorkbook" в Windows VBA для разработки

Проверяется цвет при каждом открытии рабочей книги. Если часовой предел достигнут, он оставит серыми оставшиеся ячейки и имя сотрудника.

Sub Workbook_Open()

Dim i As Long, y As Long
Dim Check As Integer

For i = 3 To 7
Check = 0
    For y = 2 To 32

    'Replace this one with the green RGB
    If Cells(i, y).Interior.Color = RGB(169, 208, 142) Then
    Check = Check + 1
    End If

    'Replace this one with the blue RGB
    If Cells(i, y).Interior.Color = RGB(0, 112, 192) Then
    Check = Check + 1
    End If

    '12*13 = 156, the closet to 160
    If Check >= 13 Then
        Cells(i, y + 1).Interior.Color = RGB(200, 200, 200)
        Cells(i, 1).Interior.Color = RGB(200, 200, 200)
    End If

    Next
Next

End Sub

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

Я знаю, что этот код не оптимизирован, я позволю вам поиграть с ним, но это довольно хорошее начало

Также замените помеченный RGB своим реальным цветом. Я пытался найти, какой это был, но я дальтоник, так что ...

0 голосов
/ 10 января 2019

Если вы хотите использовать условное форматирование, я не могу дать вам точный ответ, потому что я не знаю, как работает ваш COUNTCELLCOLOR, но вы можете работать с этим:

=SUM(INDIRECT("A"&ROW()&":"&SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")&ROW()))>160

Эта сумма суммирует все ячейки в строке от первого столбца до текущего (тот, в котором находится эта формула или для которого проверен тест условного форматирования) и проверяет, больше ли он 160. Вы должны изменить SUM на COUNTCELLCOLOR и настройте его под свои нужды (возможно, вычтите 1 из COLUMN() и т. д.).

Редактировать: отметьте это как формулу теста для условного форматирования:

=CountCellsByColor(INDIRECT("A"&ROW()&":"&SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")&ROW()),B11)+CountCellsByColor(INDIRECT("A"&ROW()&":"&SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")&ROW()),B12)>13
0 голосов
/ 10 января 2019

рабочий процесс:

1, получить lastRow из таблицы

2, для i = 3 Для lastRow сделать: обработать все столбцы в строке (для ii = 1), если ячейка (столбец, строка) .цвет ЗЕЛЕНЫЙ или СИНИЙ добавить 12 часов к счетчику, если счетчик достигает 160, вы будет иметь в каком столбце он достигает в II

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...