|
| Autor |
Nachricht |
moepy Newbie

Anmeldedatum: 13.07.2010 Beiträge: 4
|
Sortierung von Tabellenwerten (Ranking)
Verfasst am: 16.07.2010, 11:02 |
|
|
Hallo!
Ich bin neu hier und hätte mal ne Frage zu ner Sortierung mit VBA.
Und zwar soll ich ein Programm schreiben welches verschiedene Umsätze einem Ranking unterzieht.
Hier mal die Aufgabenstellung:
In einer Tabelle sollen Umsätze einem Ranking unterzogen werden. Es soll dem höchsten Umsatz eine 1 zugeordnet werden, usw.
Anhand dieser Aufgabe erstellen Sie folgende Lösungen:
- In einer Tabelle sind die Spalten A und B (A=Name des Mitarbeiters, B=Umsatz des jeweiligen Mitarbeiters) gegeben. Geben Sie die Rankingzahlen in Spalte C aus.
- Schreiben Sie ein Makro welches das aktuelle Ranking wieder löscht, um neue Daten weiterer Mitarbeiter hinzuzufügen.
Soweit mal zur Aufgabenstellung. Ich habe mir überlegt die Daten aus der Spalte B (also die Umsätze) in ein Array zu schreiben welches dann sortiert wird und die jeweilige Positionierung in die jeweilige Zeile schreibt. (Er muss sich also merken welcher Wert wo steht). Er soll also NICHT den höchsten Wert nach oben schreiben, sondern die Umsätze in der Zelle belassen und nur in die Zelle dahinter den jeweiligen Rang des Umsatzes (1,2,3....) schreiben!
Leider klappt das bei mir überhaupt nicht, da ich schon Probleme habe das Array zu erstellen, da er in der Arraydefinition einen festen Wert haben will - der Wert ändert sich ja aber immer, da die Anzahl der Werte (=Anzahl der Mitarbeiter/Umsätze) nicht festgelegt ist.
Hab das mal soweit geschrieben:
----
Dim IntI As Integer
Dim IntPosition As Integer
Dim Werte()
Sub Einlesen()
Cells(Rows.Count, 2).End(xlUp).Select
IntPosition = ActiveCell.Row
'MsgBox (IntPosition)
Dim Werte(IntPosition - 1)
For IntI = 2 To IntPosition
End Sub
-----
Die Position der Werte liest er schonma richtig aus, das Array lässt sich so aber nicht definieren. Von der Sortierung mal ganz zu schweigen.
Gibt es vielleicht eine leichter Lösung anstatt eines Arrays?
Hoffe es kann mir jemand weiterhelfen!
Vielen Dank im Voraus!
Gruß Julian |
|
| |
|
 |
moepy Newbie

Anmeldedatum: 13.07.2010 Beiträge: 4
|
Verfasst am: 16.07.2010, 11:02 |
|
|
so hab gestern noch mal versucht etwas weiter zu machen, er liest jetzt zumindest mal die werte ins array....jetzt ist die frage wie ich das sortieren lasse, am besten mit ner for schleife dachte ich?
| Code: |
Sub Einlesen()
'IntMerker = 0
Cells(Rows.Count, 2).End(xlUp).Select
IntAnzahl = ActiveCell.Row
ActiveCell.Offset(0, 1).Range("A1").Select
'MsgBox (IntAnzahl)
ReDim Werte(IntAnzahl - 1)
For IntI = 1 To IntAnzahl - 1
Werte(IntI) = ActiveSheet.Cells(IntI + 1, 2).Value
'MsgBox (Werte(IntI))
Next
End Sub
|
|
|
| |
|
 |
moepy Newbie

Anmeldedatum: 13.07.2010 Beiträge: 4
|
Verfasst am: 16.07.2010, 11:03 |
|
|
sooo...bin jetzt zumindest mal soweit, dass er mir das minimum rausfindet...aber so wirklich funktioniert das trotzdem noch nicht
| Code: | Option Explicit
Dim IntAnzahl As Integer
Dim Werte()
Dim IntI As Integer
Dim IntJ As Integer
Dim IntX As Integer
Dim IntMin As Integer
Sub Einlesen()
'IntMerker = 0
Cells(Rows.Count, 2).End(xlUp).Select
IntAnzahl = ActiveCell.Row
ActiveCell.Offset(0, 1).Range("A1").Select
'MsgBox (IntAnzahl)
ReDim Werte(IntAnzahl - 1)
For IntI = 1 To IntAnzahl - 1
Werte(IntI) = ActiveSheet.Cells(IntI + 1, 2).Value
'MsgBox (Werte(IntI))
Next
IntMin = Werte(1)
For IntJ = 1 To IntAnzahl - 1
If Werte(IntJ) <= IntMin Then
IntMin = Werte(IntJ)
ActiveSheet.Cells(IntJ + 1, 3).Value = IntAnzahl - 1
End If
Next
MsgBox (IntMin)
IntAnzahl = IntAnzahl - 1
MsgBox (IntAnzahl)
'Next
End Sub
|
|
|
| |
|
 |
moepy Newbie

Anmeldedatum: 13.07.2010 Beiträge: 4
|
Verfasst am: 18.07.2010, 19:15 |
|
|
niemand dabei der helfen kann?  |
|
| |
|
 |
|
|