2015-03-11 6 views
0

Мне нужна помощь при написании макроса Excel, который делает немало вещей. Моим вкладом был макрос, чтобы получить данные в этом формате, но я застрял в подсветке и даже не имел ни малейшего представления о том, как действовать. Извините, это очень долго, и спасибо за кучу заранее! : DExcel 2013 VBA Macro, необходимый для выделения с несколькими условиями

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

Только те, кто получает подсветку, будут указывать «# N/A» в столбце E. Если есть несколько компаний, но никто не говорит «# N/A» в столбце E, то только те, которые говорят « # N/A»будет включен в подсветке/добавление итогов ...

  1. Если столбец А имеет более чем один из того же самого названия компании, а также итоговые суммы в столбце D для всех одной и той же компании складываются должно быть больше 0, а номер заказа в столбце C для ВСЕХ той же компании начинается с «5» (я использовал = LEFT ($ C1,1) + 0 = 5), а столбец E = "# N/A ", затем нажмите A: E желтым цветом.

  2. Если столбец A имеет более одного названия компании, а итоговые значения в столбце D для всей одной компании составляют более 0, НО не все номера заказов в столбце C начинаются с символа " 5, «И столбец E =« # N/A », THEN ячейки для A: E для номера заказа с« 5 »являются синими (цвет 15773696), а ячейки для A: E для номеров заказов не начинаются с «5» являются красными.

  3. Если столбец А имеет более одного названия компании, а итоговые значения в столбце D для всей одной и той же компании составляют 0, а столбец Е = «# Н/Д», ТОГДА выделяют ячейки A: E красным.

  4. Если столбец А имеет более одного названия компании, а итоговые значения в столбце D для всей той же компании составляют < 0, а столбец E = "# N/A", тогда подсветка ячейки A: E для всех линий компании оранжевым цветом (цвет 49407).

  5. Если столбец A имеет только одно название компании, а номер заказа в столбце C начинается с «5», а сумма в столбце D равна> 0, а столбец E = «# N/A», THEN выделить ячейки A: E для названия компании в синем (цвет 15773696).

  6. Если столбец А имеет только одно название компании, а общее количество в столбце D равно < 0, а столбец E = "# N/A", тогда выделите ячейки A: E для названия компании оранжевым цветом (цвет 49407).

  7. Если столбец А имеет только одно название компании, а номер заказа в столбце С начинается не с «5», имя в красном.

  8. Если линия синяя, введите текст «Бронирование DER?» в колонку F.

С уважением, soooooo много для вашей помощи! :) Я бы опубликовал пример картинки, но это не позволит мне ...

ответ

0

У вас есть два варианта заключается в использовании условного форматирования это проще, но требует больше времени на мой взгляд

Вы также можете использовать частные методы, чтобы изменить формат ячеек, когда их значения изменения, чтобы сделать так, что вам нужно создать код внутри рабочего листа на VBA, выберите рабочий лист, который вы хотите использовать для этого кода, в списке слева вверх выберите «Просмотреть код», где вы должны написать код

Но будьте осторожны с тех пор, как вы обрабатываете с ошибками, такими как «# N/A», потому что если вы делаете такие вещи, как

If Range("C2").value = "#N/A" then ...

это не будет работать, потому что "# N/A" не значение ячейки это индикатор ошибки, так что вы должны использовать что-то вроде этого:

If worksheetfunciton.IfError(Range("C2"),"Error") = "Error" then ...

В этом примере, если ячейки в определенном диапазоне изменили свои значения, коэффициент будет отображать сообщение о том, что эта ячейка изменилась, все, что вам нужно сделать, это изменить диапазон в соответствии с вашим желанием и изменить строку: MsgBox "Cell " & Target.Address & " has changed." для вашего условия, это должно сработать, один метод для сверхвысокого значения ячейки может быть cells().Interior.ColorIndex = "color number"

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim KeyCells As Range 

    ' The variable KeyCells contains the cells that will 
    ' cause an alert when they are changed. 
    Set KeyCells = Range("A1:C10") 

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _ 
      Is Nothing Then 

     ' Display a message when one of the designated cells has been 
     ' changed. 
     ' Place your code here. 
     MsgBox "Cell " & Target.Address & " has changed." 

    End If 
End Sub 
Смежные вопросы