Em uma rápida olhada, a utilização do Nível parece ser desnecessária, já que os grupos salariais são únicos.
Há uma sobreposição de grupos , o que acarreta duplo processamento.
Apesar de não querer utilizar tabelas, e aconselhavel utiliza-las, pois qualquer alteração das faixas salariais(inclusão/exclusão e alteração de valores), acarretará necessidade de edição da rotina para isso, mas se tiver "tabelado" qualquer pessoa pode alterar.
Experimente:
Com Select Case
Sub Zonas()
Dim x As Long, LastR As Long, StartR As Long
Dim ZonaA As Integer, ZonaB As Integer, ZonaC As Integer, ZonaD As Integer
Dim Grupo As Integer
Dim Reference As String
StartR = 2
LastR = Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
ZonaA = Application.Match("Zona A", Range("1:1"), 0)
ZonaB = Application.Match("Zona B", Range("1:1"), 0)
ZonaC = Application.Match("Zona C", Range("1:1"), 0)
ZonaD = Application.Match("Zona D", Range("1:1"), 0)
For x = StartR To LastR
Reference = Cells(x, Application.Match("Grelha Referência", Range("1:1"), 0))
'Nivel = Cells(x, Application.Match("Nivel", Range("1:1"), 0)).Value
Grupo = Cells(x, Application.Match("Grupo", Range("1:1"), 0)).Value
Select Case Grupo
Case 70, 71
Cells(x, ZonaA).Value = 13500
Cells(x, ZonaB).Value = 16350
Cells(x, ZonaC).Value = 21000
Cells(x, ZonaD).Value = 26000
Case 68, 69
Cells(x, ZonaA).Value = 10000
Cells(x, ZonaB).Value = 13000
Cells(x, ZonaC).Value = 17000
Cells(x, ZonaD).Value = 20000
Case 66, 67
Cells(x, ZonaA).Value = 9500
Cells(x, ZonaB).Value = 11000
Cells(x, ZonaC).Value = 14000
Cells(x, ZonaD).Value = 18500
Case 63, 64, 65
Cells(x, ZonaA).Value = 7000
Cells(x, ZonaB).Value = 9000
Cells(x, ZonaC).Value = 11500
Cells(x, ZonaD).Value = 13000
Case 60, 61, 62
If Reference = "A" Then
Cells(x, ZonaA).Value = 5000
Cells(x, ZonaB).Value = 6000
Cells(x, ZonaC).Value = 7000
Cells(x, ZonaD).Value = 9000
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 5000
Cells(x, ZonaB).Value = 6000
Cells(x, ZonaC).Value = 7500
Cells(x, ZonaD).Value = 10000
End If
Case 57, 58, 59
If Reference = "A" Then
Cells(x, ZonaA).Value = 3500
Cells(x, ZonaB).Value = 4000
Cells(x, ZonaC).Value = 5500
Cells(x, ZonaD).Value = 7000
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 4000
Cells(x, ZonaB).Value = 7000
Cells(x, ZonaC).Value = 8000
Cells(x, ZonaD).Value = 11000
End If
Case 56
If Reference = "A" Then
Cells(x, ZonaA).Value = 3000
Cells(x, ZonaB).Value = 4000
Cells(x, ZonaC).Value = 5200
Cells(x, ZonaD).Value = 6000
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 4000
Cells(x, ZonaB).Value = 5800
Cells(x, ZonaC).Value = 7000
Cells(x, ZonaD).Value = 8350
End If
Case 54, 55
If Reference = "A" Then
Cells(x, ZonaA).Value = 2250
Cells(x, ZonaB).Value = 3000
Cells(x, ZonaC).Value = 3800
Cells(x, ZonaD).Value = 4900
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 3000
Cells(x, ZonaB).Value = 4000
Cells(x, ZonaC).Value = 5000
Cells(x, ZonaD).Value = 7050
End If
Case 53
If Reference = "A" Then
Cells(x, ZonaA).Value = 1950
Cells(x, ZonaB).Value = 2600
Cells(x, ZonaC).Value = 3700
Cells(x, ZonaD).Value = 4200
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 2800
Cells(x, ZonaB).Value = 3500
Cells(x, ZonaC).Value = 4500
Cells(x, ZonaD).Value = 6000
End If
Case 51, 52
If Reference = "A" Then
Cells(x, ZonaA).Value = 1650
Cells(x, ZonaB).Value = 1890
Cells(x, ZonaC).Value = 2600
Cells(x, ZonaD).Value = 3700
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 2200
Cells(x, ZonaB).Value = 2900
Cells(x, ZonaC).Value = 3600
Cells(x, ZonaD).Value = 4400
End If
Case 50
If Reference = "A" Then
Cells(x, ZonaA).Value = 1500
Cells(x, ZonaB).Value = 2000
Cells(x, ZonaC).Value = 2400
Cells(x, ZonaD).Value = 2900
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 2100
Cells(x, ZonaB).Value = 2400
Cells(x, ZonaC).Value = 2900
Cells(x, ZonaD).Value = 3200
End If
End Select
Next x
End Sub
Comm If
Sub Zonas()
Dim x As Long, LastR As Long, StartR As Long
Dim ZonaA As Integer, ZonaB As Integer, ZonaC As Integer, ZonaD As Integer
Dim Grupo As Integer
Dim Reference As String
StartR = 2
LastR = Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
ZonaA = Application.Match("Zona A", Range("1:1"), 0)
ZonaB = Application.Match("Zona B", Range("1:1"), 0)
ZonaC = Application.Match("Zona C", Range("1:1"), 0)
ZonaD = Application.Match("Zona D", Range("1:1"), 0)
For x = StartR To LastR
Reference = Cells(x, Application.Match("Grelha Referência", Range("1:1"), 0))
'Nivel = Cells(x, Application.Match("Nivel", Range("1:1"), 0)).Value
Grupo = Cells(x, Application.Match("Grupo", Range("1:1"), 0)).Value
If Grupo = 70 Or Grupo = 71 Then
Cells(x, ZonaA).Value = 13500
Cells(x, ZonaB).Value = 16350
Cells(x, ZonaC).Value = 21000
Cells(x, ZonaD).Value = 26000
ElseIf Grupo = 68 Or Grupo = 69 Then
Cells(x, ZonaA).Value = 10000
Cells(x, ZonaB).Value = 13000
Cells(x, ZonaC).Value = 17000
Cells(x, ZonaD).Value = 20000
ElseIf Grupo = 66 Or Grupo = 67 Then
Cells(x, ZonaA).Value = 9500
Cells(x, ZonaB).Value = 11000
Cells(x, ZonaC).Value = 14000
Cells(x, ZonaD).Value = 18500
ElseIf Grupo >= 63 And Grupo <= 65 Then
Cells(x, ZonaA).Value = 7000
Cells(x, ZonaB).Value = 9000
Cells(x, ZonaC).Value = 11500
Cells(x, ZonaD).Value = 13000
ElseIf Grupo >= 60 And Grupo <= 62 Then
If Reference = "A" Then
Cells(x, ZonaA).Value = 5000
Cells(x, ZonaB).Value = 6000
Cells(x, ZonaC).Value = 7000
Cells(x, ZonaD).Value = 9000
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 5000
Cells(x, ZonaB).Value = 6000
Cells(x, ZonaC).Value = 7500
Cells(x, ZonaD).Value = 10000
End If
ElseIf Grupo >= 57 And Grupo <= 59 Then
If Reference = "A" Then
Cells(x, ZonaA).Value = 3500
Cells(x, ZonaB).Value = 4000
Cells(x, ZonaC).Value = 5500
Cells(x, ZonaD).Value = 7000
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 4000
Cells(x, ZonaB).Value = 7000
Cells(x, ZonaC).Value = 8000
Cells(x, ZonaD).Value = 11000
End If
ElseIf Grupo = 56 Then
If Reference = "A" Then
Cells(x, ZonaA).Value = 3000
Cells(x, ZonaB).Value = 4000
Cells(x, ZonaC).Value = 5200
Cells(x, ZonaD).Value = 6000
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 4000
Cells(x, ZonaB).Value = 5800
Cells(x, ZonaC).Value = 7000
Cells(x, ZonaD).Value = 8350
End If
ElseIf Grupo = 54 Or Grupo = 55 Then
If Reference = "A" Then
Cells(x, ZonaA).Value = 2250
Cells(x, ZonaB).Value = 3000
Cells(x, ZonaC).Value = 3800
Cells(x, ZonaD).Value = 4900
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 3000
Cells(x, ZonaB).Value = 4000
Cells(x, ZonaC).Value = 5000
Cells(x, ZonaD).Value = 7050
End If
ElseIf Grupo = 53 Then
If Reference = "A" Then
Cells(x, ZonaA).Value = 1950
Cells(x, ZonaB).Value = 2600
Cells(x, ZonaC).Value = 3700
Cells(x, ZonaD).Value = 4200
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 2800
Cells(x, ZonaB).Value = 3500
Cells(x, ZonaC).Value = 4500
Cells(x, ZonaD).Value = 6000
End If
ElseIf Grupo = 51 Or Grupo = 52 Then
If Reference = "A" Then
Cells(x, ZonaA).Value = 1650
Cells(x, ZonaB).Value = 1890
Cells(x, ZonaC).Value = 2600
Cells(x, ZonaD).Value = 3700
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 2200
Cells(x, ZonaB).Value = 2900
Cells(x, ZonaC).Value = 3600
Cells(x, ZonaD).Value = 4400
End If
ElseIf Grupo = 50 Then
If Reference = "A" Then
Cells(x, ZonaA).Value = 1500
Cells(x, ZonaB).Value = 2000
Cells(x, ZonaC).Value = 2400
Cells(x, ZonaD).Value = 2900
ElseIf Reference = "B" Then
Cells(x, ZonaA).Value = 2100
Cells(x, ZonaB).Value = 2400
Cells(x, ZonaC).Value = 2900
Cells(x, ZonaD).Value = 3200
End If
End If
Next x
End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel