2009-09-24 8 views
0

J'ai deux tables, comme celle-ci:Tri d'une plage par l'ordre d'une autre liste dans Excel

Tableau 1

 
    A 
1 FirstPhase 
2 SecondPhase 
3 ThirdPhase 
4 FourthPhase 

Tableau 2

 
    A  B 
1 Item1 FirstPhase 
2 Item4 FourthPhase 
3 Item2 SecondPhase 
4 Item3 ThirdPhase 

Le résultat Je veux atteindre après le tri est:

 
    A  B 
1 Item1 FirstPhase 
2 Item2 SecondPhase 
3 Item3 ThirdPhase 
4 Item4 FourthPhase 

Comment puis-je trier la deuxième table par la colonne B selon l'ordre de la colonne A dans la première table?

+0

Vous ne devriez pas avoir réglé ceci sur 'Community Wiki', vous auriez probablement eu plus d'entrées. Je verrai ce que je peux comprendre. –

+0

Comment ça? Cela ne se retrouve-t-il pas parmi les questions normales? –

+0

Beaucoup de gens ne prendront pas le temps de trouver des questions difficiles s'ils ne veulent pas avoir de représentant. Je suis assez enterré en ce moment, mais je prévois de travailler dessus. –

Répondre

3

La première étape consiste à créer une liste personnalisée.

  • Dans Excel 2007, cliquez sur l'Office Icône
  • Sélectionnez Options Excel - Popular - Modifier les listes personnalisées
  • Cliquez sur «liste d'importation à partir de cellules de bouton de plage
  • Sélectionnez vos données, puis appuyez sur la touche Entrée
  • Cliquez sur le bouton Importer
  • Cliquez sur OK, puis à nouveau sur OK

Pour trier avec une liste personnalisée.

  • Sélectionnez les données à trier.
  • Cliquez sur l'onglet Accueil et Trier & Filtre
  • Sélectionnez le tri personnalisé
  • Sélectionnez la colonne pour trier sur
  • Puis déroulante sur l'ordre et sélectionnez Liste personnalisée
  • Sélectionnez votre liste personnalisée
  • Cliquez sur OK, puis à nouveau sur OK

Dans code

Sub MakeCustomListAndSort() 

Application.AddCustomList ListArray:=Sheets("Sheet1").Range("A1:A4"), ByRow:=True 
'Create the custom list 

ActiveWorkbook.Worksheets("Sheet2").Range("A1:B4").Sort Key1:=Range("B1:B4"), _ 
Order1:=xlAscending, Header:=xlGuess, _ 
OrderCustom:=Application.CustomListCount + 1, MatchCase:=False, _ 
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal 
'Sort with latest custom list 

Application.DeleteCustomList Application.CustomListCount 
'Delete the latest custom list 

End Sub 
+0

J'ai regardé les listes personnalisées et j'avais l'impression qu'elles ne sont copiées qu'à partir des cellules que vous importez, et qu'elles ne sont pas mises à jour lorsque ces cellules changent. Est-ce vrai? –

+0

Correct, les listes personnalisées ne sont pas mises à jour après la création sans intervention de l'utilisateur. Le code permet de contourner ce problème, car la plage utilisée pour créer la liste personnalisée peut être modifiée. –

+0

J'ai réussi à le faire fonctionner, merci! Cependant, j'ai utilisé 'Key1: = Range (" B1 ")' et j'ai fait le tri sur une plage nommée à la place. –

Questions connexes