Excel

Dieses Thema Excel im Forum "Microsoft Office Suite" wurde erstellt von Ralle9900, 22. Feb. 2003.

Thema: Excel Hallo User's, habe da ein Problem. Ich habe in 7 Zellen verschiedene Werte von 1- 100. Nun möchte ich die größten 3...

  1. Hallo User's,

    habe da ein Problem. Ich habe in 7 Zellen verschiedene Werte von 1- 100. Nun möchte ich die größten 3 Werte ermitteln um diese Zwischenzuspeichern.

    Hat jemand eine Idee oder Lösung?

    Gruß Ralle9900
     
  2. Hi :)

    vielleicht hilfts:

    Schon mit der Sortieren Funktion probiert ?

    Gruß Christian
     
  3. Hi Ralle9900,

    hab dir als Beispiel einen Makro geschrieben, der aus einer Selektion die drei höchsten numerischen Werte selektiert und in die Zwischenablage kopiert, so dass man den Cursor in eine belibige Zelle setzen kann und dort diese Werte mit 'Einfügen' ablegt.

    Gruß Matjes :)


    Code:
    Option Explicit
    
    Sub DieDreiHöchstenNumerischenWerteKopieren()
    'kopiert die drei höchsten numerischen Werte
    'des selektierten Bereichs in die Zwischenablage
    
    Dim zelle As Range
    Dim ws As Worksheet 'Merker für aktives Blatt
    Dim ws_add As Worksheet 'Hilfsblatt
    Dim l_c_add As Long 'Zeilenzähler auf Hilfsblatt
    Dim r1 As Range, r2 As Range, r3 As Range
    'Spalten auf dem Hilfsblatt
    Const c_value = 1
    Const c_row = 2
    Const c_col = 3
    
      'Ausgangstabelle merken
      Set ws = ActiveSheet
      
      'Hilfsblatt am Ende anfügen
      ActiveWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count)
      Set ws_add = Worksheets(Worksheets.Count)
      l_c_add = 0 'Zaehler Zeilen auf dem Hilfsblatt
      
      
      ws.Activate
      'alle selektierten Zelllen untersuchen
      For Each zelle In Selection
        'Zellinhalt numerisch ?
        If ((Not IsEmpty(zelle)) And (IsNumeric(zelle.Value))) Then
          'Wert, Zeile, Spalte der Zelle auf Hilfsblatt merken
          l_c_add = l_c_add + 1
          ws_add.Cells(l_c_add, c_value) = zelle.Value
          ws_add.Cells(l_c_add, c_row) = zelle.Row
          ws_add.Cells(l_c_add, c_col) = zelle.Column
        End If
      Next
      
      'mindestens 3 Werte
      If l_c_add > 2 Then
        'Hilfstabelle nach Wert absteigend sortieren
        ws_add.Activate: ws_add.Cells.Select
        Selection.Sort Key1:=Range(Cells(1, c_value), Cells(1, c_value)), Order1:=xlDescending, _
                      Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        
        
        'die drei Zellen mit den höchsten Werten festlegen
        ws.Activate
        Set r1 = ws.Range(Cells(ws_add.Cells(1, c_row), ws_add.Cells(1, c_col)), _
                          Cells(ws_add.Cells(1, c_row), ws_add.Cells(1, c_col)))
        Set r2 = ws.Range(Cells(ws_add.Cells(2, c_row), ws_add.Cells(2, c_col)), _
                          Cells(ws_add.Cells(2, c_row), ws_add.Cells(2, c_col)))
        Set r3 = ws.Range(Cells(ws_add.Cells(3, c_row), ws_add.Cells(3, c_col)), _
                          Cells(ws_add.Cells(3, c_row), ws_add.Cells(3, c_col)))
        
        'Hilfsblatt löschen
        Application.DisplayAlerts = False 'Nachfragen abschalten
        ws_add.Delete
        Application.DisplayAlerts = True
        
        'auf dem Ausgangsblatt die drei höchsten Werte der Selektion neu selektieren
        'und kopieren (zwischenablage)
        ws.Activate
        Union(r1, r2, r3).Select
        Selection.Copy
        
      End If
    End Sub
    
     
  4. Danke euch beiden,

    habe auch noch etwas rumprobiert:
    Sub test()
    Dim rng As Range
    Dim SummeDerDreiGroessten As Double 'Beispiel
    Set rng = Worksheets(Tabelle1).Range(C3:C9) 'Beispiel
    SummeDerDreiGroessten = _
    Application.WorksheetFunction.Large(rng, 1) + _
    Application.WorksheetFunction.Large(rng, 2) + _
    Application.WorksheetFunction.Large(rng, 3)
    End Sub
     
  5. Ola,

    es geht auch ohne Programmierung mit der Funktion kgrösste() ;D

    KGRÖSSTE
    Liefert den k-größten Wert einer Datengruppe. Mit dieser Funktion können Sie eine Zahl auf Basis ihrer relativen Größe ermitteln. Beispielsweise können Sie mit KGRÖSSTE den Punktestand des Erst-, Zweit- oder Drittplatzierten ermitteln.

    ist übrigens identiswch mit der im zweiten Fall angewendeten Funktion large ;D
     
  6. Hallo PCDjoe,

    hast recht, so geht es auch :)

    =KGRÖSSTE($C$3:$C$9;1) + KGRÖSSTE($C$3:$C$9;2) +KGRÖSSTE($C$3:$C$9;3)

    gruß Ralle
     
  7. ;D
     
Die Seite wird geladen...

Excel - Ähnliche Themen

Forum Datum
Excel-Feature gesucht Microsoft Office Suite 11. Okt. 2016
Excel Tabelle Werte zu ordnen Microsoft Office Suite 23. Sep. 2016
Excel: Bereiche auf 'leer' Überprüfen Microsoft Office Suite 15. Sep. 2016
Import Datensatz inkl = und - Zeichen in Excel/Libre CALC Software: Empfehlungen, Gesuche & Problemlösungen 20. Mai 2016
Bestimmter User kann seine Excel Dateien nicht mehr direkt öffnen Software: Empfehlungen, Gesuche & Problemlösungen 16. Apr. 2016