Есть файлик,в нём 2 листа(база и заказ), подскажите неучу каким образом можно оптимизировать работу. 1. В базе есть код и название города(каждый город выделен определённым цветом). 2. Есть заказ, где тоже есть код и название города(без цветового заполнения).
Вопрос, как сделать так, чтобы в заказе код идентичный с базой закрашивался тем же цветом что и в базе.
Извиняюсь если что не так написал, в Exele работаю как пользователь.
Господа !
Есть файлик,в нём 2 листа(база и заказ), подскажите неучу каким образом можно оптимизировать работу. 1. В базе есть код и название города(каждый город выделен определённым цветом). 2. Есть заказ, где тоже есть код и название города(без цветового заполнения).
Вопрос, как сделать так, чтобы в заказе код идентичный с базой закрашивался тем же цветом что и в базе.
Извиняюсь если что не так написал, в Exele работаю как пользователь.uristman
Ответ на "как сделать" - Можно закрашивать условным форматированием, используя пользовательскую функцию. Но это неудобно в использовании, а если данных много - то тяжело. Проще делать макросом (использовать массив и словарь) - вот только непонятно к чему привязан цвет - к коду или городу? Судя по файлу - к городу, судя по вопросу - к коду... Но в любом случае - красить долго если данных много.
Ответ на "как сделать" - Можно закрашивать условным форматированием, используя пользовательскую функцию. Но это неудобно в использовании, а если данных много - то тяжело. Проще делать макросом (использовать массив и словарь) - вот только непонятно к чему привязан цвет - к коду или городу? Судя по файлу - к городу, судя по вопросу - к коду... Но в любом случае - красить долго если данных много.Hugo
Если цвет привязан к коду (что, судя по записям нелогично), то можно так. По коду значит по коду. При вводе данных в ячейку, меняем цвет. Если надо изменить цвет разом в большом количестве ячеек, то допишите еще один цикл. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Range("B2:B100"), Target) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub r = Target.Row lr = Sheets("база").Cells(Rows.Count, 2).End(xlUp).Row For i = 2 To lr Step 1 If Sheets("база").Cells(i, 2) = Cells(r, 2) Then Col = Sheets("база").Cells(i, 3).Interior.ColorIndex Cells(r, 3).Interior.ColorIndex = Col End If Next i End Sub
[/vba] [p.s.]не проверял, но по идее должно работать
Если цвет привязан к коду (что, судя по записям нелогично), то можно так. По коду значит по коду. При вводе данных в ячейку, меняем цвет. Если надо изменить цвет разом в большом количестве ячеек, то допишите еще один цикл. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Range("B2:B100"), Target) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub r = Target.Row lr = Sheets("база").Cells(Rows.Count, 2).End(xlUp).Row For i = 2 To lr Step 1 If Sheets("база").Cells(i, 2) = Cells(r, 2) Then Col = Sheets("база").Cells(i, 3).Interior.ColorIndex Cells(r, 3).Interior.ColorIndex = Col End If Next i End Sub
[/vba] [p.s.]не проверял, но по идее должно работатьDмитрий
Сообщение отредактировал Dмитрий - Понедельник, 26.05.2014, 18:53