Ir ao conteúdo
  • Cadastre-se

Vba excel que procura, compara calcule e cole o resultado


GOMES Tatuí

Posts recomendados

OLÁ.

Minha primeira vez em programar em vba Excel e não sei como criar a rotina:

Tenho duas planilhas ,a primeira se chama ordem de compra e a segunda ordem parcial. Na planilha ordem contem, do que necessito é que:

1- Que a vba localize os item que estão na ordem de compra se existe na ordem parcial de compra.

2- Caso exista, verificar no item localizado na ordem parcial de compra quanto falta para concluir a quantidade que esta na ordem de compra(Ex.ordem de compra - ordem parcial de compra= valor par fechar essa ordem),e colocar o resultado na célula em branco conforme a descrição do item (o que esta em branco, para facilitar, coloquei "?").

3 - Caso não encontre o item na ordem parcial de compra, na coluna ao lado na planilha ordem de compra, colocar a descrição de negativa(N/D, não localizado, etc...),caso localize e tenha realizado o procedimento da etapa 2, colocar na mesma coluna uma mensagem de conclusiva(ok, concluído, etc...)

Envio a vocês o anexo o print da planilha, e apenas para informar, não digitei nenhum código VBA, pois não sei como começar, pois, nunca programei.

Aguardo ajuda.

At +

post-1021015-13884964566015_thumb.jpg

post-1021015-13884964566529_thumb.jpg

Link para o comentário
Compartilhar em outros sites

Instale o código abaixo em um módulo comum, assim:

1. copie o código daqui

2. a partir de qualquer planilha do arquivo tecle 'Alt+F11' para acessar o editor de VBA

3. no menu do editor >> Inserir >> Módulo

4. cole o código na janela em branco que vai se abrir

5. feito! 'Alt+Q' para retornar para a planilha e testar

para rodar o código:

6. tecle 'Alt+F8' >> selecione a macro 'SaldoOrdemCompra' >> Executar, ou insira um botão em qualquer planilha e vincule-o à macro

Sub SaldoOrdemCompra()
Dim mat As Long, k As Long, x As Long, LR As Long, lngENV As Long
With Sheets("ordem de compra")
.Range(.Cells(3, 3), .Cells(Rows.Count, 3).End(xlUp)).ClearContents
End With
With Sheets("ordem parcial de compra")
LR = .Cells(Rows.Count, 1).End(xlUp).Row
For mat = 4 To LR
k = Application.CountIf(.Range(.Cells(mat, 1), .Cells(LR, 1)), _
.Cells(mat, 1).Value)
x = Sheets("ordem de compra").[A:A].Find(.Cells(mat, 1)).Row
Sheets("ordem de compra").Cells(x, 3).Value = "concluído"
lngENV = WorksheetFunction.Sum(.Range(.Cells(mat, 2), .Cells(mat + k - 2, 2)))
.Cells(mat + k - 1, 2) = Sheets("Ordem de Compra").Cells(x, 2).Value - lngENV

If .Cells(mat + k - 1, 2).Value > 0 Then
.Cells(mat + k - 1, 3).Value = "saldo"
ElseIf .Cells(mat + k - 1, 2).Value = 0 Then
.Cells(mat + k - 1, 3).Value = "completada"
Else: .Cells(mat + k - 1, 3).Value = "excedeu"
End If

mat = mat + k - 1
Next mat
End With

End Sub

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...