2015-11-20 4 views
-1

Я пытаюсь автоматизировать книгу Excel, чтобы сэкономить время при составлении графиков работы сотрудников. У меня есть два листа. Sheet1 содержит простую таблицу, используемую для создания запланированного графика для месяца (имя сотрудника в первом столбце, даты в верхней строке и каждый день отмечены «РАБОТАМИ», «НА ЗВОНОК», «ВЫКЛ» и т. Д.), а на другом листе содержится таблица с цветовыми кодами, чтобы отслеживать, насколько хорошо график был сохранен в течение недели. Мне нужно, чтобы Sheet2 обновлял цветовые коды на основе расписания, запланированного вручную на Sheet1, чтобы я мог тратить меньше времени на ручное цветовое кодирование.Как форматировать/окрашивать ячейки на основе содержимого других ячеек

Я не хочу использовать Условное форматирование, так как считаю, что вы не можете перезаписать формат, который он дает ячейке (в случае, когда сотрудник выкрикнул, а не пришел в свой запланированный день для работы, а на Sheet2 это необходимо записать - с другим цветовым кодом). Мне просто нужна помощь в выяснении некоторых макросов, которые могут помочь ускорить работу и сократить время, затрачиваемое вручную на цветные кодирующие ячейки.

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

ответ

0

Здесь вы можете работать.

Щелкните правой кнопкой мыши по вкладке 1 и выберите «Просмотреть код» и скопируйте этот код там.

Измените ячейку в столбце A на листе 1 на A, B или C, затем перейдите на лист 2 и посмотрите, что произошло.

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Column = 1 Then 
     If Target = "A" Then Sheets("Sheet2").Range(Target.Address).Interior.ColorIndex = 3 
     If Target = "B" Then Sheets("Sheet2").Range(Target.Address).Interior.ColorIndex = 4 
     If Target = "C" Then Sheets("Sheet2").Range(Target.Address).Interior.ColorIndex = 5 
    End If 
End Sub 
+0

Большое вам спасибо! Это прекрасно работает! Есть ли способ применить то, что он делает к каждому [заполненному] столбцу на листе, в том случае, если больше столбцов добавлено или удалено в течение нескольких месяцев разной длины? Кажется, я не могу заставить петлю работать для меня. Или петли не работают в частных субмаринах? – NanaPria

+0

Я не уверен, что вы просите. – Davesexcel

+0

Этот код работает отлично, но только для первого столбца (ака первого дня расписания). Я полагаю, что я мог бы копировать и вставлять код несколько раз и каждый раз увеличивать число Target.Column, чтобы иметь оставшиеся столбцы под одним и тем же кодом (не менее 31 столбца, так как самый длинный месяц будет иметь 31 день для расписания), но мне было интересно, есть ли способ сделать код таким, чтобы без 31+ копий кода, который вы предлагали? Я думал по линиям цикла, пока последний столбец не будет пустым, но все мои попытки не сработают, и я не могу понять, что я делаю неправильно. – NanaPria

Смежные вопросы