Notifications
Clear all

Botão anterior e próximo

16 Posts
4 Usuários
0 Reactions
1,841 Visualizações
(@holanda22)
Posts: 0
New Member
Topic starter
 

Estou fazendo uma planilha de cadastro com banco de dados, e estou precisando de uma fórmula para fazer os botão de anterior e próximo, só que no meu banco de dados não possui códigos contínuos (1,2,3....) são números aleatórios como protocolos. Estou tendo muita dificuldade porque só acho fórmulas pra esse tipo de banco de dados, onde tem que ter o código na frente, e estou precisando que seja sem eles. Alguém poderia me ajudar?

 
Postado : 07/06/2016 10:31 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde holanda22

Seja bem-vindo(a) ao fórum!

Fica mais fácil do pessoal ajudar se você anexar uma planilha de exemplo, demonstrando o que você deseja.

Como você é novato(a) no fórum, para facilitar a tua participação no fórum, sugiro tomar conhecimento do conteúdo dos links abaixo:

viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s
Patropi - Moderador

 
Postado : 07/06/2016 10:47 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Nessa situação você pode utilizar a posição do registro (linha) para a navegação. No fórum irmão Tomas Vasquez há um modelo, que utiliza essa técnica, de uma olhada http://www.tomasvasquez.com.br/forum/viewtopic.php?f=16&t=904
tente adaptar para sua realidade, caso náo consiga, poste seu modelo

 
Postado : 07/06/2016 12:33 pm
(@holanda22)
Posts: 0
New Member
Topic starter
 

Boa noite, não consegui fazer desse jeito porque faz a contagem dos código de forma sequenciada (1, 2, 3 etc). Mando em anexo uma planilha exemplo pra vocês terem noção de como estou precisando.

 
Postado : 27/06/2016 11:34 pm
(@carlosrgs)
Posts: 0
New Member
 

Eu até consigo ajudar, mas o modo que vou propor a ABA registro sempre terá que estar ordenada pelo código do item.

 
Postado : 28/06/2016 1:40 pm
(@carlosrgs)
Posts: 0
New Member
 

Se vc digitar um código que não exite no registro não funcionará.

Utilizei a célula H3 para calcular!

 
Postado : 28/06/2016 1:52 pm
(@holanda22)
Posts: 0
New Member
Topic starter
 

Se vc digitar um código que não exite no registro não funcionará.

Utilizei a célula H3 para calcular!

