Excel suchen per Makro
ich habe eine Gebührentabelle. In Spalte A stehen die Werte. z.Bsp. 6000. In D1 gebe ich den Wert ein, der gesucht werden soll, z.B. 5900. Die werden natürlich nicht gefunden. Schön wäre es allerdings, wenn das Makro den Wert 6000 findet. In der Spalte B steht dann die Gebühr,
such = Range("D1")
Range("A6").Select
On Error Resume Next
Cells.Find(What:=such, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Cells.FindNext(After:=ActiveCell).Activate
such = Range("D1")
Range("A6").Select
On Error Resume Next
Cells.Find(What:=such, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Cells.FindNext(After:=ActiveCell).Activate
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 222871
Url: https://administrator.de/contentid/222871
Ausgedruckt am: 05.11.2024 um 02:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo anchle,
wozu ein Makro wenn du es auch mit einer Matrix-Formel erledigen kannst:
Dies Formel gibst du in einer Zelle deiner Wahl ein, diese Zeigt dann zu deinem eingetragenen Wert in D1 den dazu passenden Wert aus Spalte B passend zu den Einträgen in A6:A65535 an. Wenn der Wert nicht existiert wird der nächst größere Wert genommen.
BITTE BEACHTEN: Dies ist eine Matrix-Formel. Man muss die Formel mit STRG-SHIFT-ENTER abschließen anstatt nur mit einem "einfachen" Enter. Eine Matrixformel erkennt man in Excel daran das in der Formelzeile die Formel mit geschweiften Klammern eingefasst wird.
Wenn doch keine Formel in Frage kommt, hier auch eine Variante per Makro:
Hierbei steht in D1 dein Suchwert welches in A6:A65535 gesucht wird, und bei Übereinstimmung bzw. nächst größerem, der Wert in Spalte B in Zelle E1 eingetragen wird. Passt der Wert nicht ganz, wird in D1 automatisch der dazu passende Wert eingetragen. Das verwendete Sheet ist noch in Zeile 3 anzupassen.
Falls noch etwas unklar sein sollte, hier ein Demo-Excel-File zum Download.
Grüße Uwe
wozu ein Makro wenn du es auch mit einer Matrix-Formel erledigen kannst:
=SVERWEIS(INDEX($A$6:$A$65535;VERGLEICH(WAHR;$A$6:$A$65535>=$D$1;0));$A6:$B$65535;2;WAHR)
BITTE BEACHTEN: Dies ist eine Matrix-Formel. Man muss die Formel mit STRG-SHIFT-ENTER abschließen anstatt nur mit einem "einfachen" Enter. Eine Matrixformel erkennt man in Excel daran das in der Formelzeile die Formel mit geschweiften Klammern eingefasst wird.
Wenn doch keine Formel in Frage kommt, hier auch eine Variante per Makro:
Hierbei steht in D1 dein Suchwert welches in A6:A65535 gesucht wird, und bei Übereinstimmung bzw. nächst größerem, der Wert in Spalte B in Zelle E1 eingetragen wird. Passt der Wert nicht ganz, wird in D1 automatisch der dazu passende Wert eingetragen. Das verwendete Sheet ist noch in Zeile 3 anzupassen.
Sub Search()
Dim rngSuchwert As Range, rngTarget As Range, rngSearch As Range, sheet As Worksheet
Set sheet = Worksheets(1)
Set rngSuchwert = sheet.Range("D1")
Set rngTarget = sheet.Range("E1")
For i = 6 To 65535
If sheet.Cells(i, 1).Value >= rngSuchwert.Value Then
rngTarget.Value = sheet.Cells(i, 2).Value
rngSuchwert.Value = sheet.Cells(i, 1).Value
Exit For
End If
Next
End Sub
Grüße Uwe