MACRO PARA VALIDA?ÃO DOS DADOS

JSILVA 24/08/2015 09:14:02
#450406
Bom dia

Preciso de uma macro que me de o resultado na linha da tarefa da coluna [Ô]H[Ô], informando o resultado 1 ou 2, a macro deverá cruzar as informações como:
1º Verificar se há lançamento anteriores da mesma equipe do lançamento atual;
2º Se há lançamento, verificar no último lançamento anterior do atual se há saldo na mesma linha da coluna [Ô]G[Ô], se há e se a data inicio da programação atual for igual da data de termino do último lançamento anterior do atual, o resultado deverá ser 1;
​ 3º Caso no último lançamento anterior do atual não havendo saldo e se a data de inicio do lançamento atual for >= da data de inicio do último lançamento anterior do atual ou se a data de inicio do lançamento atual for <= a da data de termino do último lançamento anterior do atual, o resultado deverá ser 2;

​EXEMPLO:
Tarefa1 OM01 01/08/15 a 05/08/15 saldo 0
Tarefa2 OM01 01/08/15 a 05/08/15 <<SALDO ANTERIOR = [Ô]0[Ô], E DATA DE INICIO ATUAL E = DA DATA DE INICIO ANTERIOR>><<RESULTADO 2>>

Tarefa1 OM01 01/08/15 a 05/08/15 saldo 0
Tarefa2 OM01 02/08/15 a 06/08/15 <<SALDO ANTERIOR = [Ô]0[Ô], E DATA DE INICIO ATUAL E > QUE A DATA DE INICIO ANTERIOR E <= A DATA DE TERMINO ANTERIOR>>​<<RESULTADO 2>>

Tarefa1 OM01 01/08/15 a 05/08/15 saldo 6
Tarefa2 OM01 05/08/15 a 06/08/15 <<SALDO ANTERIOR > [Ô]0[Ô], E DATA DE INICIO ATUAL E = QUE A DATA DE TERMINO ANTERIOR>>​<<RESULTADO 1>>

Tarefa1 OM01 01/08/15 a 05/08/15 saldo 6
Tarefa2 OM01 06/08/15 a 06/08/15 <<SALDO ANTERIOR > [Ô]0[Ô], E DATA DE INICIO ATUAL E > QUE A DATA DE TERMINO ANTERIOR>>​<<RESULTADO 1>>

TUNUSAT 22/09/2015 11:00:59
#451681
JSILVA,

Tenta montar algo em cima deste exemplo VBA para Excel:
Private Sub CommandButton1_Click()
Dim i As Long
Dim j As Long
Dim z As Long
Dim CompareRange1 As Variant
Dim CompareRange2 As Variant
Dim x As Variant
Dim y As Variant
Dim ValTOT As Integer
Dim vPlan1 As Plan1
Dim vPlan2 As Plan2

Set vPlan3 = Plan3
Set vPlan2 = Plan2
Set CompareRange1 = vPlan3.Range([Ô]A2:A1375[Ô])
Set CompareRange2 = vPlan2.Range([Ô]A2:A786[Ô])

i = 2
z = 2

For Each x In CompareRange1
j = 2

For Each y In CompareRange2

If x = y Then
ValTOT = vPlan3.Cells(i, 5).Value - vPlan2.Cells(j, 6).Value

If ValTOT > 0 Then
Cells(z, 1) = x
Cells(z, 2) = ValTOT
vPlan3.Range(vPlan3.Cells(i, 1), vPlan3.Cells(i, 5)).Interior.Color = 65535
vPlan2.Range(vPlan2.Cells(j, 1), vPlan2.Cells(j, 6)).Interior.Color = 65535
z = z + 1
End If

Exit For
Else
j = j + 1
End If

Next y

i = i + 1
Next x

End Sub


Veja o que consegue fazer e qualquer dúvida eu te ajudo.

[][ô]s,
Tunusat.
JSILVA 05/10/2015 19:32:26
#452180
TUNUSAT boa noite desculpa por não responder antes, mas não entendi o código, pois você menciona a plan2 e plan 3, sendo que os dados estão na plan1, mas mesmo assim coloquei um botão e nada aconteceu.

grato.
Faça seu login para responder