Aqui está uma solução VBA. Ele copia as cores de plano de fundo e de fonte da sua tabela Format
, portanto, se desejar texto branco, use texto branco nessa tabela. Você pode querer ajustar as configurações de borda (linhas 39 e 47), bem como onde procura as condições de formato a serem usadas (linhas 27 - 30). Isto é especialmente verdadeiro se o seu exemplo for um mockup puro com pouca relação com seus dados reais.
Option Explicit
Sub MadeFormattedHeadings()
'Declarations
Dim ws As Worksheet
Dim headerRange As Range
Dim rangeSize As Integer
Dim rangeStart As Integer
Dim r As Long
Dim c As Integer
'Choose the worksheet to use
'(Pick one of these two methods)
Set ws = Worksheets("Sheet1") 'This uses the name on the tab seen in Excel
Set ws = Sheet1 'This uses the code name seen in VBA
With ws
'Remove previous headers
If UCase(.Range("A1").Value) = UCase(.Range("A5").Value) Then
.Rows("1:2").Delete
.Rows("1:2").Insert
End If
'Add new headers
rangeStart = 1
For r = 5 To 8 '<<<< There are other methods to iterate. This is just one option.
'Save the settings
Set headerRange = .Range("A" & r)
rangeSize = .Range("B" & r).Value
'Format the first row
With .Range(.Cells(1, rangeStart), .Cells(1, rangeStart + rangeSize - 1))
.Merge
.Value = headerRange.Value
.HorizontalAlignment = xlCenter
.Font.Color = headerRange.Font.Color
.Interior.Color = headerRange.Interior.Color
.BorderAround xlSolid, xlThin
End With
'Format the second row
With .Range(.Cells(2, rangeStart), .Cells(2, rangeStart + rangeSize - 1))
.Merge
.Value = rangeSize
.HorizontalAlignment = xlCenter
.BorderAround xlSolid, xlThin
End With
'Iterate to the next section
rangeStart = rangeStart + rangeSize
Next
End With
End Sub