# VBA Rangliste erstellen



## Hadl (12. Juli 2005)

Ich habe folgendes Problem:

Ich will die Auswertung eines Sportwettbewerbs in Excel machen, dazu habe ich eine Liste, welche die Daten jeder einzellnen Person enthält.

Für die Auswertung benötige ich die erreichte Platznummer jeder einzellnen Disziplin.

Ich dachte an eine VBA Funktion in der ich einfach alle Teilnehmer zähle, welche besser sind als der aktuelle.

Mein Problem ist, das ich in der Funktion nicht herausfinden kann in welcher Zeile diese ausgeführt wird um sie mit dem aktuellen Ergebniss zu vergleichen.

Gibt es für diesen Fall vielleicht auch ne andere Lösung?


----------



## Orakel (12. Juli 2005)

Hi Hadl,

klar kann man alles mit VBA machen, aber ohne dass wir hier auch nur annähernd eine Ahnung wie der Aufbau der Exceldatei ist, sehe ich für eine konkrete Hilfe eher schwarz.

Aber um etwas in Zellen zu suchen, kannst Du die Find Methode des Range Objektes verwenden. So aus dem Kopf:
Zellen markieren, in denen Du suchen möchtest:
Range("A1:A100").Select
Selection.Find("Name")
Zeichne doch einfach mal ein Makro auf, in dem Du nach einem bestimmten Namen in Deiner Exceldatei suchst. Dann bekommst Du die genaue Syntax der Find-Methode.

Gruß
Das Orakel

P.S.: Excel selber hat eingebaute Formeln, um aus Bereichen Werte zurückzuliefern. SVERWEIS oder WVERWEIS zum Beispiel.


----------



## Hadl (12. Juli 2005)

Das Suchen der Zellen und berechnen des Platzes stellt kein Problem dar.

Das einzige was mir fehlt ist die Adresse der Zelle, in der die Formel gerade ausgeführt wird, da ich von den Daten in der gleichen Zeile ausgehen muss.

Ich will z.B. berechnen, wieviele Werte kleiner sind als der Wert, welcher 1 Zelle Links von der Formel steht.

Mit der ActiveCell Eigenschaft bekomme ich immer nur die Zelle, in der der Cursor steht, jedoch nicht die, in welcher die Formel ausgeführt wird.


----------



## Orakel (12. Juli 2005)

Hi die Adresse erhälst Du durch die .Address Eigenschaft des Range oder Cell Objektes.

z. B. Range("B9").Address
oder  Cells(10, 30).Address

Gruß
Das Orakel


----------



## hotschen (12. Juli 2005)

Wiso nicht einfach ohne VBA mit der Funktion 'Rang'?


----------



## Orakel (12. Juli 2005)

Die Frage stelle ich mir auch manchmal. Gerade Excel hat soviele eingebaute Funktionen, mit denen sich unheimlich viel machen läst.

Gruß
Das fragende Orakel


----------



## Hadl (12. Juli 2005)

@ Orakel, wenn ich eine Konkrete Zelle habe funktioniert dein Beispiel gut.

z. B. Range("B9").Address
oder Cells(10, 30).Address

ist kein Problem. Auch ActiveCell.Address funktioniert, aber ich bräuchte die Zelle, in welcher die Formel gerade ausgeführt wird.

Dann zum weiteren:

Die eigentliche Berechnung funktioniert mit der Rang Funktion problemlos, jedoch muss ich den Range dynamisch machen, da der Rang ja nur innerhalb eines Jahrganges berechnet werden soll.

Ich brauche also den Range aller Teilnehmer, welche im gleichen Jahrgang sind wie derjenige in der Zeile, welche gerade berechnet wird.


----------



## Orakel (12. Juli 2005)

Hi Hadl,



> aber ich bräuchte die Zelle, in welcher die Formel gerade ausgeführt wird



Das verstehe ich nicht. So aus dem Gedächtnis ist mir keine Möglichkeit bekannt, die Zelle zu ermitteln, die gerade kalkuliert wird.

Ich kenne nur das Workbook_SheetCalculate, Workbook_SheetChange oder  Worksheet_Calculate Ereigniss, dass eintritt nachdem eine Neuberechnung von Formeln durchgeführt worden ist. (Wobei sich hier die Online Hilfe wiederspricht).

Vielleicht kannst Du das was Du möchtest etwas griffiger machen 

Gruß
Das grifflose Orakel


----------