Obrigada! Era isso mesmo que eu queria!
Mas estou tendo problemas, caso eu queira adicionar mais linhas dá um erro.
E gostaria de tirar umas dúvidas pra poder aplicar na minha planilha. Você poderia me explicar porque utilizou as fórmulas:
MATCH(R[2]C[-3] e
COUNTA('Plan1 (2)'!R6C4:R1005C4) (não entendi o intervalo usado)

 
Postado : 28/06/2016 8:17 pm
(@brunoxro)
Posts: 0
New Member
 

Boa noite Hollanda22,

A notação que o Carlosrgs usou é a matricial (linha = R,coluna=c) do excel.

Esse texto deve ajudar a entender: https://usuariosdoexcel.wordpress.com/2 ... m-celulas/

att,

 
Postado : 28/06/2016 10:56 pm
(@carlosrgs)
Posts: 0
New Member
 

Bom dia Holanda22.

Para somar 1, é a fórmula.

=SE(CORRESP(E5;Tabela1[Cupom Fiscal:];0)+1>CONT.VALORES('Plan1 (2)'!$D$6:$D$1005);ÍNDICE(Tabela1[Cupom Fiscal:];CORRESP(E5;Tabela1[Cupom Fiscal:];0);1);ÍNDICE(Tabela1[Cupom Fiscal:];CORRESP(E5;Tabela1[Cupom Fiscal:];0)+1;1))

Teste Logico:
SE(CORRESP(E5;Tabela1[Cupom Fiscal:];0)+1>CONT.VALORES('Plan1 (2)'!$D$6:$D$1005)
Ele verifica onde o código que está na célula E5 está e soma 1 para aplicar o ÍNDICE na linha de baixo, porém se este número for maior que a quantidade de números que existe na coluna D nos registros ele não somará, e o resultado será o próprio código digitado na célula.
Exemplo: se o código for 31254 não há nenhum código abaixo dele, o corresp + 1 será = 4, porém contém somente 3 números na coluna, então a fórmula não faz nada.
Se o corresp + 1 for menor que a quantidade de números da coluna D então aplica o ÍNDICE somando 1 no corresp.

E para diminuir ele verifica se o Corresp será menor que a quantidade de números na base.

Qualquer dúvida só falar, não sei se consegui explicar certinho!

Para incluir mais códigos tem que alterar a fórmula na MACRO.

Sub M01_Mais()
    
    Range("H3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(MATCH(R[2]C[-3],'Plan1 (2)'!R6C4:R1005C4,0)+1>COUNTA('Plan1 (2)'!R6C4:R1005C4),INDEX('Plan1 (2)'!R6C4:R1005C4,MATCH(R[2]C[-3],'Plan1 (2)'!R6C4:R1005C4,0),1),INDEX('Plan1 (2)'!R6C4:R1005C4,MATCH(R[2]C[-3],'Plan1 (2)'!R6C4:R1005C4,0)+1,1))"
    
    Selection.Copy
    Range("E5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("H3").Select
    Selection.ClearContents
    Range("E5").Select
End Sub
Sub M02_Menos()
    
    Range("H3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(MATCH(R[2]C[-3],'Plan1 (2)'!R6C4:R1005C4,0)+1<COUNTA('Plan1 (2)'!R6C4:R1005C4),INDEX('Plan1 (2)'!R6C4:R1005C4,MATCH(R[2]C[-3],'Plan1 (2)'!R6C4:R1005C4,0),1),INDEX('Plan1 (2)'!R6C4:R1005C4,MATCH(R[2]C[-3],'Plan1 (2)'!R6C4:R1005C4,0)-1,1))"
      
    Selection.Copy
    Range("E5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("H3").Select
    Selection.ClearContents
    Range("E5").Select
    
End Sub

Aqui está a fórmula para a busca em 1.000 linhas, mas qualquer alteração tem que ser alterado no VBA (inclusão de colunas, alteração do nome das abas).

 
Postado : 29/06/2016 5:17 am
(@holanda22)
Posts: 0
New Member
Topic starter
 

Bom dia Holanda22.

Para somar 1, é a fórmula.

=SE(CORRESP(E5;Tabela1[Cupom Fiscal:];0)+1>CONT.VALORES('Plan1 (2)'!$D$6:$D$1005);ÍNDICE(Tabela1[Cupom Fiscal:];CORRESP(E5;Tabela1[Cupom Fiscal:];0);1);ÍNDICE(Tabela1[Cupom Fiscal:];CORRESP(E5;Tabela1[Cupom Fiscal:];0)+1;1))

Teste Logico:
SE(CORRESP(E5;Tabela1[Cupom Fiscal:];0)+1>CONT.VALORES('Plan1 (2)'!$D$6:$D$1005)
Ele verifica onde o código que está na célula E5 está e soma 1 para aplicar o ÍNDICE na linha de baixo, porém se este número for maior que a quantidade de números que existe na coluna D nos registros ele não somará, e o resultado será o próprio código digitado na célula.
Exemplo: se o código for 31254 não há nenhum código abaixo dele, o corresp + 1 será = 4, porém contém somente 3 números na coluna, então a fórmula não faz nada.
Se o corresp + 1 for menor que a quantidade de números da coluna D então aplica o ÍNDICE somando 1 no corresp.

E para diminuir ele verifica se o Corresp será menor que a quantidade de números na base.

Qualquer dúvida só falar, não sei se consegui explicar certinho!

Para incluir mais códigos tem que alterar a fórmula na MACRO.

Sub M01_Mais()
    
    Range("H3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(MATCH(R[2]C[-3],'Plan1 (2)'!R6C4:R1005C4,0)+1>COUNTA('Plan1 (2)'!R6C4:R1005C4),INDEX('Plan1 (2)'!R6C4:R1005C4,MATCH(R[2]C[-3],'Plan1 (2)'!R6C4:R1005C4,0),1),INDEX('Plan1 (2)'!R6C4:R1005C4,MATCH(R[2]C[-3],'Plan1 (2)'!R6C4:R1005C4,0)+1,1))"
    
    Selection.Copy
    Range("E5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("H3").Select
    Selection.ClearContents
    Range("E5").Select
End Sub
Sub M02_Menos()
    
    Range("H3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(MATCH(R[2]C[-3],'Plan1 (2)'!R6C4:R1005C4,0)+1<COUNTA('Plan1 (2)'!R6C4:R1005C4),INDEX('Plan1 (2)'!R6C4:R1005C4,MATCH(R[2]C[-3],'Plan1 (2)'!R6C4:R1005C4,0),1),INDEX('Plan1 (2)'!R6C4:R1005C4,MATCH(R[2]C[-3],'Plan1 (2)'!R6C4:R1005C4,0)-1,1))"
      
    Selection.Copy
    Range("E5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("H3").Select
    Selection.ClearContents
    Range("E5").Select
    
End Sub

Aqui está a fórmula para a busca em 1.000 linhas, mas qualquer alteração tem que ser alterado no VBA (inclusão de colunas, alteração do nome das abas).

Boa noite, ainda continua com o erro.
Adicionei mais códigos, só que ele sempre só identifica os 3 últimos, se tiver 100 códigos registrados ele só mostra na aba de cadastro os 3 últimos.
Mando em anexo para você verificar.

 
Postado : 29/06/2016 8:49 pm
(@carlosrgs)
Posts: 0
New Member
 

Entendi agora.

A Fórmula para diminuir estava errada.

 
Postado : 30/06/2016 5:13 am
(@holanda22)
Posts: 0
New Member
Topic starter
 

Entendi agora.

A Fórmula para diminuir estava errada.

Obrigada! Agora está funcionando perfeitamente! :D :D
Só tenho algumas dúvidas:
- Percebi que você copiou os códigos que estavam na aba de registro para a aba de cadastro, é necessário copiar mesmo ou foi feito só para poder montar a fórmula (já que percebi que quando fui adicionando mais códigos eles não foram copiando pra lá e continuou funcionando)?
- E também gostaria de saber se há um limite de códigos que posso registrar (já que na última postagem vc mandou uma fórmula pra cadastrar até 100 códigos)?

Obrigada!

 
Postado : 30/06/2016 1:40 pm
(@holanda22)
Posts: 0
New Member
Topic starter
 

E, se possível, você poderia mandar essas fórmulas "decodificadas"? rsrs
É que não consigo entender direito elas do jeito que está registrado no VBA XD

 
Postado : 30/06/2016 1:46 pm
(@carlosrgs)
Posts: 0
New Member
 

Bom dia.

A Fórmula para somar 1 é:
=SE(CORRESP(E5;'Plan1 (2)'!$D$6:$D$1005;0)+1>CONT.VALORES('Plan1 (2)'!$D$6:$D$1005);ÍNDICE('Plan1 (2)'!$D$6:$D$1005;CORRESP(E5;'Plan1 (2)'!$D$6:$D$1005;0);1);ÍNDICE('Plan1 (2)'!$D$6:$D$1005;CORRESP(E5;'Plan1 (2)'!$D$6:$D$1005;0)+1;1))

E para diminuir um é:
=SE(CORRESP(E5;'Plan1 (2)'!$D$6:$D$1005;0)+1<=2;ÍNDICE('Plan1 (2)'!$D$6:$D$1005;CORRESP(E5;'Plan1 (2)'!$D$6:$D$1005;0);1);ÍNDICE('Plan1 (2)'!$D$6:$D$1005;CORRESP(E5;'Plan1 (2)'!$D$6:$D$1005;0)-1;1))

Os códigos que copiei na coluna L era somente para eu não precisar ficar indo na outra aba pesquisar.

E pode conter 1.000 registros.

Qualquer dúvida deixa a macro conforme a imagem e vai executando passo a passo para entender melhor e realizar alterações.

 
Postado : 01/07/2016 5:12 am
(@holanda22)
Posts: 0
New Member
Topic starter
 

Tem algum jeito de fazer com que caso eu coloque um código que não esteja cadastrado, ele pular para o código anterior/posterior que está cadastrado?

 
Postado : 03/07/2016 10:49 pm
Página 1 / 2