Ir ao conteúdo
  • Cadastre-se
OVIDIA

EXCEL - Dúvida sobre fórmula SE e Vinculos

Recommended Posts

:cry: Por favor me ajudem !!!

Estou com um problemão que não consigo resolver, mas tenho certeza que algum gênio aqui vai me ajudar. Amém.

O problema é o seguinte:

Estou trabalhando com uma planilha de controle de estoque de produto numerado sequüencialmente que deve ser diária, que deve ser disposta da seguinte forma

ESTOQUE INICIAL (Sempre terá algum número lançado)

Ex: 001 a 0048

ENTRADAS NO ESTOQUE (Pode ocorrer ou não no dia)

SAÍDA DO ESTOQUE(que na maioria dos dias ocorre pelo menos de um, mas há dias que não sai nada)

ESTOQUE FINA (Onde deve constar a numeração sequêncial de todos os produtos que tenho em estoque, ou seja, a sequência do estoque inicial menos a saída e as estradas

Ocorre que não estou conseguindo que o excel me diga o que tenho de etoque final, deveria aparecer para mim da seguinte forma:

Se o estoque inicial for utilizado, o resultado será a sequência referente ao último número lançado como saída +1

Se o estoque não for utilizado o resultado será igual ao lançado como estoque inicial

Se houver alguma entrada, também deve verificar se o que foi utilizado foi do estoque inicial ou saiu da entrada ocorrida no mesmo dia, pois se não usou a entrada do dia o resultado será igual a entrada do dia, mas se saiu será a entrada do dia menos a saída +1, pois me dará o número seguinte.

Ex da planilha e de como deve ser o resultado final do estoque

---------- A -------------- B --------- C

1---ESTOQUE INICIAL

2------ 001 -------------- a ------- 200

3------320 ------------- a --------- 450

4

5 ---ENTRADAS

6 -----500 ------------a ----------- 600

7

8-- SAÍDAS

9 ----- 001 ----------- a ----------- 050

10

11---ESTOQUE FINAL

12 ------ 051 ---------a ----------- 200

13-------320 ---------a ----------- 450

14------ 500-------- a ----------- 600

Por favor, alguém me ajude, pois tenho que fazer estes cálculos todos os dias e a intenção é que depois que o excel calcule o estoque final do dia esses valores sejam transportados para o dia seguinte.

Obrigado desde já.

Ovidia

Compartilhar este post


Link para o post
Compartilhar em outros sites
:cry: Por favor me ajudem !!!

Estou com um problemão que não consigo resolver, mas tenho certeza que algum gênio aqui vai me ajudar. Amém.

O problema é o seguinte:

Estou trabalhando com uma planilha de controle de estoque de produto numerado sequüencialmente que deve ser diária, que deve ser disposta da seguinte forma

ESTOQUE INICIAL (Sempre terá algum número lançado)

Ex: 001 a 0048

ENTRADAS NO ESTOQUE (Pode ocorrer ou não no dia)

SAÍDA DO ESTOQUE(que na maioria dos dias ocorre pelo menos de um, mas há dias que não sai nada)

ESTOQUE FINA (Onde deve constar a numeração sequêncial de todos os produtos que tenho em estoque, ou seja, a sequência do estoque inicial menos a saída e as estradas

Ocorre que não estou conseguindo que o excel me diga o que tenho de etoque final, deveria aparecer para mim da seguinte forma:

Se o estoque inicial for utilizado, o resultado será a sequência referente ao último número lançado como saída +1

Se o estoque não for utilizado o resultado será igual ao lançado como estoque inicial

Se houver alguma entrada, também deve verificar se o que foi utilizado foi do estoque inicial ou saiu da entrada ocorrida no mesmo dia, pois se não usou a entrada do dia o resultado será igual a entrada do dia, mas se saiu será a entrada do dia menos a saída +1, pois me dará o número seguinte.

Ex da planilha e de como deve ser o resultado final do estoque

---------- A -------------- B --------- C

1---ESTOQUE INICIAL

2------ 001 -------------- a ------- 200

3------320 ------------- a --------- 450

4

5 ---ENTRADAS

6 -----500 ------------a ----------- 600

7

8-- SAÍDAS

9 ----- 001 ----------- a ----------- 050

10

11---ESTOQUE FINAL

12 ------ 051 ---------a ----------- 200

13-------320 ---------a ----------- 450

14------ 500-------- a ----------- 600

Por favor, alguém me ajude, pois tenho que fazer estes cálculos todos os dias e a intenção é que depois que o excel calcule o estoque final do dia esses valores sejam transportados para o dia seguinte.

Obrigado desde já.

Ovidia

Pelo que eu entendi você está tentado utilizar a função "SE"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos ter que apelar para Macro...

Aperte Alt + F11 e insira no campo esse código:

' Cada vez que mudar uma célula realizar a macro

Private Sub Worksheet_SelectionChange(ByVal celula As Range)

' Este código só funcionará para uma determinada formatação

' no caso todos os valores na coluna A

' escrevendo ESTOQUE INICIAL

' escrevendo ENTRADAS

' escrevendo SAÍDAS

' escrevendo ESTOQUE FINAL

' e declarando valores desejados abaixo de cada um

' fazendo um intervalo escrevendo o início na coluna A

' e o fim do intervalo na coluna C

'

' Declarando as variáveis

Dim limite As Long

Dim embranco As Long, celvazio As Range

Dim celcol1(1 To 400) As Long, celcol2(1 To 400) As Long

' Verificar as células da coluna 1

For Each celula In Columns(1).Cells

' quando estiver escrito ESTOQUE INICIAL

If celula.Value = "ESTOQUE INICIAL" Then

For i = 1 To 100

' declarar os valores de estoque inicial como celcol1 e celcol2

' celcol1 para o valor antes do "a" e celcol2 para o depois

' celcol1(1) sendo o primeiro valor antes de "a"

' e celcol2(1) o primeiro valor depois de "a"

If Not IsEmpty(celula.Cells(i + 1, 1)) Then

celcol1(i) = celula.Cells(i + 1, 1).Value

celcol2(i) = celula.Cells(i + 1, 3).Value

Else

Exit For

End If

Next i

' Se estiver escrito ENTRADAS na coluna 1

ElseIf celula.Value = "ENTRADAS" Then

' Declarar os valores da coluna 1 como celcol1 e celcol2

' aqui o primeiro valor antes de a vai ser celcol1(101)

For i = 101 To 200

If Not IsEmpty(celula.Cells(i - 99, 1)) Then

celula.Cells(i - 99, 2).Value = "a"

celcol1(i) = celula.Cells(i - 99, 1).Value

celcol2(i) = celula.Cells(i - 99, 3).Value

Else

Exit For

End If

Next i

' Se estiver escrito SAÍDAS na coluna 1

ElseIf celula.Value = "SAÍDAS" Then

For i = 201 To 300

' Atribuir o valores de celcol1 e celcol2 para SAÍDAS

' o primeiro valor antes do "a" vai ser definido como:

' celcol1(a linha onde estiver o mesmo valor em ENTRADAS + 199)

If Not IsEmpty(celula.Cells(i - 199, 1)) Then

celula.Cells(i - 199, 2).Value = "a"

limite = Cells.Find(celula.Cells(i - 199, 1), , , , xlByColumns).Row

celcol1(limite + 199) = celula.Cells(i - 199, 1).Value

celcol2(limite + 199) = celula.Cells(i - 199, 3).Value

Else

Exit For

End If

Next i

' Onde estiver escrito ESTOQUE FINAL na coluna 1

ElseIf celula.Value = "ESTOQUE FINAL" Then

' Limpar o conteúdo abaixo

Range(celula.Cells(2, 1), celula.Cells(100, 100)).ClearContents

For i = 1 To 100

' se não tiver os mesmo valores de ESTOQUE INICIAL em SAÍDAS

' colocar os valores de ESTOQUE INICIAL

If Not celcol1(i) = celcol1(i + 200) Then

celula.Cells(i + 1, 1).Value = celcol1(i)

celula.Cells(i + 1, 2).Value = "a"

celula.Cells(i + 1, 3).Value = celcol2(i)

' se existir o mesmo valor da coluna 1 em ESTOQUE INICIAL e SAÍDAS

' e esse valor não for 0, e o valor na coluna 3 de SAÍDAS não for igual

' ao mesmo valor na coluna ESTOQUE INICIAL

' colocar os valores da coluna 1 de SAÍDAS +1

' colocar os valores da coluna 2 de ESTOQUE INICIAL

ElseIf (celcol1(i) = celcol1(i + 200) And Not celcol1(i) = 0 And Not celcol2(i) = celcol2(i + 200)) Then

celula.Cells(i + 1, 1).Value = celcol2(i + 200) + 1

celula.Cells(i + 1, 2).Value = "a"

celula.Cells(i + 1, 3).Value = celcol2(i)

' se não existir mais valor de ESTOQUE INICIAL

' parar de procurar valores

ElseIf celcol1(i) = 0 Then

' determinar a linha em que não há mais valor como limite

limite = celula.Cells.Row + i - 1

Exit For

End If

Next i

For i = 1 To 100

' Adicionar os valores de ENTRADA no ESTOQUE FINAL

' esses valores serão colocados a partir do limite

' estabelecido anteriormente

If celcol1(i + 100) > 0 Then

Cells(limite + i, 1).Value = celcol1(i + 100)

Cells(limite + i, 2).Value = "a"

Cells(limite + i, 3).Value = celcol2(i + 100)

Else

Exit For

End If

Next i

For i = 1 To 100

' Se ficar alguma linha no ESTOQUE FINAL vazia

' apagar

If IsEmpty(celula.Cells(i + 1, 1)) Then

For Each celvazio In Range(celula.Cells(i + 1, 1), celula.Cells(i + 20, 1)).Cells

If IsEmpty(celvazio) Then

embranco = embranco + 1

Else

Exit For

End If

Next celvazio

If Not embranco = 20 Then

Range(celula.Cells(i + 1, 1), celula.Cells(i + embranco, 3)).Delete

embranco = 0

Else

embranco = 0

Exit Sub

End If

End If

Next i

Exit For

End If

Next celula

End Sub

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

×