2017-07-24 4 views
0

Ich habe eine Arbeitsmappe mit 8 Blatt, die eine Partitur in der gleichen Zelle (I28) enthalten. Die Blätter sind nach den Teilnehmern benannt und enthalten Leerzeichen. Ich möchte wissen, welches die höchste Punktzahl der 8 ist und, schwieriger, wer diese Punktzahl hat.Match-Wert in mehreren Blättern Array

Die höchste Punktzahl ist mit der MAX- oder LARGE-Funktion (= MAX ('Sheet1: Sheet8' $ I $ 28)) leicht zu bekommen, aber ich habe Schwierigkeiten, diesen Highscore mit dem Teilnehmer zu vergleichen Nirgends auf dem Blatt, nur der Name des Blattes, auf dem die Referenz steht

Wie kann ich Excel mit der höchsten Punktzahl mit dem richtigen Teilnehmer vergleichen, ohne die Ergebnisse zuerst aufzulisten, und wäre es möglich, weitere Namen für den Fall aufzulisten ? von gleichem Punktzahl

Antwort

0

diesen kleinen User Defined Function Versuchen:

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:

User Defined Functions (UDF) sind sehr einfach zu installieren und zu verwenden:

  1. ALT-F11 bringt das VBE-Fenster
  2. ALT-I ALT- M öffnet ein neues Modul
  3. das Material einfügen in und das VBE-Fenster

schließen Wenn Sie speichern Die Arbeitsmappe, die UDF wird damit gespeichert. Wenn Sie eine Version von Excel verwenden später dann 2003 müssen Sie die Datei als XLSM statt .xlsx

speichern Sie die UDF zu entfernen:

  1. das VBE-Fenster wie oben
  2. bringen
  3. klar, dass der Code aus
  4. schließen Sie das Fenster VBE

die UDF von Excel zu verwenden:

= myfunction (A1)

Um mehr über Makros im Allgemeinen finden Sie unter:

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

und

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

und für Einzelheiten auf UDFs finden Sie unter:

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

Makros müssen aktiviert sein, damit dies funktioniert!

EDIT # 2:

Diese Version wird wieder mehr als ein Name:

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

Vielen Dank für die Antwort. Obwohl ich nicht ganz grün mit VBA bin, können Sie mir aufklären, wo und wie dieser Code implementiert wird? Ich möchte übrigens, dass der Name in einer Zelle zurückgegeben wird. –

+0

@ H.Vink Siehe meine ** EDIT # 1 ** –

+0

Danke, das funktioniert wie ein Charme, wenn ich die Klammern leer lassen. Es zeigt jedoch nicht mehrere Namen, wenn Teilnehmer die gleiche höchste Punktzahl haben, was tatsächlich der Fall ist. Könntest du bitte auch damit helfen? –

Verwandte Themen