Исходя из комментариев к решению выше, я думаю, что это может быть полезно
Sub FormatSpecialCells()
Dim SearchRange As Range
Dim CriteriaRange As Range
Set SearchRange = Range("A2:A24")
Set CriteriaRange = Range("C2:C5")
Dim Cell As Range
For Each Cell In SearchRange
TryMatchValue Cell, CriteriaRange
Next
End Sub
Private Sub TryMatchValue(CellToTest As Range, CellsToSearch As Range)
Dim Cell As Range
For Each Cell In CellsToSearch
If Cell.Value = CellToTest.Value Then
Cell.Copy
CellToTest.PasteSpecial xlPasteFormats, xlPasteSpecialOperationNone, False, False
End If
Next
End Sub
Это не полностью достигает вашей цели. Он выполняет поиск по указанному списку ячеек и сопоставляет их с отдельным списком ячеек. Если он соответствует значениям, он берет ФОРМАТ второго списка ячеек и применяет его к ячейке, которой он соответствует в первом списке ячеек. Вы можете изменить это, изменив функцию TryMatchValue, чтобы вместо сопоставления с CellToTest он вставлял формат в другую ячейку, размер которой 2 и один вверх.
Это имеет то преимущество, что, если вы хотите добавить больше значений и различные форматы, вам нужно всего лишь перейти на свой лист Excel и добавить больше значений. Также вам нужно только изменить формат на это значение.
Примером может быть ...
У вас есть ячейки, которые вы ищете в A1: D1000
Имеют эти значения в ячейках E2: E6 ...
Итого (жирный и подчеркнутый)
Всего (жирный, подчеркнутый и курсив)
Чистая (которая подчеркнута жирным шрифтом и выделена красным)
и т.д ...
затем, когда он попадет в промежуточный итог, он изменит ячейку на жирный и подчеркнутый.
Когда он достигает значения Total, он изменит ячейку на жирный, подчеркнутый и курсив
и т.д и т.д ...
надеюсь, это поможет