3 votes

Concaténation des valeurs de plusieurs correspondances dans une seule cellule

J'ai une feuille de calcul que j'essaie de configurer comme suit :

A    | B       | C       | D         | ... | G        | H
Date   Trainer   Trainee   Procedure         Employee   Credentials
...    Aster     Lisa      A                 Aster      A
...    Frank     Lisa      B                 Frank      C, A
...    Frank     Aster     A                 Lisa       A, B, C
...    Lark      Frank     C                 Lark       
...    Lark      Frank     A
...    Frank     Lisa      C

Ma question est la suivante : quelle sorte de formule pourrais-je utiliser pour que la colonne des habilitations contienne une liste concaténée de chaque procédure dont l'entrée stagiaire correspond à l'entrée employé ? Idéalement, il ne devrait pas être nécessaire de trier les données, car elles sont déjà triées par date.

2voto

bjnsn Points 121

Je propose une solution qui fonctionnera dans LibreOffice Calc 5.4. Elle utilise une fonction TEXTJOIN intégrée qui n'est disponible que dans les versions récentes de LibreOffice Calc. Donc, si vous utilisez une version plus ancienne, essayez de passer à la version 5.4.

Dans cet exemple, les données de l'échantillon se trouvent dans les cellules C2:D8. Laissez également la première ligne comme ligne d'en-tête pour que la formule fonctionne correctement, car la première ligne est référencée dans la solution pour fonctionner correctement.

Les noms des stagiaires sont placés dans les cellules E2:E6.

Maintenant, dans F2, mettez la formule suivante.

=IFERROR(TEXTJOIN(",",1,IFERROR(INDEX($D$2:$D$8,N(IF(1,IF($C$2:$C$8=E2,ROW($D$2:$D$8)-ROW($D$1),9^99)))),"")),"")

Appuyez sur CTRL + SHIFT + ENTER (CSE) dans la barre de formule pour créer une formule de tableau. Sans CSE, la formule ne fonctionnera pas correctement.

Maintenant, copiez et collez cette formule dans toutes les cellules applicables de F3 à F6. Cette formule a été testée sur le système d'exploitation Windows, mais elle devrait fonctionner correctement même si vous êtes sous Linux.

Puisque votre Tag mentionne LibreOffic Calc, cette solution est un peu spécifique à LibreOffice Calc. Si vous êtes sur MS Excel TEXTJOIN n'est disponible que dans la version Office 2016 et je suppose Office 365. Dans ce cas, si TEXTJOIN n'est pas disponible en natif, vous devez en coder un en VBA.

enter image description here

0voto

Jim K Points 3356

Les différentes façons de procéder dans une feuille de calcul sont décrites à l'adresse suivante Excel - Comment faire un vlookup pour retourner plusieurs valeurs ? Cela se fait principalement à l'aide de formules de tableau qui trouvent une "Procédure" dans chaque cellule. Ces cellules peuvent ensuite être jointes pour afficher les "Références".

Cependant, mon choix serait d'utiliser Base avec un moteur tel que MySQL. La requête utiliserait GROUP_CONCAT() comme décrit à https://stackoverflow.com/a/194875/5100564 . Les données peuvent être déplacées vers la base en faisant glisser et en déposant une sélection de Calc vers l'icône Tables.

Les versions plus récentes de HSQL supportent également GROUPE_CONCAT . Cependant, l'ancien HSQL 1.8 qui est intégré à LibreOffice ne le fait pas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X