AJUDA COM CODIGO DE PESQUISA COM 2 CRITERIOS
Enviado: 20 Jun 2021 às 14:19
por nitro
Boa tarde agradecia ajuda a quem me conseguir resolver este problema, ja tentei de tudo e não consegui o resultado que pretendia
anexo ficheiro para testarem
obrigado
AJUDA1.xlsm
Re: AJUDA COM CODIGO DE PESQUISA COM 2 CRITERIOS
Enviado: 20 Jun 2021 às 16:57
por osvaldomp
Olá,
@nitro .
opção1 - por fórmula em C23:
Código: Selecionar todos=SE(CONT.SES(A2:A17;A23;B2:B17;B23);ÍNDICE(D2:D17;CORRESP(1;(A23=A2:A17)*(B23=B2:B17);0));SE(CONT.SES(A2:A17;A23;B2:B17;B23-1);ÍNDICE(D2:D17;CORRESP(1;(A23=A2:A17)*(B23-1=B2:B17);0));MÁXIMO(SE(A2:A17=A23-1;D2:D17))))
#
opção2 - por macro com botão na planilha, resultado em C24: (altere para [C23] se desejar)
Código: Selecionar todosSub Botão1_Clique()
[C24] = Evaluate("IF(COUNTIFS(A2:A17,A23,B2:B17,B23),INDEX(D2:D17,MATCH(1,(A23=A2:A17)*(B23=B2:B17),0))," & _
"IF(COUNTIFS(A2:A17,A23,B2:B17,B23-1),INDEX(D2:D17,MATCH(1,(A23=A2:A17)*(B23-1=B2:B17),0)),MAX(IF(A2:A17=A23-1,D2:D17))))")
End Sub
#
opção3 - por macro sem botão na planilha, resultado em C24: (altere para [C23] se desejar)
Cole uma cópia do código abaixo no módulo da planilha; para acessar clique com o direito na guia da planilha e escolha
Exibir Código. Para testar altere manualmente o ano em A23 e ou o mês em B23.
Código: Selecionar todosPrivate Sub Worksheet_Change(ByVal Target As Range)
If Intersect([A23:B23], Target) Is Nothing Then Exit Sub
If Target.Value = "" Then
[C24] = ""
Else: [C24] = Evaluate("IF(COUNTIFS(A2:A17,A23,B2:B17,B23),INDEX(D2:D17,MATCH(1,(A23=A2:A17)*(B23=B2:B17),0))," _
& "IF(COUNTIFS(A2:A17,A23,B2:B17,B23-1),INDEX(D2:D17,MATCH(1,(A23=A2:A17)*(B23-1=B2:B17),0)),MAX(IF(A2:A17=A23-1,D2:D17))))")
End If
End Sub
Re: AJUDA COM CODIGO DE PESQUISA COM 2 CRITERIOS
Enviado: 20 Jun 2021 às 17:23
por nitro
Muito obrigado osvaldomp , já funciona algumas coisas mas ainda não esta perfeito, se você reparar e como exemplo pode usar o ano de 2021 se a pesquisa for feita pelo mes 7,8 ou outro como não existe deveria retornar o valor do mês 1 que e o único na planilha , mas existisse o mês 2 deveria ser esse mês o do retorno , muito obrigado pela tentativa
Re: AJUDA COM CODIGO DE PESQUISA COM 2 CRITERIOS
Enviado: 20 Jun 2021 às 17:51
por osvaldomp
nitro escreveu: ↑20 Jun 2021 às 17:23
... usar o ano de 2021 se a pesquisa for feita pelo mes 7,8 ou outro como não existe deveria retornar o valor do mês 1 que e o único na planilha ,...
O critério que você colocou aí acima está diferente do critério que você colocou em H20 da planilha ~~~> QUANDO NÃO EXISTA MÊS ANTERIOR RETORNA O MAIOR VALOR DO ANO ANTERIOR
Para o ano de 2021 só existe o mês 1, então se colocar mês 7, como não existe mês imediatamente anterior ao mês 7, isto é, não existe mês 6, então a fórmula atende ao critério que está em H20, ou seja, retorna
14, que é o maior valor do ano anterior (2020). Ou entendi errado os seus critérios?
Re: AJUDA COM CODIGO DE PESQUISA COM 2 CRITERIOS
Enviado: 20 Jun 2021 às 18:10
por nitro
Talvez eu não me tenha explicado bem, a tabela com o tempo pode sofrer alterações, e não coloquei os meses e anos todos para ver se funcionava, vou tentar explicar, no ano 2021 só existe o mês 1 então ao fazer uma pesquisa com (ano 2021 e mês 1) retorna o valor do mês 1; se a pesquisa for feita pelo ( ano 2021 e mês 2,3,4,5,6,7,8,9,10,11,12) retorna o valor do mês 1 porque e o único mas se eu mais tarde cadastrar o ( mês 7) os meses 1,2,3,4,5,6 ) retornam o valor do mês 1 que e o anterior mas se pesquisar o (mês 7,8,9,10,11,12 ) retorna o valor do mês 7 que e o que esta anterior referente ao ano anterior imaginemos que eu tenho só o cadastro do ( ano 2021 e o mês 6) se fizer a pesquisa pelo mês (6,7,8,9,10,11,12) retorna o valor do mês 6, mas se fizer a pesquisa pelo mês (1,2,3,4,5) como não existe um mês desse ano anteriormente cadastrado tem de retornar o ultimo do ano anterior, o mesmo se passando com outro ano, espero ter conseguido explicar , muito obrigado
Re: AJUDA COM CODIGO DE PESQUISA COM 2 CRITERIOS
Enviado: 21 Jun 2021 às 09:54
por osvaldomp
Olá,
@nitro .
Com base no seu post anterior, eu considerei que você quer o maior mês que seja menor do que a referência em B23, e não o mês anterior. Já no caso de o ano não existir, aí considerei o ano anterior.
Experimente as fórmulas abaixo e veja se alguma atende.
Se o ano/mês buscados não existirem, a primeira fórmula retorna o maior valor da coluna D que corresponda ao ano anterior da referência A23 (A23-1), independente do mês e independente de B23. Já a segunda retorna o valor da coluna D que corresponda ao maior mês do ano anterior da referência A23 (A23-1).
Código: Selecionar todos=SEERRO(ÍNDICE(D2:D17;CORRESP(1;(A23=A2:A17)*(MÁXIMO((B2:B17)*((A2:A17)=A23)*((B2:B17)<=B23))=B2:B17);0));SE(CONT.SE(A2:A17;"="&A23-1);MÁXIMO((D2:D17)*((A2:A17)=A23-1)*((D2:D17)<>""));"CADASTRAR"))
Código: Selecionar todos=SEERRO(ÍNDICE(D2:D17;CORRESP(1;(A23=A2:A17)*(MÁXIMO((B2:B17)*((A2:A17)=A23)*((B2:B17)<=B23))=B2:B17);0));SEERRO(ÍNDICE(D2:D17;CORRESP(1;(A23-1=A2:A17)*(MÁXIMO((B2:B17)*((A2:A17)=A23-1)*((B2:B17)<>""))=B2:B17);0));"CADASTRAR"))