J'ai besoin d'obtenir le coût de quelque chose en comparant les dates des articles à une date de commande pour un ou plusieurs articles identiques avec des dates d'articles différentes, et en veillant à sélectionner la date de l'article qui est inférieure mais la plus proche de la date de la commande.
Plus précisément, j'ai besoin d'obtenir la valeur
Price
de la feuilleItems
en comparant lesDate
s dans la feuilleItems
avec leOrder Date
Sélectionné à partir de la feuilleOrders
. Assurez-vous de sélectionner lePrice
qui est inférieur mais le plus proche duOrder Date
DansLabels
pour leID1
Donné.
Je peux obtenir le prix du
ID1
Donné; cependant, si deux ou plusieursID1
partagent la même date que la formule suivante se casse.
IF($B$2:$B <> "",ARRAYFORMULA(VLOOKUP(MAX(FILTER(FILTER(Items!$C$2:$C,Items!$A$2:$A = B2),FILTER(Orders!$B$2:$B,Orders!$A$2:$A = A2) >= FILTER(Items!$C$2:$C,Items!$A$2:$A =B2))),{Items!$C$2:$C,Items!$B$2:$B},2,0)),"")
La formule ici fonctionne pour la première recherche; cependant, si la même date est utilisée pour d'autres éléments, la formule se rompt et renvoie le premier. Cela est dû à la façon dont la fonction RECHERCHEV utilise la date pour rechercher les entrées; cependant, je ne sais pas comment le faire, donc il utilise ID1
comme filtre.
Étape 1: obtenez Order Date
De ID2
INDEX(Orders!$B$2:$B,MATCH(A2,Orders!$A$2:$A,0))
ou FILTER(Orders!$B$2:$B,Orders!$A$2:$A = A2)
Étape 2: Obtenez Price
à partir de ID1
FILTER(Items!$C$2:$C,Items!$A$2:$A = B2)
Étape 3: Comparez le Item
Date
au Order Date
Et obtenez le Date
qui est inférieur mais le plus proche du Order Date
MAX(FILTER(FILTER(Items!$C$2:$C,Items!$A$2:$A = B2),FILTER(Orders!$B$2:$B,Orders!$A$2:$A = A2) >= FILTER(Items!$C$2:$C,Items!$A$2:$A =B2)))
Je crois que c'est incorrect, mais je ne sais pas comment le faire utiliser ID1 comme filtre, ou obtenir la valeur la plus proche au lieu de renvoyer toutes les valeurs avant la date de commande.
Étape 4: Obtenez le prix sélectionné.
Si je n'ai pas clarifié la question, je ferai de mon mieux pour l'expliquer davantage.
Il manque quelque chose à votre formule.
Vous n'avez pas pris en compte la variable ID1
Dans la feuille Items
.
Il s'agit de la formule corrigée pour la cellule C2
Dans la feuille Products
:
=IF($B$2:$B <> "",ARRAYFORMULA(VLOOKUP(MAX(FILTER(FILTER(Items!$C$2:$C,Items!$A$2:$A = B2),FILTER(Orders!$B$2:$B,Orders!$A$2:$A = A2) >= FILTER(Items!$C$2:$C,Items!$A$2:$A =B2))),{Items!$C$2:$C,Items!$B$2:$B}*(Items!$A$2:$A=B2),2,0)),"")
Ce qui est nécessaire est l'ajout de *(Items!$A$2:$A=B2)
pour que la dernière partie de votre formule devienne {Items!$C$2:$C,Items!$B$2:$B}*(Items!$A$2:$A=B2)
Veuillez consulter la colonne corrigée