ich habe folgendes Problem:
Aus einer Liste mit ca. 4000 Zeilen, möchte ich den Maximalwert des jeweiligen Nummernkreises zurückgegeben haben, also z.B.:
1001
1003
1004
2004
2005
2006
2007
3005
3006
3007
3009
3010
ist die Werteliste.
Daraus möchte ich den Maximalwert für den 1000er Bereich haben, also 1004=maxwert1,
den Maximalwert für den 2000er Bereich habe, also 2007=maxwert2, usw.
Wer kann mir da im Bereich Makroprogrammierung helfen?
Danke im Voraus,
Jörg
> Daraus möchte ich den Maximalwert für den 1000er Bereich haben, also
1004=maxwert1,
> den Maximalwert für den 2000er Bereich habe, also 2007=maxwert2, usw.
würde ich statt Makro mit Matrix-Funktion machen,
z.B. für Nummernkreis bis 2999:
=MAX(WENN(($A$1:$A$4000)<3000;$A$1:$A$4000;0))
(Eingabe mit Strg+Umschalt+Enter abschließen, es werden geschweifte Klammern
angezeigt)
MfG
Franz-Josef
Franz-Josef Raabe schrieb:
> Danke, aber ich benötige jeden dieser Maximalwerte, um sie im gleichen
Makro weiterzubearbeiten! Brauche sie nur, um sie einmalig in einer
> Schleife nutzen zu können! Die Schleife soll bis zu diesem Wert zählen.
>
[...]
Hallo Jörg,
eine andere Möglichkeit ist die nutzung von drei Hilfszellen.
Wenn deine Werteliste zum Beispiel in A1 bis A4000 steht könnte in den
Zellen
B1 bis B3 folgendes stehen:
=sverweis(1999;A1:A4000;1) für maxwert1
=sverweis(2999;A1:A4000;1) für maxwert2
=sverweis(4000;A1:A4000;1) für maxwert3
(Sollte allerdings kein Wert im entsprechenden Bereich vorhanden sein,
wird der max Wert des nächst kleineren Bereichs ausgegeben.)
Den Inhalt dieser Hilfszellen kannst du dann im Makro auslesen und
weiterverarbeiten.
mfg
Dietmar
--
DietmarS...@t-online.de
> Danke, aber ich benötige jeden dieser Maximalwerte, um sie im gleichen
Makro weiterzubearbeiten!
eingeschränktes Maximum mit VBA geht im Prinzip so:
Sub h()
Dim max As Long, wert As Long, tausender As Long
Dim zelle As Range
For tausender = 1000 To 9000
'
max = -1
For Each zelle In Range("$A$1:$A$4000").Cells
wert = zelle.Value
If wert >= tausender and wert <= tausender+999 _
And wert > max Then max = wert
Next zelle
if max < 0 then
msgbox "Keinen Wert im " & tausender & "-er Bereich"
else
msgbox "Maximalwert im " & tausender & "-er Bereich ist " & max
endif
Next tausender
End Sub
Vielleicht kannst Du ja davon was gebrauchen
MfG
Franz-Josef
>Vielleicht kannst Du ja davon was gebrauchen
Vielleicht in der Art? Danke für die Anregung For Each... :-)
Zuerst hatte ich mit For i =... experimentiert; ist bei diesem
großen Bereich ätzend langsam.
Sub blockmax()
max1 = 1000
max2 = 2000
max3 = 3000
bereich = "a1:a4000"
For Each zelle In Range(bereich)
wert = zelle.Value
If wert >= 1000 And wert < 2000 _
And wert > max1 Then max1 = wert
If wert >= 2000 And wert < 3000 _
And wert > max2 Then max2 = wert
If wert >= 3000 And wert < 4000 _
And wert > max3 Then max3 = wert
Next zelle
Range("b1").Value = max1
Range("b2").Value = max2
Range("b3").Value = max3
End Sub
Gruß, Manfred
"Manfred Grieble" <gri...@dialup.nacamar.de> schrieb im Newsbeitrag
news:92d676$6kpor$2...@ID-13535.news.dfncis.de...