zweitgrößten Wert einer Zeile mit vba und als Schleife ermitteln

30/08/2008 - 13:30 von fabian.lotz | Report spam
Hallo zusammen,

ich habe ein kleines Problem mit einer Makroprogrammierung und hoffe,
dass Ihr mir helfen könnt!

Ich habe ein Tabellenblatt auf dem ich für ein jeweiliges Datum vier
Preise habe. Nun möchte ich gerne für jeden Tag den zweitkleinsten und
den zweitgrößten Wert durch ein Makro ermitteln und ein die
entsprechende Zelle, der aktuellen Zeile schreiben lassen. Das ganze
soll dann mit einer Schleife arbeiten und jeden für jeden Tag
durchgeführt werden.
Hier die Struktur, die die Tabelle hat, bzw dann haben sollte :
Tag1 I Preis 1 I Preis 2 I Preis 3 I Preis 4 I zweitkleinster
Preis I zweitgrößter Preis
Tag2 I Preis 1 I Preis 2 I Preis 3 I Preis 4 I zweitkleinster
Preis I zweitgrößter Preis
Tag3 I Preis 1 I Preis 2 I Preis 3 I Preis 4 I zweitkleinster
Preis I zweitgrößter Preis
.


Ich habe schon probiert mein Problem durch googlen und ausprobieren zu
lösen, komme aber leider nicht darauf!

Mein Ansatz bisher war folgender:
Sub zweitgrößterpreis()
For i = 13 To 1045

Cells(i, 12).Value = WorksheetFunction.Large(Range(Cells(i,
2).Value : Cells(i, 5).Value), 2)

Next
End Sub

Das scheint aber nicht zu funktionieren. Ich bin nicht sicher aber ich
glaube, dass man für "range" keine schleife erstellen kann...

Ich hoffe dass ich Euch mein Problem ausführlich genug geschildert
habe und freue mich auf Antworten von Euch!

Vielen Dank schon im Voraus und viele Grüße

Fabian L.
 

Lesen sie die antworten

#1 Claus Busch
30/08/2008 - 14:00 | Warnen spam
Hallo Fabian,

du hast da einen Syntaxfehler drin.
Probiere es mal so:
With ActiveSheet
For i = 1 To 3
.Cells(i, 12) = WorksheetFunction _
.Large(.Range(.Cells(i, 2), Cells(i, 4)), 2)
Next
End With

oder so:
With ActiveSheet
For i = 1 To 3
.Cells(i, 12) = WorksheetFunction _
.Large(.Cells(i, 2).Resize(1, 4), 2)
Next
End With


Mit freundlichen Grüssen
Claus Busch
Win XP Prof SP2 / Vista Ultimate
Office 2003 SP2 / 2007 Ultimate

Ähnliche fragen