![]() |
|
|
|
#1 |
![]() MOF User |
Guten Morgen,
ich verwende Office XP Pro. In einer Spalte habe ich positive und negative Zahlen. Von diesen möchte ich via VBA den kleinsten und den grössten Wert der letzten 5, 10 und 15 auslesen, um deren Differenzen zu bilden. Dabei zähle ich rückwärts ab der letzten Zeile mit Wert. Um der Variablen den letzten Wert zu löschen, initialisiere ich die Variable mit dem Wert der ersten neuen Zeile (also der letzte Eintrag). mit Code: zeile = 18 a = Cells(zeile, 4).Value b = Cells(zeile, 4).Value For i = 1 To 10 If Cells(zeile, 4).Value < Cells(zeile - 1, 4).Value And a > Cells(zeile, 4).Value Then a = Cells(zeile, 4).Value End If If Cells(zeile, 4).Value > Cells(zeile - 1, 4).Value And b < Cells(zeile, 4).Value Then b = Cells(zeile, 4).Value End If Cells(zeile, 9).Value = a Cells(zeile, 10).Value = b zeile = zeile - 1 Next i bekomme ich aber keine korrekten Werte im höchsten bereich angezeigt. In Zeile 17 müsste eine -1 und in Zeile 13 sowie 12 eine 2 ausgegeben werden. Es wird aber in 17 -2 und 13 und 12 die 0 ausgegeben. Wie kann man das beheben? Schon mal im Voraus vielen Dank für die Hilfe. |
|
|
|
|
|
#2 |
|
|
Moinm papi,
versuch mal folgendes Vorgehen: Code: Dim lngCounter As Long
lngCounter = 18
a = Cells(lngCounter, 4).Value
b = Cells(lngCounter, 4).Value
For lngCounter = 18 To 9 Step -1
If Cells(lngCounter, 4).Value < Cells(lngCounter - 1, 4).Value Then
a = WorksheetFunction.Min(a, Cells(lngCounter, 4).Value)
End If
If Cells(lngCounter, 4).Value < Cells(lngCounter - 1, 4).Value Then
b = WorksheetFunction.Max(b, Cells(lngCounter, 4).Value)
End If
Cells(lngCounter, 9).Value = a
Cells(lngCounter, 10).Value = b
Next lngCounter
__________________ cujinx per 31.12.2010 ausgeschiedener User und ehemaliger Excel- Folgende Tools werden zur optischen Aufbereitung eingesetzt: Code Converter; Excel Jeanie Html Für die allgemeinen Hinweise: Netiquette; Fragen und Antworten in Foren eingesetzte Betriebssysteme: XP Home, XP Media Center Edition, XP Professional, Vista Ultimate, 7/Seven verwendete Programme: Excel97 SR-2, Office 2000 SP-3, Office2002/XP SP-3, Office 2003 Professional SP-3, Office 2007 Home & Student SP-3, Office 2007 Professional SP-3 |
|
|
|
|
|
#3 |
|
Threadstarter
![]() MOF User |
vielen Dank, werde es dann noch ausprobieren.
ich habe mir dann heute auf einem anderen Weg abhilfe geschaffen. Ich habe aus der Sortierfunction einfach die beiden Werte herausgenommen Code: '5
Range("s5:s50").Clear
Cells(9, 18).Value = zgj
z = zg
ze2 = 21
If zgj >= 1 Then
For i = 1 To 5
Cells(ze2, 19).Value = Cells(z, spg).Value
z = z - 1
ze2 = ze2 + 1
Next i
Range("s21:s26").Sort Key1:=Range("s21"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Cells(14, 19).Value = Cells(21, 19).Value
Cells(15, 19).Value = Cells(25, 19).Value
Wo kann ich was dazu nachlesen? Key1, Range, Order1, xlAscending... Insbesondere dabei tauchte die Frage auf, wie kann ich auf die Ergebnisse direkt(er) zugreifen, ohne die Reihenfolge der Ursprungsdaten zu ändern? Ich habe mir hier halt so geholfen, indem ich die entsprechenden Werte in eine Hilfszeile kopiert habe. vielen Dank nochmals |
|
|
|
|
|
#4 |
|
|
Moin, papi,
mir fiel dann auch auf dem Spaziergang ein, dass man auf den Zellvergleich bei Nutzung der beiden Tabellenfunktionen verzichten könnte... Zur weiteren Frage: bei einer benutzerdefinierten Installation wird der Objektkatalog mitinstalliert, in dem sich dann Folgendes zur Sort-Methode finden lässt: Zitat: von VBA-Hilfe Excel97 Sortiert eine Pivot-Tabelle, einen Bereich bzw. den aktuellen Bereich (wenn nur eine Zelle angegeben wird). durch Tabellenfunktionen (Max oder Large)... __________________ cujinx per 31.12.2010 ausgeschiedener User und ehemaliger Excel- Folgende Tools werden zur optischen Aufbereitung eingesetzt: Code Converter; Excel Jeanie Html Für die allgemeinen Hinweise: Netiquette; Fragen und Antworten in Foren eingesetzte Betriebssysteme: XP Home, XP Media Center Edition, XP Professional, Vista Ultimate, 7/Seven verwendete Programme: Excel97 SR-2, Office 2000 SP-3, Office2002/XP SP-3, Office 2003 Professional SP-3, Office 2007 Home & Student SP-3, Office 2007 Professional SP-3 |
|
|
|
|
|
#5 |
|
Threadstarter
![]() MOF User |
moin jinx,
vielen dank, habe wieder einiges dazugelernt. ich habe auch benutzerdefiniert die komplette installation gemacht. nur habe ich halt nur nach sort... gesucht. da wird leider die sort-methode nicht mit aufgelistet. und damit wird auch verständlich warum googeln auch nichts brachte. ein schönes wochenende wünsche ich. papi |
|
|
|
|
|
#6 |
|
Threadstarter
![]() MOF User |
habe die erste antwort gerade mal durchprobiert.
in der zeile, wo die variable b in der schleife überprüft wird, muss natürlich das " < " durch ein " > " ersetzt werden. wollte es nur der richtigkeit halber hier reinstellen, falls jemand anderes den code auch verwenden möchte. |
|
|
|
|
|
#7 |
|
|
Moin, papi,
Code: Dim lngCounter As Long lngCounter = 18 a = Cells(lngCounter, 4).Value b = Cells(lngCounter, 4).Value For lngCounter = 18 To 9 Step -1 a = WorksheetFunction.Min(a, Cells(lngCounter, 4).Value) b = WorksheetFunction.Max(b, Cells(lngCounter, 4).Value) Cells(lngCounter, 9).Value = a Cells(lngCounter, 10).Value = b Next lngCounter __________________ cujinx per 31.12.2010 ausgeschiedener User und ehemaliger Excel- Folgende Tools werden zur optischen Aufbereitung eingesetzt: Code Converter; Excel Jeanie Html Für die allgemeinen Hinweise: Netiquette; Fragen und Antworten in Foren eingesetzte Betriebssysteme: XP Home, XP Media Center Edition, XP Professional, Vista Ultimate, 7/Seven verwendete Programme: Excel97 SR-2, Office 2000 SP-3, Office2002/XP SP-3, Office 2003 Professional SP-3, Office 2007 Home & Student SP-3, Office 2007 Professional SP-3 |
|
|
|