Excel

  • #1
R

Ralle9900

Mitglied
Themenersteller
Dabei seit
07.12.2002
Beiträge
12
Reaktionspunkte
0
Ort
Bochum
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
 
Thema:

Excel

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben