PROCV condicional com base em datas

PROCV condicional com base em datas

Tenho duas tabelas que desejo mesclar no Excel:

Data E-mail
07/07/2019 06:49:10 correio1
14/07/2019 20:21:16 correio2
23/06/2019 18:22:40 correio3
11/08/2019 13:17:54 correio4

E

Data E-mail Número do artigo
02/04/2019 15:11 correio1 Não 1
08/08/2019 20:21 correio1 Número 5
06/05/2019 16h30 correio2 Não 1
09/07/2019 13:00 correio2 Não 2
09/08/2019 12h43 correio2 N ° 3
05/05/2019 18:13 correio3 Não 7
28/06/2019 09:00 correio4 Número 6

Quero mesclar essas tabelas no Email. Para 'mail3' e 'mail4', isso deve ser bastante simples, eles recebem o número 7 e o número 6. No entanto, para 'mail1' e 'mail2', isso é mais difícil. Quero mesclá-los comparando as datas, para que obtenham o número do artigo relacionado à data mais próxima, masantesa data na tabela 1. Tentei o VLOOKUP normal para mesclar no e-mail, mas não consigo descobrir se é possível fazer isso condicionalmente. Por favor, deixe-me saber se você precisar de mais informações. Obrigado.

Responder1

Eu acho que você deveria optar por INDEXe MATCHjunto com AGGREGATE. Este combo é sempre pelo menos tão rápido VLOOKUPe, na melhor das hipóteses, MUITO mais rápido!

Então aqui está um exemplo:

insira a descrição da imagem aqui

Fórmula em C2:

=INDEX($G$2:$G$8,MATCH(AGGREGATE(14,3,($F$2:$F$8=B2)*($E$2:$E$8<A2)*($E$2:$E$8),1),$E$2:$E$8,0))

Arraste para baixo...


Para responder às preocupações de @Rajesh abaixo, isso funciona em qualquer linha, desde que você atualize as referências de acordo, linha 1, 100, 1000, 100000. Não importa. Não se esqueça de usar valores de data verdadeiros e TRIMos dados de amostra fornecidos pelo OP:

insira a descrição da imagem aqui

Fórmula em C182:

=INDEX($G$182:$G$188,MATCH(AGGREGATE(14,3,($F$182:$F$188=B182)*($E$182:$E$188<A182)*($E$182:$E$188),1),$E$182:$E$188,0))

Responder2

Esta fórmula de matriz simples (CSE) encontra a correspondência mais próxima para a data e corrige o problema:

insira a descrição da imagem aqui

Fórmula editada no segundo trimestre:

{=IF(ISBLANK(O2),"",IFERROR(INDEX($U$2:$U$9,MATCH(1,(P2=$T$2:$T$9)*(O2>=S$2:S$9),1)),""))}
  • Finalize a fórmula comCtrl+Shift+Entere preencha.

Observação

  • A correspondência do armário é uma questão discricionária, pode serGreater/Less than or Equals to the Criteria Date.

  • Portanto, consequentemente o operador de comparação pode ser alterado nesta parte da fórmula com (O2>=S$2:S$9).

Ajuste as referências de células na fórmula conforme necessário.

informação relacionada