Diviser les informations

J'ai un fichier Excel avec plusieurs lignes (environ 1k). Chaque ligne décrivez une action d'un utilisateur et (ma mauvaise) pour différentes actions, il existe différentes lignes. Quelque chose comme ça

action user =============== ===== r1 lore ipsum 1 user1 r2 lore ipsum 2 user1 r3 lore ipsum 3 user2 r4 lore ipsum 1 user2 r5 lore ipsum 2 user3 r6 lore ipsum 4 user1 r7 lore ipsum 5 user1 

Comme vous pouvez le voir, j'ai plusieurs actions pour user1. Tout ce dont j'ai besoin consiste à mettre sur une seule ligne toutes les actions de user1 et sur les autres lignes les autres actions pour les autres utilisateurs (de la même manière que pour user1) witohut en double sur la colonne "utilisateur". Quelque chose comme ça:

  action user =============== ===== r1 lore ipsum 1 user1 lore ipsum 2 lore ipsum 4 lore ipsum 5 r2 lore ipsum 3 user2 lore ipsum 1 r3 lore ipsum 2 user3 

Comment puis je faire ça? Merci beaucoup

Voici un exemple de la façon dont vos données peuvent être stockées:

Les données

Sélectionnez l'une des cellules de la table, tout comme la photo ci-dessus. Ensuite, allez dans le menu Insérer> Tables pivotantes. Il sélectionnera toutes vos données et affichera une boîte de dialogue comme ceci:

Nouvelle table pivot

Je suis désolé! Mon Excel est en portugais, mais je crois que vous pouvez suivre les images.

Cliquez sur OK. Il créera une nouvelle feuille, comme ceci:

La nouvelle feuille est maintenant créée

Et un menu s'affiche à droite:

Champs de table pivot

Faites glisser et déposez l' user , l' action glisser-déposer, sur l'étiquette de ligne, dans la zone de gauche à bas.

Étiquette de rangée

Le résultat ressemblera à:

Résultat final

Voyez si cela vous convient, ou si vous voulez autre chose. Nous pouvons travailler sur quelque chose à ce stade, mais peut-être que cela aura besoin, je ne sais pas.

Désolé le délai de réponse, je suis en période de travail;)

Créez une nouvelle table à droite de votre table existante, mettez les utilisateurs sur la gauche, puis créez une colonne pour chaque action possible. C'est le seul moyen fiable d'enregistrer qui a fait les actions.

Ensuite, créez une colonne à gauche de votre table existante contenant cette formule:

 =UserColumnCell&ActionColumnCell ie =$C2&$B2 

Cela vous donnera une valeur que vous pouvez utiliser pour créer un VLOOKUP dans votre nouvelle table, tel que User1Lore ipsum 1 .

Revenez à votre nouvelle table et dans la première cellule de la colonne d'action la plus à gauche, ajoutez cette formule:

 =IF(ISERROR(VLOOKUP(UserColumnCell&ActionColumnTitle),FirstTableRange,2,FALSE)),0,1) ie =IF(ISERROR(VLOOKUP(E2&F1,$A$2:$C$1000,2,FALSE),0,1) 

Parce que nous n'avons pas corrigé les références de la cellule dans la première moitié de la formule, vous pouvez maintenant faire glisser la formule pour chaque Action et vers le bas pour chaque utilisateur et elle s'ajuste en conséquence.

Enfin, copiez toutes les données que nous venons de créer et collez-le sur lui-même, en consultant le type de pâte en tant que valeurs. Vous pouvez savoir détruire votre table d'origine.

De toute évidence, si vous voulez un drapeau différent pour l'action en cours, changez le 1 et le 0. Par exemple, si vous voulez une petite coche, vous pouvez le laisser tel quel et utiliser le formatage conditionnel pour 'cellules basées sur leurs valeurs' définies pour L'icône de l'icône Tick, ou vous pouvez simplement définir la police de chacune des colonnes Action à Marelett et remplacer 0,1 par "","a" comme une marque dans Marlett.

Si vous utilisez des tables, vous pouvez simplifier cela en utilisant des références de table. Lorsque votre table existante est le Tableau 1 et la nouvelle est le Tableau 2:

La formule de la colonne 1 du tableau 1 serait:

 =[@User]&[@Action] 

Ensuite, la formule dans chacune des colonnes d'action du tableau 2 serait:

 =IF(ISERROR(VLOOKUP([@User]&Table2[[#Headers],[lore ipsum 1]],Table1,2,FALSE)),0,1) 

Bien que si vous faites cela, vous devrez réinitialiser la référence [@User] une fois que vous faites glisser la formule car elle aura dérivé.

Alors, qu'est-ce que cela fait?
Au cas où vous n'êtes pas expérimenté avec VLOOKUP: l'instruction IF permet de dicter ce que nous produisons, plutôt que de simplement renvoyer la valeur que VLOOKUP trouve.

L'ISERROR renverra un vrai ou un faux selon que le VLOOKUP trouve ou non quelque chose

Le VLOOKUP recherche cette formule concaténée que nous avons construite, pour voir si elle peut trouver un résultat dans cette colonne qui correspond à la combinaison de l'utilisateur et de l'action pertinente à cette colonne et au combo de ligne dans le Tableau 2, si elle le trouve, il le renvoie ISERROR retourne comme faux, et s'il ne trouve rien, il en résulte des erreurs, ce qui rend l'ISERROR comme étant vrai.

La sortie de l'ISERROR est TRUE ou FALSE, si elle est TRUE puis il n'y a pas de correspondance, alors on laisse un 0 ou un blanc si vous préférez montrer que cet utilisateur n'a pas complété cette action. Si elle renvoie un FALSE, l'utilisateur a terminé cette action pour qu'il retourne un 1 ou a pour une coche ou tout ce que vous préfériez.

MODIFIER
Cette réponse est basée sur vous désireux de repenser votre table. Si vous voulez garder votre table comme c'est le cas, je vous signalerais le commentaire de Math sur les tables pivotantes, car elles seraient la meilleure façon de le faire si vous deviez garder votre structure de table d'origine mais présenter les données d'une manière différente.