Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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.)
Antworten 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
.. , - ...
Antworten 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
Antworten Top
#4
PHP-Code:
=match(12,A1:A2000;1
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten 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.
Antworten 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.
Antworten Top
#7
Zeig mal diene Beispieldatei.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten 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)
Antworten 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.
Antworten 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
Antworten Top


Gehe zu:


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