Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#65272
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
Você não está autorizado a ver ou baixar esse anexo.
#65273
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 todos
Sub 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 todos
Private 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
Editado pela última vez por osvaldomp em 20 Jun 2021 às 17:27, em um total de 1 vez.
nitro agradeceu por isso
#65275
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
#65276
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?
nitro agradeceu por isso
#65277
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
#65280
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"))
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord