Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1400to1404
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Suchfunktion Berücksichtigung von bis Zahlen

Suchfunktion Berücksichtigung von bis Zahlen
16.01.2015 16:33:02
bis
Hallo,
ich bräuchte eine Suchfunktion.
In den ersten 9 Tabellenblättern habe ich in Spalte "O" Aktennummern stehen.
Das sieht etwa so aus:
Alt. 258
Alt. 189 - 191
Neu. 879 - 882
Altb. 789
Alta. 963
Neu. 698
Alt. 145
Neu. 478 + 479
usw.
Nun sollte die Suche so sein dass ich als Suchbegriff nur die Aktennummer eingebe,
also z.B. 190. Die voranstehenden Buchstaben sollen nicht berücksichtigt werden.
Die Suche sollte dann in der Zelle enden wo halt die 190 steht.
Das Problem ist sicherlich die Akten zu finden wo z.B. von bis angegeben ist (189 - 191)
Hilfreich wäre auch nach erfolgter Suche die Möglichkeit per Schaltfläche weiter zu suchen, oder abbrechen wobei dann die letzte gefundene Zelle sichtbar bleibt.
Wäre das so machbar ?
Ich hoffe ihr könnt mir helfen.
Gruß
Fred

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchfunktion Berücksichtigung von bis Zahlen
16.01.2015 17:31:57
bis
Hallo Fred,
hier erstmal eine Suchroutine für ein Tabellenblatt (Tabelle1), wobe davon ausgegangen wurde, dass der Suchbegriff in Zelle B2 steht.
Option Explicit
Public Sub Suchen()
Dim lZeile      As Long
Dim iPosition   As Integer
Dim sWert       As String
Dim Von         As Long
Dim Bis         As Long
With ThisWorkbook.Worksheets("Tabelle1")
For lZeile = 2 To .Cells(.Rows.Count, 15).End(xlUp).Row
iPosition = InStr(.Range("O" & lZeile).Value, ". ")
sWert = Mid(.Range("O" & lZeile).Value, iPosition + 2)
sWert = Replace(sWert, " ", "")
sWert = Replace(sWert, "+", "-")
If InStr(sWert, "-") > 0 Then
Else
sWert = sWert & "-" & sWert
End If
Von = Val(sWert)
iPosition = InStr(sWert, "-")
Bis = Val(Mid(sWert, iPosition + 1))
Select Case CStr(.Range("B2").Value)
Case Von To Bis
MsgBox "gefunden in Zelle ""O" & lZeile & """"
End Select
Next lZeile
End With
End Sub

Gruß Peter

Anzeige
AW: Suchfunktion Berücksichtigung von bis Zahlen
16.01.2015 17:53:39
bis
Hallo Peter,
das ist ja super.
Habe es bei einen Tabellenblatt ausprobiert.
Nun müsste man das ganze auf die ersten 9 Tabellenblätter ausweiten,
und anstatt die MsgBox "gefunden in Zelle" einfach nur die ganze Zeile aufrufen und markieren.
Das wäre toll.
Ach ja, die Eingabe der Aktennummer sollte dann im Tabellenblatt "Menü" Zelle "K30" erfolgen.
Könntest du da noch was machen ?
Gruß
Fred

AW: Suchfunktion Berücksichtigung von bis Zahlen
16.01.2015 18:27:30
bis
Hallo Fred,
wie Deine 9 Tabelleblätter heißen, musst Du selbst in den Array vBlatt eintragen, die anderen Wünsche sollte ich erfüllt haben.
Gruß Peter

Option Explicit
'   ich bräuchte eine Suchfunktion.
'   In den ersten 9 Tabellenblättern habe ich in Spalte "O" Aktennummern stehen.
'   Das sieht etwa so aus:
'   Alt. 258
'   Alt. 189 - 191
'   Neu. 879 - 882
'   Altb. 789
'   Alta. 963
'   Neu. 698
'   Alt. 145
'   Neu. 478 + 479
'   usw.
'   Nun sollte die Suche so sein dass ich als Suchbegriff nur die Aktennummer eingebe,
'   also z.B. 190. Die voranstehenden Buchstaben sollen nicht berücksichtigt werden.
'   Die Suche sollte dann in der Zelle enden wo halt die 190 steht.
'   Das Problem ist sicherlich die Akten zu finden wo z.B. von bis angegeben ist (189 - 191)
'   Hilfreich wäre auch nach erfolgter Suche die Möglichkeit per Schaltfläche weiter zu suchen,
'   oder abzubrechen wobei dann die letzte gefundene Zelle sichtbar bleibt.
Public Sub Suchen()
Dim sSuchbegriff  As String   ' der Suchbegriff
Dim vBlatt        As Variant  ' die 9 auszuwertenden Tabellenblätter als Array
Dim iBlatt        As Integer  ' der For/Next Schleifen-Index zum Array
Dim lZeile        As Long     ' der For/Next Schleifen-Index für die Spalte O
Dim iPosition     As Integer  ' die Position diverser Schlüsselbegriffe
Dim sWert         As String   ' der Von-Bis Suchbegriff
Dim Von           As Long     ' der Von Suchbegriff
Dim Bis           As Long     ' der Bis Suchbegriff
vBlatt = Array("Tabelle1", "Tabelle2", "Tabelle3") ' usw. - die ersten 9 Tabellenblätter
sSuchbegriff = ThisWorkbook.Worksheets("Menü").Range("K30").Value
For iBlatt = 0 To UBound(vBlatt)
With ThisWorkbook.Worksheets(vBlatt(iBlatt))
'           die Spalte O abarbeiten
For lZeile = 2 To .Cells(.Rows.Count, 15).End(xlUp).Row
'              die Position des Zellinhaltes ". " suchen
iPosition = InStr(.Range("O" & lZeile).Value, ". ")
'               alles was nach dme ". " kommt speichern
sWert = Mid(.Range("O" & lZeile).Value, iPosition + 2)
'               evtl. vorhandene Leerzeichen eliminieren
sWert = Replace(sWert, " ", "")
'               evtl. vorhandene + Zeichen in - Zeichen umwandeln
sWert = Replace(sWert, "+", "-")
'               gibt es kein - Zeichen?
If InStr(sWert, "-") > 0 Then
Else
'                 dann wird eines eingefügt und der alleinstehende Wert dahinter eingefügt
sWert = sWert & "-" & sWert
End If
'              nun wird der erste numerische Wert als Von-Bereich übernommen
Von = Val(sWert)
'              es wird die Position des - Zeichens gesucht
iPosition = InStr(sWert, "-")
'              nun wird der zweite numerische Wert als Bis-Bereich übernommen
Bis = Val(Mid(sWert, iPosition + 1))
'              mit den Von to Bis Werten wird ein Select Case ausgewertet
Select Case sSuchbegriff ' der gesuchte Begriff !!!
Case Von To Bis
'MsgBox "gefunden in Zelle ""O" & lZeile & """", _
64, "   Information für " & Application.UserName
.Range("A" & lZeile & ":Z" & lZeile).Select
End Select
Next lZeile
End With
Next iBlatt
End Sub

Anzeige
AW: Suchfunktion Berücksichtigung von bis Zahlen
16.01.2015 18:33:54
bis
Hallo Peter,
vielen Dank dafür.
Ich werde das morgen ausführlich testen.
Muss nun leider zur Nachtschicht.
Ich melde mich morgen noch mal um zu berichten.
Gruß und Dank
Fred

AW: Suchfunktion Berücksichtigung von bis Zahlen
17.01.2015 10:55:10
bis
Hallo Peter,
so nun habe ich es ausprobiert.
Bei
.Range("A" & lZeile & ":Z" & lZeile).Select
kommt ein Laufzeitfehler 1004.
Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.
Ich habe die gesuchte Aktennummer in die Zelle K12 im Tabellenblatt "Menü Info" eingetragen.
Gruß
Fred

AW: Suchfunktion Berücksichtigung von bis Zahlen
17.01.2015 15:05:03
bis
Hallo Fred,
dann versuche die beigefügte Variante
Public Sub Suchen()
Dim sSuchbegriff  As String   ' der Suchbegriff
Dim vBlatt        As Variant  ' die 9 auszuwertenden Tabellenblätter als Array
Dim iBlatt        As Integer  ' der For/Next Schleifen-Index zum Array
Dim lZeile        As Long     ' der For/Next Schleifen-Index für die Spalte O
Dim sZeichen      As String   ' die numerischen Wert und das Minuszeichen
Dim iPosition     As Integer  ' die Position diverser Schlüsselbegriffe
Dim sWert         As String   ' der Von-Bis Suchbegriff komplett
Dim sInhalt       As String   ' der Von-Bis Begriff - nur Zahelen und ggf. Minuszeichen
Dim Von           As Long     ' der Von Suchbegriff
Dim Bis           As Long     ' der Bis Suchbegriff
vBlatt = Array("Tabelle1", "Tabelle2", "Tabelle3") ' usw. - die ersten 9 Tabellenblätter
sSuchbegriff = ThisWorkbook.Worksheets("Menü Info").Range("K12").Value
For iBlatt = 0 To UBound(vBlatt)
With ThisWorkbook.Worksheets(vBlatt(iBlatt))
.Activate
'           die Spalte O abarbeiten
For lZeile = 2 To .Cells(.Rows.Count, 15).End(xlUp).Row
'               evtl. vorhandene Leerzeichen eliminieren
sWert = Replace(.Range("O" & lZeile).Value, " ", "")
'               evtl. vorhandene + Zeichen in - Zeichen umwandeln
sWert = Replace(sWert, "+", "-")
sInhalt = ""
'              nur die Zahlen und das Minuszeichen übernehmen
For iPosition = 1 To Len(sWert)
sZeichen = Mid(sWert, iPosition, 1)
If IsNumeric(sZeichen) Or sZeichen = "-" Then
sInhalt = sInhalt & sZeichen
End If
Next iPosition
'               gibt es kein - Zeichen?
If InStr(sInhalt, "-") > 0 Then
Else
'                 dann wird eines eingefügt und der alleinstehende Wert dahinter eingefügt
sInhalt = sInhalt & "-" & sInhalt
End If
'.Range("P" & lZeile).Value = sInhalt
'              nun wird der erste numerische Wert als Von-Bereich übernommen
Von = Val(sInhalt)
'              es wird die Position des - Zeichens gesucht
iPosition = InStr(sInhalt, "-")
'              nun wird der zweite numerische Wert als Bis-Bereich übernommen
Bis = Val(Mid(sInhalt, iPosition + 1))
'              mit den Von to Bis Werten wird ein Select Case ausgewertet
Select Case sSuchbegriff ' der gesuchte Begriff !!!
Case Von To Bis
'MsgBox "gefunden in Zelle ""O" & lZeile & """", _
64, "   Information für " & Application.UserName
.Range("A" & lZeile & ":Z" & lZeile).Select
Exit Sub ' wenn gefunden, das Makro verlassen
End Select
Next lZeile
End With
Next iBlatt
End Sub

