Sub test()
Dim vArr, reg As Object, i%, j%, tempnum!
vArr = Sheet1.Range("D5:H" & Sheet1.Cells(Rows.Count, "d").End(3).Row)
Set reg = VBA.CreateObject("vbscript.regexp")
With reg
.Global = True
.Pattern = "([0-9.]*)%"
For i = 1 To UBound(vArr)
For j = 2 To UBound(vArr, 2)
If Len(vArr(i, j)) Then
If VBA.IsNumeric(vArr(i, j)) Then
If Val(vArr(i, 1)) > Val(vArr(i, j)) Then Sheet1.Cells(i + 4, j + 3).Font.ColorIndex = 3
End If
If .test(vArr(i, j)) Then
tempnum = .Execute(vArr(i, j))(0).submatches(0)
If tempnum < Val(vArr(i, 1)) Then Sheet1.Cells(i + 4, j + 3).Font.ColorIndex = 3
End If
End If
Next j
Next i
End With
End Sub