Recherche de la ligne précédente avec une valeur donnée

2

Disons que j'ai un tableau avec trois colonnes (l'ordre est important et ne peut pas être changé), les lignes sont triées par A:

   A                B            C
      date              ID     last_date
10/05/2015        29A06E95     
10/08/2015        E5A884C4
10/12/2015        D24F4975
10/12/2015        D24F4976
10/21/2015        29A06E95

Pour toute ligne, si l'ID apparaît également dans une ligne au-dessus de la ligne en cours, je souhaite renseigner la colonne C avec la date la plus récente (ou, puisque les lignes sont triées par A, la valeur de date de la ligne précédente avec le même ID ). Par exemple, le résultat ressemblerait à ceci:

   A                B            C
      date              ID      prev_date
10/05/2015        29A06E95        <blank>
10/08/2015        E5A884C4        <blank>
10/12/2015        29A06E95     10/05/2015
10/12/2015        D24F4976        <blank>
10/21/2015        29A06E95     10/12/2015

Comment puis-je faire cela (je n'ai pas été en mesure d'utiliser MATCH ou VLOOKUP car le premier trouve la première correspondance et le dernier veut la valeur de recherche dans la première colonne)?

En outre, j'ai déjà vu des solutions avec des formules matricielles, mais celles-ci ne semblent pas fonctionner dans un contexte de table de données.

Dmitry B.
la source

Réponses:

3

Cela fonctionne à partir d'Excel 2007. Sélectionnez C3et insérez cette formule:

=IFERROR(INDIRECT("A"&MAX(ROW(B$2:B2)*(B$2:B2=B3))),"")

Confirmez la formule par ctrl+ shift+ enter.

Faites glisser (ou copiez) là où vous en avez besoin.

SΛLVΘ
la source
J'ai mentionné dans ma question que les formules de tableau ne fonctionnent pas dans un contexte de tableau. Excel déclare: "les formules de tableaux à cellules multiples ne sont pas autorisées dans les tableaux"
Dmitry B.
Fait un test. Fonctionne bien, vous n'avez même pas besoin de le faire glisser vers le bas; Je viens de supprimer C2, car cela n’a aucun sens. Est-ce que je manque quelque chose?
Sam
Chaque fois que j'essaie de saisir une formule matricielle à l'aide de la combinaison de touches Ctrl + Maj + Entrée d'un tableau de données, Excel refuse de l'accepter avec l'erreur suivante: "les formules de tableau à cellules multiples ne sont pas autorisées dans les tableaux." Et oui, pas de VBA (du moins pas encore).
Dmitry B.
Ok, maintenant je vois ce que vous faites. Vous essayez d'insérer une formule ayant une plage sélectionnée. Ce n'est pas ce que j'ai écrit. S'il vous plaît suivez les instructions, j'ai essayé de les clarifier.
Sam
0

Ne pouvez-vous pas simplement créer une deuxième feuille avec les colonnes et les dates inversées? Parce qu'alors la solution est un simple vlookup.

Kalrunoor
la source
Le tableau actuel est suffisamment complexe pour ne pas constituer une solution privilégiée (c’est-à-dire que l’une des colonnes est la date suivante). En fait, non, VLOOKUP ne fonctionnera toujours pas car la colonne de clé n'est pas la première. MATCH fonctionnera.
Dmitry B.
0

Je pense que cela devrait le faire:

=IFERROR(IF(A2=INDEX(MIN($A$2:$A$6),MATCH(B2,$B$2:$B$6,0)),"",INDEX(MIN($A$2:$A$6),MATCH(B2,$B$2:$B$6,0))),"")

Placez ceci dans C2, éditez les plages selon vos besoins, entrez sous forme de tableau (avec CTRL+SHIFT+ENTER) et faites glisser vers le bas.

Edit: Okay tant pis, apparemment, les tableaux ne fonctionnent pas? Pouvez-vous clarifier ce que vous entendez par "contexte de table"? Les formules AFAIK Array devraient quand même fonctionner avec des tables, non?

Bruce Wayne
la source
@DmitryB. - merci pour cela, mais je ne vois pas où il est dit que vous ne pouvez pas utiliser de tableaux. Hm, je verrai si je peux obtenir cela d'une autre manière. Je suppose que vous ne voulez pas de solution VBA?
BruceWayne
1
C'était juste un lien pour définir ce qu'est une table (de données). Chaque fois que j'essaie d'ajouter une formule matricielle dans une table de données, Excel refuse avec le message suivant: "les formules matricielles multi-cellules ne sont pas autorisées dans les tables." Et oui, pas de VBA.
Dmitry B.
1
@ DmitryB.- pour ne pas rester trivial, mais vous entrez la formule dans une seule cellule, n'est-ce pas? Ne pas sélectionner une plage, entrer la formule, puis appuyer sur CTRL + MAJ + ENTRÉE, ouais?
BruceWayne