In Spalte A die nächstgrößere Zahl finden
#1
Hallo,

mir hatte gestern Stefan mit folgendem Programmierbefehl sehr geholfen:

Dim i%
i = ActiveCell.Value + 1
Range("A:A").Find(i, lookat:=xlWhole).Activate

In der Spalte A wird dabei also die Adresse gefunden, in der die um eins größere (oder auch um eins kleinere, dann natürlich mit -1 ) Zahl, als die in der aktiven Zelle steht.
Doch für mich taucht jetzt das nächste Problem dabei auf. Wieder habe ich in der Spalte A aufsteigende Zahlen. Nur muss sich dabei ja nicht zwangsläufig der Wert der einzelnen Zahlen jeweils um eins erhöhen.
Der Abstand von einer Zahl zur nächst höheren Zahl könnte ja auch 2, 5, oder 10000 sein.

Meine Frage also: Wie finde ich die nächstgrößere Zahl?
(ohne eine Schleife einzusetzen, dass bekomme ich noch selbst hin.)
Top
#2
Hallo lupy,

Deine Fragestellung im Betreff würde ich mit einer Formel lösen. Angenommen Deine "Basis"Zahl steht in E1 dann einfach:

=KGRÖSSTE(A1:A99;ZÄHLENWENN(A1:A99;">"&E1))

Gibt es keine größere Zahl in dem ausgewiesenen Bereich gibt es eine Fehlermeldung.
Gruß Werner
.. , - ...
Top
#3
Hallo Lupy,

vielleicht so:
Sub abc()
 Dim i As Long
 i = Evaluate("=MIN(IF(A:A>" & ActiveCell.Value & ",A:A,MAX(A:A)))")
 Range("A:A").Find(i, lookat:=xlWhole).Activate
End Sub
Gruß Uwe
Top
#4
PHP-Code:
=match(12,A1:A2000;1
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#5
E2: =INDEX(A:A;VERGLEICH(E1;A:A)+1)

da E1 den Exakt-Vorgänger aus A:A enthält und A:A up-sortiert ist. In VBA das Gleiche mit Application.Match.
Top
#6
Danke.

@SNB
du scheinst hier wieder eine superkurze Lösung zu haben. Leider bekomme ich deinen Lösungsvorschlag (mangels Kenntnissen) nicht in mein VBA Programm eingebaut.
Bitte ergänze dies, wenn möglich. Wäre daran doch sehr interessiert.
Top
#7
Zeig mal diene Beispieldatei.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#8
@Snb
Hallo,

habe mich nochmal selbst damit beschäftigt eine möglichst geniale Lösung zu finden. Leider vergeblich.
Die Formellösung von Uwe war bislang die kürzeste LSG. Leider ist dieser Ansatz aber recht langsam.
Dein Vorschlag mit Application.match zu suchen ist auch eine interessante Alternative.

Vielleicht fällt dir ja noch eine gute Lösung ein.


Angehängte Dateien
.xlsm   Nächstgrößere, nächstkleinere Zahl.xlsm (Größe: 9,24 KB / Downloads: 5)
Top
#9
Hi,

einfache Formellösung:

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABC
11  
22  
3 ZeileZahl
45A68
5 A6 
68  
7   
8   
9   
1010  

ZelleFormel
B4="A"&VERGLEICH(MIN(INDEX(A:A;ZEILE()+1):$A$999);INDEX(A:A;ZEILE()+1):$A$999;0)+ZEILE()
C4=MIN(INDEX(A:A;ZEILE()+1):$A$999)
B5="A"&VERGLEICH(C4;A:A;0)
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Daraus kannst Du ja ein Makro basteln.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#10
In Excel in B4:


PHP-Code:
=IFERROR(ADDRESS(MATCH(SMALL($A$1:$A$100;RANK(A4;$A$1:$A$100;1)+1);$A$1:$A$100;0);1);""

In VBA als UDF

Code:
Function F_snb(y)
   F_snb = ""
   If y <> "" Then F_snb = Cells(Application.Match(Application.Small(Range("A1:A100"), Application.Rank(y, [A1:A100], 1) + 1), [A1:A100], 0), 1).Address
End Function
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste