Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Maximalwert in VBA

124 views
Skip to first unread message

Jörg Meyer

unread,
Dec 26, 2000, 10:03:43 AM12/26/00
to
Hallo,

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

Franz-Josef Raabe

unread,
Dec 26, 2000, 11:16:54 AM12/26/00
to
Hallo 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


Jörg Meyer

unread,
Dec 26, 2000, 11:37:18 AM12/26/00
to
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.

Franz-Josef Raabe schrieb:

Dietmar Schneider

unread,
Dec 26, 2000, 2:58:55 PM12/26/00
to

----- Original Message -----
From: "Jörg Meyer" <hsv-sc...@t-online.de>
Newsgroups: microsoft.public.de.excel
Sent: Tuesday, December 26, 2000 5:37 PM
Subject: Re: Maximalwert in VBA


> 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

Franz-Josef Raabe

unread,
Dec 27, 2000, 2:22:37 AM12/27/00
to
Hallo Jörg,

> 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


Manfred Grieble

unread,
Dec 27, 2000, 11:39:51 AM12/27/00
to
Franz-Josef Raabe schrieb in Nachricht ...

>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


Ullrich Schwarz

unread,
Dec 27, 2000, 3:54:15 PM12/27/00
to
Hallo Manfred,
wenn Dir die For-Each-Schleife zu langsam ist: schreibe per vba die von
Franz-Josef Raabe vorgeschlagene Matrixformel in eine "temporären" Zelle und
lese den Wert aus. Am Schluß die Zelle wieder leeren. Nicht schön, aber
wirkungsvoll.
MfG Ullrich


"Manfred Grieble" <gri...@dialup.nacamar.de> schrieb im Newsbeitrag
news:92d676$6kpor$2...@ID-13535.news.dfncis.de...

0 new messages