Ir ao conteúdo
  • Cadastre-se

Recommended Posts

Prezados,
bom dia,

Tenho uma nova dúvida, acredito que essa é mais fácil...

Preciso fazer uma lógica onde calcule 1 valor menos o valor seguinte, CASO a conta dar 0, ir na outra coluna de Status e marcar nas 2 linhas como "Ok", caso der diferente de 0, marcar como "erro"...

Vejam meu anexo, acredito que ficaria mais fácil o entendimento...

Lembro que há um tempo atrás me ajudaram com um problema parecido com o seguinte código:

 

Sub conciliar()
On Error Resume Next
Dim ul As Long
'inicio:
ul = Planilha1.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To ul
conf1 = CStr(Cells(i, 7).Value & Cells(i, 8).Value)
For j = 2 To ul
If CStr(Cells(j, 7).Value & (Cells(j, 8).Value) * -1) = conf1 And Cells(j, 7).Row <> Cells(i, 7).Row Then
Cells(j, 2).EntireRow.Interior.Color = 65535
Cells(i, 2).EntireRow.Interior.Color = 65535
'GoTo inicio
End If
Next j
Next i
MsgBox "Conciliação realizada com Sucesso!", vbExclamation, "Sucesso!"
End Sub

Obrigado!

teste.xlsx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Não sei se entendi direito o que você quer, mas você pode resolver seu problema com um "SE".

 

=SE(CÉLULA1-CÉLULA2=0;"Ok";"Erro")

 

Mais tarde, te mando como ficaria em vba

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas se você verificar o arquivo dos valores até o final, vão ter casos que tem mais positivos que negativos... 

A ideia é que depois de rodar a macro, tudo que estiver com status Ok, a soma da coluna dar zero

 

Veja como consegui fazer até agr por macro... 

 

Consegue me ajudar a corrigir ?

teste.zip

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vejo problemas na sua macro, para o propósito dela está funcionando perfeitamente.

 

Em questão da soma não tem como dar zero mesmo, pois quando você somar por exemplo -2 +2 dá 0... mas se você somar -2 + -2 o resultado será o -4, ou seja para a soma da coluna igualar a 0, será necessário tratar boa parte dos valores.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

na verdade não, segue o código que realmente me ajudou.

 

Sub Status()
Dim ul As Long
inicio:
ul = Planilha1.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To ul
If Planilha1.Range("B" & i) <> "OK" And Planilha1.Range("A" & i).Value = Planilha1.Range("A" & i + 1).Value * -1 Then
Planilha1.Range("B" & i).Value = "OK"
Planilha1.Range("B" & i + 1).Value = "OK"
End If
Next i
For i = 2 To ul
If Planilha1.Range("B" & i).Value = "" Then
Planilha1.Range("B" & i).Value = "Erro"
End If
Next i
End Sub

Mesmo assim, obrigado pela ajuda cara!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos, bom dia,

Eu havia marcado esse tópico como resolvido, porém analisando de novo a planilha, me deparei que ainda constam valores que deveriam estar com o status 'OK' mas não ficaram... É como se o código só faz o calculo quando há um número positivo seguido de um negativo, quando há por exemplo, dez números positivos e depois de outros números aleatórios terem esses mesmos 10 números negativos, ele não altera o status deles...

 

Vejam meu anexo por favor...

 

Alguém consegue me ajudar ?

teste.zip

adicionado 7 minutos depois

Em uma outra época, um amigo fez um código em vba para mim, onde conciliava valores que se repetiam na mesma coluna, por exemplo, há 10 valores positivos e 10 valores negativos, dai essa macro ela pintava todos os 20 valores de uma cor específica....

 

Não sei se daria para adptar esse código para minha nova necessidade...

Segue:

Sub conciliar()
On Error Resume Next
Dim ul As Long
'inicio:
ul = Planilha1.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To ul
conf1 = CStr(Cells(i, 7).Value & Cells(i, 8).Value)
For j = 2 To ul
If CStr(Cells(j, 7).Value & (Cells(j, 8).Value) * -1) = conf1 And Cells(j, 7).Row <> Cells(i, 7).Row Then
Cells(j, 2).EntireRow.Interior.Color = 65535
Cells(i, 2).EntireRow.Interior.Color = 65535
'GoTo inicio
End If
Next j
Next i
MsgBox "Conciliação realizada com Sucesso!", vbExclamation, "Sucesso!"
End Sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@R0DR1G0_CWB

Fala cara, beleza? 

 

Eu testei o seu código, ele praticamente da o mesmo 'erro'... Veja meu anexo, se você pegar por exemplo, depois de rodar a macro do status, o valor 12,5... Vai encontrar alguns valores desse negativo mas cade o positivo ?

 

A ideia é deixar com o status OK, somente os números que se cruzam, ou seja, esses que estão com ok, na verdade deveriam estar com erro...

Fazendo essa conciliação no olho, verifiquei que o número de Errados é de 178, ou seja, são alguns que estão com 'ok' mas que na verdade deveriam estar como 'erro' também...

Pasta1.zip

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Rodrigo!

Obrigado pelo retorno até aqui!

 

Verificando com o resultado que foi feito na mão, alguns pequenos valores não entraram na macro, fiz alguns testes na planilha 2, verifique meu anexo por favor...

 

A soma da coluna Erro teria que dar: 169.573,43

 

Obrigado!!

image.png

Teste versão Feito.zip

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×