Страницы: 1
RSS
Форматирование мантиссы числа по условию
 
Приветствую!
Необходимо через макрос форматировать числовое значение в ячейке, если выполняется условие в другой ячейке, стоящей рядом.
С учетом файла во вложении, это должно выглядеть следующим образом:
По умолчанию числа в ячейках имеют 2 знака после запятой.
Числа в столбце "D" должны иметь 3 знака после запятой, если напротив этого числа в столбце "C" значение ячейки = "def".
Операцию необходимо проделать на 3-х листах.
Заранее благодарю за помощь!
 
А макрос-то зачем?
 
Листы с этого файла у меня автоматически сохраняются в новую книгу.
В этой книге не должно быть условного форматирования по правилу, которое вы указали (если бы все было так просто).
Поэтому нужно через макрос.
 
Maxwell_R, без цикла по ячейкам
Код
Sub Макрос1()
Dim ws As Worksheet
  For Each ws In Worksheets
    With ws.Range("D2", ws.Cells(ws.Rows.Count, "D").End(xlUp))
      .NumberFormat = Evaluate(Replace( _
        """#,##0.00""&IF(@=""def"",""0"","""")", _
        "@", .Offset(, -1).Address(, , Application.ReferenceStyle)))
    End With
  Next
End Sub
 
Казанский, большое спасибо! Все работает!
Возникли дополнительные вопросы в процессе:
1) Для того, чтобы выполнить форматирование на 2-х листах из 3-х, мне необходимо объявить массив этих листов, а затем применить к ним For Each?
2) При использовании текущего макроса, в случае, когда есть данные в форматируемом столбце, но за пределами таблицы, то они также подвергаются форматированию. Как ограничить диапазон при выполнении данного макроса?
 
Maxwell_R,
1) можно просто дописать в 3 строке
Код
  For Each ws In Worksheets(Array("Лист1", "Лист3"))

2) Если диапазон фиксирован, просто укажите его в 4 строке (можно с запасом)
Код
    With ws.Range("D2:D10")
иначе придумайте, как найти конец таблицы.
 
Казанский, очень благодарен! Теперь идеально!
Страницы: 1
Читают тему
Наверх