Gruß Peter

Anzeige
AW: Suchfunktion Berücksichtigung von bis Zahlen
17.01.2015 16:17:55
bis
Hallo Peter,
danke das du dich weiterhin bemühst mir zu helfen.
Nun kommt Laufzeitfehler 9, Index außerhalb des gültigen Bereiches bei dieses Zeile
sSuchbegriff = ThisWorkbook.Worksheets("Menü Info").Range("K12").Value
Gruß
Fred

AW: Suchfunktion Berücksichtigung von bis Zahlen
17.01.2015 17:11:31
bis
Hallo Peter,
alles zurück !!!!
Kein Fehler !
Ich hatte einen Fehler eingebaut. Und zwar hatte ich das Tabellenblatt "Menü Info" mit zwei
Leerzeichen geschrieben.
Nun klappt alles super.
Vielen Dank und noch ein schönes Wochenende
Gruß
Fred

AW: Suchfunktion Berücksichtigung von bis Zahlen
17.01.2015 20:37:14
bis
Hallo Fred,
dann heißt das Tabellenblatt bei Dir offen sichtlich nicht so, wie bei mir "Menü Info"
passe den Namen an, dann sollte das Problem behoben sein.
Gruß Peter

Anzeige
AW: Suchfunktion Berücksichtigung von bis Zahlen
17.01.2015 11:10:26
bis
Hallo Peter,
ist noch ein Problem aufgetaucht !
Es werden ja die Daten alles was hinter dem "." kommt gespeichert.
Manche Leute schreiben bei uns den "." nicht mit, oder vergessen ihn. (Alt 2015, Alt. 2015, Altn 2015)
Dann wird das natürlich nichts mit der Suche.
Könnte man im Code nicht anweisen das nur die reinen Zahlen in den Zellen abgespeichert werden ?
Gruß
Fred

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige