2017-07-24 2 views
0

J'ai un classeur avec 8 feuilles contenant un score dans la même cellule (I28). Les feuilles portent le nom des participants et contiennent des espaces. Je veux savoir quel est le score le plus élevé des 8 et, plus difficile, qui a ce score.Valeur de correspondance dans un tableau à plusieurs feuilles

Le score le plus élevé est facile à obtenir avec la fonction MAX ou LARGE (= MAX ('Sheet1: Sheet8' $ I $ 28), mais j'ai de la difficulté à obtenir ce score élevé. est-ce que nulle part sur la feuille, c'est seulement le nom de feuille qui a la référence

Comment est-ce que je peux faire correspondre Excel le score le plus élevé au bon participant sans énumérer les scores en premier? Et serait-il possible d'énumérer plus de noms au cas ? des scores égaux

Répondre

0

Essayez cette petite fonction définie par l'utilisateur:

Public Function PersonOfInterest() 
    Dim v As Variant, nam As String 
    Application.Volatile 
    nam = Sheet1.Name 
    v = Sheet1.Range("J28").Value 
    For i = 2 To 8 
     v2 = Sheets(i).Range("J28").Value 
     If v2 > v Then 
      v = v2 
      nam = Sheets(i).Name 
     End If 
    Next i 

    PersonOfInterest = nam 
End Function 

EDIT # 1:

fonctions définies par l'utilisateur (FDU) sont très faciles à installer et à utiliser:

  1. ALT-F11 ouvre la fenêtre VBE
  2. ALT-I ALT- M ouvre un module frais
  3. coller les choses et fermer la fenêtre VBE

Si vous enregistrez le classeur, l'UDF sera sauvegardé avec. Si vous utilisez une version d'Excel 2003, puis plus tard, vous devez enregistrer le fichier comme .xlsm plutôt que .xlsx

Pour supprimer l'UDF:

  1. faire apparaître la fenêtre VBE comme ci-dessus
  2. clairement le code à
  3. fermer la fenêtre VBE

Pour utiliser l'UDF à partir d'Excel:

= myfunction (A1)

Pour en savoir plus sur les macros en général, voir:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

et

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

et détails sur UDFs, voir:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

Les macros doivent être activées pour que cela fonctionne!

EDIT # 2:

Cette version retournera plus d'un nom:

Public Function PersonsOfInterest() 
    Dim v As Variant, nam As String 
    Dim i As Long, v2 As Variant 
    Application.Volatile 
    nam = Sheet1.Name 
    v = Sheet1.Range("J28").Value 
    For i = 2 To 8 
     v2 = Sheets(i).Range("J28").Value 
     If v2 > v Then 
      v = v2 
     End If 
    Next i 

    PersonsOfInterest = "" 
    For i = 1 To 8 
     If Sheets(i).Range("J28").Value = v Then 
      If PersonsOfInterest = "" Then 
       PersonsOfInterest = Sheets(i).Name 
      Else 
       PersonsOfInterest = PersonsOfInterest & ", " & Sheets(i).Name 
      End If 
     End If 
    Next i 
End Function 
+0

Merci pour la réponse. Bien que je ne sois pas complètement vert avec VBA, pourriez-vous m'éclairer où et comment implémenter ce code? Je veux que le nom soit retourné dans une cellule, au fait. –

+0

@ H.Vink Voir mon ** EDIT # 1 ** –

+0

Merci, cela fonctionne comme un charme quand je laisse les supports vides. Il ne montre cependant pas plusieurs noms lorsque les participants ont le même score le plus élevé, ce qui est effectivement le cas. Pourriez-vous nous aider, s'il vous plaît? –